SIO_QUERY_TRANSPORT_SETTING-Steuerelementcode

BESCHREIBUNG

Der SIO _ QUERY TRANSPORT _ _ SETTING-Steuerelementcode fragt die Transporteinstellungen für einen Socket ab.

Rufen Sie zum Ausführen dieses Vorgangs die Funktion WSAIoctl oder WSPIoctl mit den folgenden Parametern auf.

int WSAIoctl(
  (socket) s,             // descriptor identifying a socket
  SIO_QUERY_TRANSPORT_SETTING, // dwIoControlCode
  (LPVOID) lpvInBuffer,  // pointer to the input buffer
  (DWORD) cbInBuffer,    // size, in bytes, of the input buffer
  (LPVOID) lpvOutBuffer,     // pointer to the 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_TRANSPORT_SETTING, // dwIoControlCode
  (LPVOID) lpvInBuffer,  // pointer to the input buffer
  (DWORD) cbInBuffer,    // size, in bytes, of the input buffer
  (LPVOID) lpvOutBuffer,     // pointer to the 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.
);

Parameter

s

Ein Deskriptor, der einen Socket identifiziert.

dwIoControlCode

Der Steuerelementcode für den Vorgang. Verwenden Sie für diesen Vorgang SIO _ QUERY TRANSPORT _ _ SETTING.

lpvInBuffer

Ein Zeiger auf den Eingabepuffer. Dieser Parameter enthält einen Zeiger auf eine -Struktur, bei der das erste Element der -Struktur eine TRANSPORT_SETTING_ID-Struktur ist, die bestimmt, welche Transporteinstellung abgefragt wird.

cbInBuffer

Die Größe des Eingabepuffers in Bytes. Dieser Parameter hängt von der transport-Einstellung ab, die abgefragt wird.

lpvOutBuffer

Ein Zeiger auf den Ausgabepuffer. Dieser Parameter hängt von der Transporteinstellung ab, die abgefragt wird, wenn die Parameter lpOverlapped und lpCompletionRoutine NULL sind.

cbOutBuffer

Die Größe des Ausgabepuffers in Bytes.

lpcbBytesReturned

Ein Zeiger auf eine Variable, die die Größe der im Ausgabepuffer gespeicherten Daten in Bytes empfängt.

Wenn der Ausgabepuffer zu klein ist, schlägt der Aufruf fehl, WSAGetLastError gibt WSAEINVALzurück, und der lpcbBytesReturned-Parameter zeigt auf den DWORD-Wert 0 (null).

Wenn lpOverlapped NULL ist, darf der DWORD-Wert, auf den der lpcbBytesReturned-Parameter zeigt, der bei einem erfolgreichen Aufruf zurückgegeben wird, nicht 0 (null) sein.

Wenn der lpOverlapped-Parameter für überlappende Sockets nicht NULL ist, werden Vorgänge initiiert, die nicht sofort abgeschlossen werden können, und der Abschluss wird zu einem späteren Zeitpunkt angezeigt. Der DWORD-Wert, auf den der lpcbBytesReturned-Parameter zeigt, der zurückgegeben wird, kann 0 (null) sein, da die Größe der gespeicherten Daten erst bestimmt werden kann, nachdem der überlappende Vorgang abgeschlossen wurde. Der endgültige Abschlussstatus kann abgerufen werden, wenn die entsprechende Vervollständigungsmethode signalisiert wird, wenn der Vorgang abgeschlossen wurde.

lpvOverlapped

Ein Zeiger auf eine WSAOVERLAPPED-Struktur.

Wenn Sockets ohne das überlappende Attribut erstellt wurden, wird der lpOverlapped-Parameter ignoriert.

Wenn s mit dem überlappende Attribut geöffnet wurde und der lpOverlapped-Parameter nicht NULL ist, wird der Vorgang als überlappender (asynchroner) Vorgang ausgeführt. In diesem Fall muss der lpOverlapped-Parameter auf eine gültige WSAOVERLAPPED-Struktur verweisen.

Für überlappende Vorgänge gibt die WSAIoctl- oder WSPIoctl-Funktion sofort zurück, und die entsprechende Vervollständigungsmethode wird signalisiert, wenn der Vorgang abgeschlossen wurde. Andernfalls gibt die Funktion erst dann zurück, wenn der Vorgang abgeschlossen wurde oder ein Fehler auftritt.

lpCompletionRoutine

Typ: _ In_opt _ LPWSAOVERLAPPED_COMPLETION_ROUTINE

Ein Zeiger auf die Abschlussroutine, die aufgerufen wird, wenn der Vorgang abgeschlossen wurde (wird für nicht überlappende Sockets ignoriert).

lpThreadId

Ein Zeiger auf eine WSATHREADID-Struktur, die vom Anbieter in einem nachfolgenden Aufruf von WPUQueueApcverwendet werden soll. Der Anbieter sollte die referenzierte WSATHREADID-Struktur (nicht den Zeiger auf denselben) speichern, bis die WPUQueueApc-Funktion zurückgegeben wurde.

Hinweis Dieser Parameter gilt nur für die WSPIoctl-Funktion.

lpErrno

Ein Zeiger auf den Fehlercode.

Hinweis Dieser Parameter gilt nur für die WSPIoctl-Funktion.

Rückgabewert

Wenn der Vorgang erfolgreich abgeschlossen wurde, gibt die WSAIoctl- oder WSPIoctl-Funktion 0 (null) zurück.

Wenn der Vorgang fehlschlägt oder aussteht, gibt die WSAIoctl- oder WSPIoctl-Funktion SOCKET _ ERROR zurück. Um erweiterte Fehlerinformationen abzurufen, rufen Sie WSAGetLastError auf.

Fehlercode Bedeutung
FEHLER: _ _ UNZUREICHENDER PUFFER Der an einen Systemaufruf übergebene Datenbereich ist zu klein. Dieser Fehler wird zurückgegeben, wenn der Puffer, auf den der lpvOutBuffer-Parameter zeigt, mit einer im cbOutBuffer-Parameter übergebenen Puffergröße zu klein ist. Die erforderliche Puffergröße wird im lpcbBytesReturned-Parameter zurückgegeben.
WSA _ IO _ PENDING Ein überlappender Vorgang wurde erfolgreich initiiert, und der Abschluss wird zu einem späteren Zeitpunkt angezeigt.
_WSA-VORGANG _ ABGEBROCHEN Ein überlappender Vorgang wurde aufgrund des Schließens des Sockets oder der Ausführung des SIO _ FLUSH IOCTL-Befehls abgebrochen.
WSAEFAULT Der Parameter lpvOutBuffer, lpcbBytesReturned, lpOverlapped oder lpCompletionRoutine ist nicht vollständig in einem gültigen Teil des Benutzeradressbereichs enthalten.
WSAEINPROGRESS Die Funktion wird aufgerufen, wenn ein Rückruf ausgeführt wird.
WSAEINTR Ein Blockierungsvorgang wurde unterbrochen.
WSAEINVAL Der dwIoControlCode-Parameter ist kein gültiger Befehl, oder ein angegebener Eingabeparameter ist nicht akzeptabel, oder der Befehl gilt nicht für den angegebenen Sockettyp.
WSAENETDOWN Fehler beim Netzwerksubsystem.
WSAENOPROTOOPT Die Socketoption wird für das angegebene Protokoll nicht unterstützt.
WSAENOTCONN Die Sockets sind nicht verbunden.
WSAENOTSOCK Der Deskriptor s ist kein Socket.
WSAEOPNOTSUPP Der angegebene IOCTL-Befehl wird nicht unterstützt. Dieser Fehler wird zurückgegeben, wenn die SIO _ QUERY TRANSPORT _ _ SETTING IOCTL vom Transportanbieter nicht unterstützt wird.

Hinweise

SIO _ QUERY TRANSPORT _ _ SETTING IOCTL wird für Windows 8, Windows Server 2012 und höhere Versionen des Betriebssystems unterstützt.

SIO _ QUERY TRANSPORT _ _ SETTING IOCTL ist ein generisches IOCTL, das zum Abfragen der Transporteinstellungen für einen Socket verwendet wird. Die abgefragte Transporteinstellung basiert auf dem TRANSPORT_SETTING_ID, der im lpvInBuffer-Parameter übergeben wird.

Die einzige transport-Einstellung, die derzeit definiert wird, ist für die FUNKTION REAL _ TIME NOTIFICATION _ _ CAPABILITY auf einem TCP-Socket.

Wenn der im lpvInBuffer-Parameter übergebene TRANSPORT_SETTING_ID den Guid-Member auf REAL TIME NOTIFICATION _ _ _ CAPABILITY festgelegt hat, ist dies eine Anforderung zum Abfragen der Echtzeitbenachrichtigungseinstellungen für den TCP-Socket, der mit ControlChannelTrigger verwendet wird, um Hintergrundnetzwerkbenachrichtigungen in einer Windows Store-App zu empfangen. Der lpvInBuffer-Parameter sollte auf eine TRANSPORT_SETTING_ID-Struktur verweisen. Der lpvOutBuffer-Parameter sollte auf eine REAL TIME NOTIFICATION SETTING _ _ _ _ OUTPUT-Struktur verweisen. Diese Transporteinstellung gilt nur für TCP-Sockets. Diese Transporteinstellung bietet WinInet oder ähnlichen Netzwerkdiensten die Möglichkeit, einen bestimmten TCP-Socket abzufragen, um den ControlChannelTrigger-Status zu bestimmen. Eine Windows Store-App ruft diese IOCTL nicht direkt auf. Wenn der WSAIoctl- oder WSPIoctl-Aufruf erfolgreich ist, gibt dieses IOCTL eine REAL TIME NOTIFICATION SETTING _ _ _ _ OUTPUT-Struktur mit dem aktuellen Status zurück.

Die SIO _ QUERY TRANSPORT _ SETTING-IOCTL _ bietet WinInet oder ähnlichen Netzwerkdiensten eine Möglichkeit, den Transporteinstellungsstatus für einen bestimmten TCP-Socket abzufragen, um zu bestimmen, ob ControlChannelTrigger für den Socket aktiviert ist. Eine Windows Store-App ruft diese IOCTL nicht direkt auf.

Diese IOCTL gilt nur für TCP-Sockets.

Siehe auch

CONTROL_CHANNEL_TRIGGER_STATUS

ControlChannelTrigger

REAL_TIME_NOTIFICATION_SETTING_OUTPUT

SIO_APPLY_TRANSPORT_SETTING

Socket

WSAGetLastError

WSAGetOverlappedResult

WSAIoctl

WSAOVERLAPPED

WSASocketA

WSASocketW