IIS6用に記述されたISAPIフィルタがあります。 IIS7のラッパーを作成してIIS6フィルターをラップする必要があります。私はC#でHTTPモジュールを作成し、アンマネージドdllメソッドをPinvokeする予定です。ISAPI関連のメソッドと構造体をC#に変換する方法
私は
DWORD WINAPI HttpFilterProc(
PHTTP_FILTER_CONTEXT pfc,
DWORD notificationType,
LPVOID pvNotification
);
typedef struct _HTTP_FILTER_CONTEXT HTTP_FILTER_CONTEXT {
DWORD cbSize;
DWORD Revision;
PVOID ServerContext;
DWORD ulReserved;
BOOL fIsSecurePort;
PVOID pFilterContext;
BOOL GetServerVariable;
BOOL AddResponseHeaders;
BOOL WriteClient;
VOID * AllocMem;
BOOL ServerSupportFunction;
} HTTP_FILTER_CONTEXT, * PHTTP_FILTER_CONTEXT;
、次のコードのC#の表現を必要とする私は、CodePlexのからのPInvokeアシスタントを使用してみましたが、私はそれを動作させることができないのです。 これまで誰もこのようなことをしていませんか? 誰でも上記の解決法を提供できますか?
訂正:ネイティブコードは、コンテキストstruct
へのポインタを渡され
[DllImport(@"XyzISAPI.dll")]
public static extern uint HttpFilterProc(
ref HttpFilterContext pfc,
uint notificationType,
IntPtr pvNotification
);
とによって構造体を渡す:正しい構造では、次の使用する必要があなたの答えのコードに
ありがとうございました。これは、デバッグ時にPInvokeStackImbalance例外を解決しました。しかし、私はまだpvNotificationがゼロとして返されている。私は他の詳細を確認し、ここで更新します。 – GorillaCoder
私はあなたの答えを投票することができません。 – GorillaCoder
'' IntPtr.Zero'は 'pvNotification'パラメータに何も渡されないときに渡されます。あなたは投票に値するほどの評判はありませんが、あなたはそれを受け入れることができます。 –