Condividi tramite


SIO_QUERY_RSS_PROCESSOR_INFO codice di controllo

Descrizione

Il codice di controllo SIO_QUERY_RSS_PROCESSOR_INFO esegue una query sull'associazione tra un socket e un core del processore RSS e un nodo NUMA.

Per eseguire questa operazione, chiamare la funzione WSAIoctl o WSPIoctl con i parametri seguenti.

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.
);

Parametri

s

Descrittore che identifica un socket.

dwIoControlCode

Codice di controllo per l'operazione. Usare SIO_QUERY_RSS_PROCESSOR_INFO per questa operazione.

lpvInBuffer

Puntatore al buffer di input. Questo parametro non viene usato per questa operazione.

cbInBuffer

Dimensioni, in byte, del buffer di input. Questo parametro non viene usato per questa operazione.

lpvOutBuffer

Puntatore al buffer di output. Questo parametro deve puntare a una struttura SOCKET_PROCESSOR_AFFINITY se i parametri lpOverlapped e lpCompletionRoutine sono NULL.

cbOutBuffer

Dimensioni, in byte, del buffer di output. Questo parametro deve essere almeno la dimensione di una struttura SOCKET_PROCESSOR_AFFINITY .

lpcbBytesReturned

Puntatore a una variabile che riceve le dimensioni, in byte, dei dati archiviati nel buffer di output.

Se il buffer di output è troppo piccolo, la chiamata ha esito negativo, WSAGetLastError restituisce WSAEINVAL e il parametro lpcbBytesReturned punta a un valore DWORD pari a zero.

Se lpOverlapped è NULL, il valore DWORD puntato al parametro lpcbBytesReturned restituito in una chiamata riuscita non può essere zero.

Se il parametro lpOverlapped non è NULL per i socket sovrapposti, le operazioni che non possono essere completate immediatamente verranno avviate e il completamento verrà indicato in un secondo momento. Il valore DWORD indicato dal parametro lpcbBytesReturned restituito può essere zero poiché le dimensioni dei dati archiviati non possono essere determinate fino al completamento dell'operazione sovrapposta. Lo stato di completamento finale può essere recuperato quando il metodo di completamento appropriato viene segnalato al termine dell'operazione.

lpvOverlapped

Puntatore a una struttura WSAOVERLAPPED .

Se il socket s è stato creato senza l'attributo sovrapposto, il parametro lpOverlapped viene ignorato .

Se s è stato aperto con l'attributo sovrapposto e il parametro lpOverlapped non è NULL, l'operazione viene eseguita come operazione sovrapposta (asincrona). In questo caso, il parametro lpOverlapped deve puntare a una struttura WSAOVERLAPPED valida.

Per le operazioni sovrapposte, la funzione WSAIoctl o WSPIoctl restituisce immediatamente e il metodo di completamento appropriato viene segnalato al termine dell'operazione. In caso contrario, la funzione non restituisce finché l'operazione non è stata completata o si verifica un errore.

lpCompletionRoutine

Tipo: _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE

Puntatore alla routine di completamento chiamata quando l'operazione è stata completata (ignorata per socket non sovrapposti).

lpThreadId

Puntatore a una struttura WSATHREADID da usare dal provider in una chiamata successiva a WPUQueueApc. Il provider deve archiviare la struttura WSATHREADID a cui fa riferimento (non lo stesso puntatore) fino a quando la funzione WPUQueueApc restituisce.

Nota Questo parametro si applica solo alla funzione WSPIoctl .

lpErrno

Puntatore al codice di errore.

Nota Questo parametro si applica solo alla funzione WSPIoctl .

Valore restituito

Se l'operazione viene completata correttamente, la funzione WSAIoctl o WSPIoctl restituisce zero.

Se l'operazione ha esito negativo o è in sospeso, la funzione WSAIoctl o WSPIoctl restituisce SOCKET_ERROR. Per ottenere informazioni sull'errore estese, chiamare WSAGetLastError.

Codice di errore Significato
ERROR_INSUFFICIENT_BUFFER L'area dati passata a una chiamata di sistema è troppo piccola. Questo errore viene restituito se il buffer puntato al parametro lpvOutBuffer con dimensioni del buffer passate nel parametro cbOutBuffer è troppo piccolo. Le dimensioni del buffer necessarie verranno restituite nel parametro lpcbBytesReturned . Questo errore viene restituito se il parametro cbOutBuffer è minore delle dimensioni di una struttura SOCKET_PROCESSOR_AFFINITY .
WSA_IO_PENDING Un'operazione sovrapposta è stata avviata correttamente e il completamento verrà indicato in un secondo momento.
WSA_OPERATION_ABORTED Un'operazione sovrapposta è stata annullata a causa della chiusura del socket o dell'esecuzione del comando IOCTL SIO_FLUSH .
WSAEFAULT Il parametro lpvInBuffer, lpvoutBuffer, lpcbBytesReturned, lpOverlapped o lpCompletionRoutine non è totalmente contenuto in una parte valida dello spazio degli indirizzi utente.
WSAEINPROGRESS La funzione viene richiamata quando un callback è in corso.
WSAEINTR Un'operazione di blocco è stata interrotta.
WSAEINVAL Il parametro dwIoControlCode non è un comando valido o un parametro di input specificato non è accettabile oppure il comando non è applicabile al tipo di socket specificato. Questo errore viene restituito se il parametro cbOutBuffer è minore delle dimensioni di una struttura SOCKET_PROCESSOR_AFFINITY .
WSAENETDOWN Il sottosistema di rete non è riuscito.
WSAENOPROTOOPT L'opzione socket non è supportata nel protocollo specificato.
WSAENOTCONN Il socket s non è connesso.
WSAENOTSOCK Il descrittore s non è un socket.
WSAEOPNOTSUPP Il comando IOCTL specificato non è supportato. Questo errore viene restituito se il SIO_QUERY_RSS_PROCESSOR_INFO IOCTL non è supportato dal provider di trasporto.

Commenti

Il SIO_QUERY_RSS_PROCESSOR_INFO IOCTL è supportato in Windows 8 e Windows Server 2012 e versioni successive del sistema operativo.

Il SIO_QUERY_RSS_PROCESSOR_INFO IOCTL viene usato per determinare l'associazione tra un socket e un core del processore RSS e un nodo NUMA. Questo IOCTL restituisce una struttura SOCKET_PROCESSOR_AFFINITY contenente l'PROCESSOR_NUMBER e l'ID nodo NUMA. La struttura PROCESSOR_NUMBER restituita contiene un numero di gruppo e un numero di processore relativo all'interno del gruppo.

Se il socket è un socket UDP, il socket deve essere connesso per il corretto funzionamento del SIO_QUERY_RSS_PROCESSOR_INFO IOCTL.

Vedi anche

PROCESSOR_NUMBER

Socket

SOCKET_PROCESSOR_AFFINITY

WSAGetLastError

WSAGetOverlappedResult

Wsaioctl

WSAOVERLAPPED

WSASocketA

WSASocketW