SIO_QUERY_RSS_PROCESSOR_INFO コントロール コード

説明

SIO_QUERY_RSS_PROCESSOR_INFOコントロール コードは、ソケットと RSS プロセッサ コアと NUMA ノードの間の関連付けを照会します。

この操作を実行するには、次のパラメーターを指定して WSAIoctl または WSPIoctl 関数を呼び出します。

int WSAIoctl(
  (socket) s,             // descriptor identifying a socket
  SIO_QUERY_RSS_PROCESSOR_INFO, // dwIoControlCode
  NULL,                         // lpvInBuffer
  0,                            // cbInBuffer
  (LPVOID) lpvOutBuffer,         // output buffer
  (DWORD) cbOutBuffer,       // size of output buffer
  (LPDWORD) lpcbBytesReturned,    // number of bytes returned
  (LPWSAOVERLAPPED) lpOverlapped,   // OVERLAPPED structure
  (LPWSAOVERLAPPED_COMPLETION_ROUTINE) lpCompletionRoutine,  // completion routine
);
int WSPIoctl(
  (socket) s,             // descriptor identifying a socket
  SIO_QUERY_RSS_PROCESSOR_INFO, // dwIoControlCode
  NULL,                         // lpvInBuffer
  0,                            // cbInBuffer
  (LPVOID) lpvOutBuffer,         // output buffer
  (DWORD) cbOutBuffer,       // size of output buffer
  (LPDWORD) lpcbBytesReturned,    // number of bytes returned
  (LPWSAOVERLAPPED) lpOverlapped,   // OVERLAPPED structure
  (LPWSAOVERLAPPED_COMPLETION_ROUTINE) lpCompletionRoutine,  // completion routine
  (LPWSATHREADID) lpThreadId,   // a WSATHREADID structure
  (LPINT) lpErrno   // a pointer to the error code.
);

パラメーター

s

ソケットを識別する記述子。

dwIoControlCode

操作の制御コード。 この操作 にはSIO_QUERY_RSS_PROCESSOR_INFO を使用します。

lpvInBuffer

入力バッファーへのポインター。 このパラメーターは、この操作では使用されません。

cbInBuffer

入力バッファーのサイズ (バイト単位)。 このパラメーターは、この操作では使用されません。

lpvOutBuffer

出力バッファーへのポインター。 lpOverlapped パラメーターと lpCompletionRoutine パラメーターが NULL の場合、このパラメーターは SOCKET_PROCESSOR_AFFINITY 構造体を指す必要があります。

cbOutBuffer

出力バッファーのサイズ (バイト単位)。 このパラメーターは、少なくとも SOCKET_PROCESSOR_AFFINITY 構造体のサイズである必要があります。

lpcbBytesReturned

出力バッファーに格納されているデータのサイズ (バイト単位) を受け取る変数へのポインター。

出力バッファーが小さすぎる場合、呼び出しは失敗し、 WSAGetLastError はWSAEINVAL を返し、 lpcbBytesReturned パラメーターはDWORD 値 0 を指します。

lpOverlappedNULL の場合、正常な呼び出しで返される lpcbBytesReturned パラメーターが指す DWORD 値を 0 にすることはできません。

重複するソケットに 対して lpOverlapped パラメーターが NULL でない場合、すぐには完了できない操作が開始され、完了は後で示されます。 返される lpcbBytesReturned パラメーターが指す DWORD 値は、重複する操作が完了するまで格納されているデータのサイズを決定できないため、0 になる可能性があります。 最終的な完了状態は、操作が完了したときに適切な完了メソッドが通知されたときに取得できます。

lpvOverlapped

WSAOVERLAPPED 構造体へのポインター。

重複する属性なしでソケット s が作成された場合、 lpOverlapped パラメーターは無視されます。

重複した属性を使用して s を開き、 lpOverlapped パラメーターが NULL でない場合、操作は重複 (非同期) 操作として実行されます。 この場合、 lpOverlapped パラメーターは有効な WSAOVERLAPPED 構造体を指している必要があります。

重複する操作の場合、 WSAIoctl または WSPIoctl 関数は直ちに戻り、操作が完了すると適切な完了メソッドが通知されます。 それ以外の場合、関数は操作が完了するかエラーが発生するまで戻りません。

lpCompletionRoutine

種類: _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE

操作が完了したときに呼び出される完了ルーチンへのポインター (重複していないソケットの場合は無視されます)。

lpThreadId

WPUQueueApc への後続の呼び出しでプロバイダーによって使用される WSATHREADID 構造体へのポインター。 プロバイダーは、WPUQueueApc 関数が戻るまで、参照先の WSATHREADID 構造体 (同じへのポインターではありません) を格納する必要があります。

メモ このパラメーターは 、WSPIoctl 関数にのみ適用されます。

lpErrno

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

メモ このパラメーターは 、WSPIoctl 関数にのみ適用されます。

戻り値

操作が正常に完了すると、 WSAIoctl または WSPIoctl 関数は 0 を返します。

操作が失敗した場合、または保留中の場合、 WSAIoctl または WSPIoctl 関数は SOCKET_ERRORを返します。 拡張エラー情報を取得するには、 WSAGetLastError を呼び出します。

エラー コード 意味
ERROR_INSUFFICIENT_BUFFER システム呼び出しに渡されるデータ域が小さすぎます。 このエラーは、cbOutBuffer パラメーターで渡されたバッファー サイズが lpvOutBuffer パラメーターによって指されるバッファーが小さすぎる場合に返されます。 必要なバッファー サイズは、 lpcbBytesReturned パラメーターで返されます。 cbOutBuffer パラメーターがSOCKET_PROCESSOR_AFFINITY構造体のサイズより小さい場合、このエラーが返されます。
WSA_IO_PENDING 重複した操作が正常に開始され、後で完了が示されます。
WSA_OPERATION_ABORTED ソケットのクローズまたは SIO_FLUSH IOCTL コマンドの実行により、重複した操作が取り消されました。
WSAEFAULT lpvInBufferlpvoutBufferlpcbBytesReturnedlpOverlapped または lpCompletionRoutine パラメーターは、ユーザー アドレス空間の有効な部分に完全には含まれていません。
WSAEINPROGRESS 関数は、コールバックが進行中のときに呼び出されます。
WSAEINTR ブロック操作が中断されました。
WSAEINVAL dwIoControlCode パラメーターが有効なコマンドではないか、指定した入力パラメーターが受け入れられないか、指定されたソケットの型にコマンドが適用されません。 cbOutBuffer パラメーターがSOCKET_PROCESSOR_AFFINITY構造体のサイズより小さい場合、このエラーが返されます。
WSAENETDOWN ネットワーク サブシステムが失敗しました。
WSAENOPROTOOPT ソケット オプションは、指定されたプロトコルではサポートされていません。
WSAENOTCONN ソケット s が接続されていません。
WSAENOTSOCK 記述子 s はソケットではありません。
WSAEOPNOTSUPP 指定された IOCTL コマンドはサポートされていません。 このエラーは、 SIO_QUERY_RSS_PROCESSOR_INFO IOCTL がトランスポート プロバイダーでサポートされていない場合に返されます。

解説

SIO_QUERY_RSS_PROCESSOR_INFO IOCTL は、オペレーティング システムの Windows 8 および Windows Server 2012 以降のバージョンでサポートされています。

SIO_QUERY_RSS_PROCESSOR_INFO IOCTL は、ソケットと RSS プロセッサ コアと NUMA ノードの間の関連付けを決定するために使用されます。 この IOCTL は、 PROCESSOR_NUMBER と NUMA ノード ID を含む SOCKET_PROCESSOR_AFFINITY 構造体を返します。 返される PROCESSOR_NUMBER 構造体には、グループ番号とグループ内の相対プロセッサ番号が含まれます。

ソケットが UDP ソケットの場合、 SIO_QUERY_RSS_PROCESSOR_INFO IOCTL が正常に機能するためには、ソケットが接続されている必要があります。

関連項目

PROCESSOR_NUMBER

ソケット

SOCKET_PROCESSOR_AFFINITY

WSAGetLastError

WSAGetOverlappedResult

WSAIoctl

WSAOVERLAPPED

WSASocketA

WSASocketW