次の方法で共有


WPUQueryBlockingCallback 関数 (ws2spi.h)

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

構文

int WPUQueryBlockingCallback(
  [in]  DWORD              dwCatalogEntryId,
  [out] LPBLOCKINGCALLBACK *lplpfnCallback,
  [out] PDWORD_PTR         lpdwContext,
  [out] LPINT              lpErrno
);

パラメーター

[in] dwCatalogEntryId

呼び出し元サービス プロバイダーを識別する記述子。

[out] lplpfnCallback

ブロッキング コールバック関数を受け取るポインター。

[out] lpdwContext

サービス プロバイダーがブロッキング コールバックに渡す必要があるコンテキスト値を受け取るポインター。

[out] lpErrno

エラー コードへのポインター。

戻り値

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

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

注釈

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

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

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

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

サービス プロバイダーがブロック操作の完了を待機し続ける場合、ブロッキング コールバックは TRUE を 返します。 ブロック操作が WSPCancelBlockingCall で取り消された場合、FALSE が返されます。

アドレスの欠落しているコンポーネントは、可能であれば既定で妥当な値になります。 たとえば、不足しているポート番号は既定で 0 になります。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー ws2spi.h

こちらもご覧ください

WSPCancelBlockingCall