IIS:在 ISAPI 筛选器上调用 GetProcAddress 失败

IIS: Calling GetProcAddress on ISAPI filter failed

本文关键字:调用 GetProcAddress 失败 筛选 ISAPI IIS      更新时间:2023-10-16

我正在尝试编写一个非常简单的ISAPI过滤器来调试另一个问题。IIS 返回错误代码0x8007007fISAPI 筛选器"此处的 dll"上的调用 GetProcAddress 失败

我在Windows 7和IIS 7.5上的Visual Studio 2012中使用C++没有MFC。

下面是一段代码。 调试时,它似乎不会调用 HttpFilterProc。我手动将 def 文件添加到项目中,但我不知道它是否真的被使用。

对原因有什么想法吗?

DWORD WINAPI __stdcall HttpFilterProc(HTTP_FILTER_CONTEXT *pfc, DWORD NotificationType, VOID *pvData)
{
   switch (NotificationType)
   {
   case SF_NOTIFY_SEND_RESPONSE :
         return DoSendResponse(pfc, (HTTP_FILTER_SEND_RESPONSE *) pvData);
   default :
         break;
   }
   return SF_STATUS_REQ_NEXT_NOTIFICATION;
}

DWORD DoSendResponse(HTTP_FILTER_CONTEXT * pfc,HTTP_FILTER_SEND_RESPONSE * pResponse)
{
   BOOL fServer = TRUE;
   DWORD dwServerError;
   fServer = pResponse->SetHeader(pfc, "UMFilter:", "Enabled");
   if ( !fServer )
   {
         dwServerError = GetLastError();
         pfc->pFilterContext = (LPVOID)(DWORD64)pResponse->HttpStatus;
   }
   return SF_STATUS_REQ_NEXT_NOTIFICATION;
}

解决方案是将模块定义文件显式添加到VS2012中的项目属性->链接器->输入属性页面中。

链接器未选取我添加的文件。