Win32 API 日本語リファレンス
ホーム › Networking.WinSock › LPWPUQUERYBLOCKINGCALLBACK

LPWPUQUERYBLOCKINGCALLBACK

コールバック

シグネチャ

INT LPWPUQUERYBLOCKINGCALLBACK(
    DWORD dwCatalogEntryId,
    LPBLOCKINGCALLBACK* lplpfnCallback,
    UINT_PTR* lpdwContext,
    INT* lpErrno
);

パラメーター

フィールド型説明
dwCatalogEntryIdDWORD呼び出し元のサービスプロバイダーを識別するディスクリプターです。
lplpfnCallbackLPBLOCKINGCALLBACK*ブロッキングコールバック関数を受け取るポインターです。
lpdwContextUINT_PTR*サービスプロバイダーがブロッキングコールバックに渡す必要があるコンテキスト値を受け取るポインターです。
lpErrnoINT*エラーコードへのポインターです。

公式ドキュメント

WPUQueryBlockingCallback 関数は、ブロッキング操作の処理中にサービスプロバイダーが定期的に呼び出すべきコールバック関数へのポインターを返します。

戻り値

エラーが発生しない場合、 WPUQueryBlockingCallback は 0 を返し、ブロッキングコールバック関数へのポインターを lpfnCallback に、関連するコンテキスト値を lpdwContext に格納します。それ以外の場合は SOCKET_ERROR を返し、具体的なエラーコードは lpErrno で取得できます。

エラーコード 意味
WSAEFAULT
lpfnCallback パラメーターまたは lpdwContext パラメーターが、プロセスのアドレス空間の有効な部分ではありません。
WSAEINVAL
dwCatalogEntryId パラメーターが無効です。

解説(Remarks)

WPUQueryBlockingCallback 関数は、ブロッキング操作の間に定期的に呼び出されるコールバック関数へのポインターを lpfnCallback で返します。また、ブロッキングコールバックに渡すためのコンテキスト値を lpdwContext で返します。

Windows では、この関数は lpfnCallback に null を返すことがあります。これは、ユーザー定義のブロッキングフックがインストールされていないことを示します。この場合、サービスプロバイダーはブロッキングを実装するために Windows ネイティブの同期オブジェクトを使用してください。

LPBLOCKINGCALLBACK は次のように定義されています。

typedef BOOL ( CALLBACK FAR * LPBLOCKINGCALLBACK )( DWORD dwContext );

ブロッキングコールバックは、サービスプロバイダーがブロッキング操作の完了を引き続き待機する場合に TRUE を返します。ブロッキング操作が WSPCancelBlockingCall によってキャンセルされた場合は FALSE を返します。

アドレスに指定されていない要素がある場合は、可能であれば妥当な既定値が使用されます。たとえば、ポート番号が指定されていない場合は 0 が既定値になります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)