SIO_APPLY_TRANSPORT_SETTING Steuerungs Codes

BESCHREIBUNG

Der Verwaltungs Code für die _ _ Transport _ Einstellung von SIO wendet mindestens eine Transport Einstellung auf einen Socket an.

Um diesen Vorgang auszuführen, wenden Sie die WSAIoctl -oder wspioctl -Funktion mit den folgenden Parametern an.

int WSAIoctl(
  (socket) s,             // descriptor identifying a socket
  SIO_APPLY_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, in bytes, of the 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_APPLY_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, in bytes, of the 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 Steuerelement Code für den Vorgang. Verwenden Sie für diesen Vorgang die _ _ Transport _ Einstellung für "sio anwenden ".

lpvinbuffer

Ein Zeiger auf den Eingabepuffer. Dieser Parameter enthält einen Zeiger auf eine-Struktur, in der der erste Member der-Struktur eine TRANSPORT_SETTING_ID Struktur ist, die bestimmt, welche Transport Einstellung angewendet wird.

cbinbuffer

Die Größe des Eingabe Puffers in Bytes. Dieser Parameter hängt von der angewendeten Transport Einstellung ab.

lpvoutbuffer

Ein Zeiger auf den Ausgabepuffer. Dieser Parameter hängt von der angewendeten Transport Einstellung ab.

cboutbuffer

Die Größe des Ausgabepuffers in Bytes.

lpcbbyteszurück gegeben

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-Befehl fehl, WSAGetLastError gibt WSAEINVALzurück, und der lpcbbytesreturns -Parameter verweist auf den DWORD -Wert 0 (null).

Wenn lpoverlgetauscht gleich null ist, kann der DWORD -Wert, auf den der lpcbbytesall -Parameter verweist, der bei einem erfolgreichen-Vorgang zurückgegeben wird, nicht NULL sein.

Wenn der lpoverllapp -Parameter für überlappende Sockets nicht null ist, werden Vorgänge, die nicht sofort abgeschlossen werden können, initiiert, und der Abschluss wird zu einem späteren Zeitpunkt angegeben. Der DWORD -Wert, auf den der zurückgegebene lpcbbyteszurück gegebene Parameter verweist, kann NULL sein, da die Größe der gespeicherten Daten erst bestimmt werden kann, wenn der überlappende Vorgang abgeschlossen wurde. Der endgültige Abschluss Status kann abgerufen werden, wenn die geeignete Vervollständigungs Methode signalisiert wird, wenn der Vorgang abgeschlossen ist.

lpvoverlgetauscht

Ein Zeiger auf eine wsaoverllapp -Struktur.

Wenn Socket s ohne das überlappende Attribut erstellt wurde, wird der lpoverllapp -Parameter ignoriert.

Wenn s mit dem überlappenden Attribut geöffnet wurde und der lpoverlgetauscht -Parameter nicht null ist, wird der Vorgang als überlappende (asynchrone) Operation ausgeführt. In diesem Fall muss der lpoverllapp -Parameter auf eine gültige wsaoverllapp -Struktur zeigen.

Bei überlappenden Vorgängen gibt die Funktion WSAIoctl oder wspioctl sofort zurück, und die entsprechende Vervollständigungs Methode wird signalisiert, wenn der Vorgang abgeschlossen wurde. Andernfalls gibt die Funktion nicht zurück, bis der Vorgang abgeschlossen ist oder ein Fehler auftritt.

lpCompletionRoutine

Typ: _ In_opt _ LPWSAOVERLAPPED_COMPLETION_ROUTINE

Ein Zeiger auf die Vervollständigungs Routine, die aufgerufen wird, wenn der Vorgang abgeschlossen wurde (bei nicht überlappenden Sockets ignoriert).

lpthreadid

Ein Zeiger auf eine wsathreadid -Struktur, die vom Anbieter in einem nachfolgenden wpuqueueapc-Rückruf verwendet werden soll. Der Anbieter sollte die referenzierte wsathreadid -Struktur (nicht den Zeiger auf dieselbe) speichern, bis die wpuqueueapc -Funktion zurückgibt.

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 wird, gibt die WSAIoctl -oder wspioctl -Funktion NULL zurück.

Wenn der Vorgang fehlschlägt oder aussteht, gibt die Funktion WSAIoctl oder wspioctl einen _ Socketfehler zurück. Um erweiterte Fehlerinformationen abzurufen, nennen Sie WSAGetLastError.

Fehlercode Bedeutung
ausstehende WSA-e/a _ _ Überlappende e/a-Vorgänge werden ausgeführt. Dieser Wert wird zurückgegeben, wenn ein überlappende Vorgang erfolgreich initiiert wurde und die Beendigung zu einem späteren Zeitpunkt angegeben wird.
WSA- _ Vorgang _ abgebrochen Der e/a-Vorgang wurde aufgrund eines Thread Beendigungs-oder einer Anwendungsanforderung abgebrochen. Dieser Fehler wird zurückgegeben, wenn ein über Lapp ender Vorgang aufgrund der Schließung des Sockets oder der Ausführung des Befehls " SIO _ Flush ioctl" abgebrochen wurde.
WSAEFAULT Das System hat bei dem Versuch, ein Zeigerargument in einem-Befehl zu verwenden, eine ungültige Zeiger Adresse erkannt. Dieser Fehler wird zurückgegeben, wenn der Parameter lpvinbuffer, lpvoutbuffer, lpcbbytesall, lpoverlgetauscht oder lpCompletionRoutine nicht vollständig in einem gültigen Teil des Benutzer Adressraums enthalten ist.
Wsaeingabe Progress Ein Blockierungsvorgang wird momentan ausgeführt. Dieser Fehler wird zurückgegeben, wenn die Funktion aufgerufen wird, wenn ein Rückruf ausgeführt wird.
Wsaeingabe Ein Blockierungs Vorgang wurde durch einen wsacancelblockingstatement-Aufrufvorgang unterbrochen. Dieser Fehler wird zurückgegeben, wenn ein Blockierungs Vorgang unterbrochen wurde.
Wsaabval Ein ungültiges Argument wurde angegeben. Dieser Fehler wird zurückgegeben, wenn der dwIoControlCode -Parameter kein gültiger Befehl ist oder wenn ein angegebener Eingabeparameter nicht zulässig ist oder der Befehl nicht auf den angegebenen Sockettyp anwendbar ist.
WSAENETDOWN Bei einem Socketvorgang war das Netzwerk inaktiv. Dieser Fehler wird zurückgegeben, wenn das Netzwerk Subsystem fehlgeschlagen ist.
Wsaumotsock Es wurde versucht, einen Vorgang für etwas auszuführen, das kein Socket ist. Dieser Fehler wird zurückgegeben, wenn es sich bei den Deskriptoren nicht um einen Socket handelt.
WSAEOPNOTSUPP Der versuchte Vorgang wird für den Typ des Objekts, auf das verwiesen wird, nicht unterstützt. Dieser Fehler wird zurückgegeben, wenn der angegebene ioctl-Befehl nicht unterstützt wird. Dieser Fehler wird auch zurückgegeben, wenn die IOCTL- _ _ Transport _ Einstellung für die Transport Einstellung vom Transport Anbieter nicht unterstützt wird. Dieser Fehler wird auch zurückgegeben, wenn bei dem Versuch, die IOCTL- _ _ Transport _ Einstellung für "sio Apply " zu verwenden, ein anderer Socket als UDP oder TCP verwendet wird.

Bemerkungen

Die IOCTL- _ _ Transport _ Einstellung für das Betriebssystem Windows 8, Windows Server 2012 und höhere Versionen des Betriebssystems wird unterstützt.

Die IOCTL- _ _ Transport _ Einstellung für "sio" ist eine generische IOCTL, die zum Anwenden der Transport Einstellung auf Socket verwendet wird. Die angewendete Transport Einstellung basiert auf der TRANSPORT_SETTING_ID , die im lpvinbuffer -Parameter übergeben wird.

Ab Windows 8 und Windows Server 2012 definiert das System die REAL_TIME_NOTIFICATION_CAPABILITY Funktion auf einem TCP-Socket. Ab Windows 10 und Windows Server 2016 wird auch der _ _ Kontext "nameres zuordnen " definiert. Weitere Informationen finden Sie unter addrinfoex4 und ASSOCIATE_NAMERES_CONTEXT_INPUT.

Wenn für die TRANSPORT_SETTING_ID , die im lpvinbuffer-Parameter übergeben wird, das GUID-Element auf echt _ Zeit _ Benachrichtigungs _ Funktion festgelegt ist, ist dies eine Anforderung zum Anwenden von Echt Zeit Benachrichtigungseinstellungen für den TCP-Socket, der mit dem controlchannel- Parameter verwendet wird, um Hintergrund Netzwerk Benachrichtigungen in einer Windows Store-App Der lpvinbuffer -Parameter sollte auf eine REAL_TIME_NOTIFICATION_SETTING_INPUT Struktur zeigen. Der lpvoutbuffer -Parameter wird für diesen Vorgang nicht verwendet. Diese Transport Einstellung gilt nur für TCP-Sockets. Mit dieser Transport Einstellung können WinInet oder ähnliche Netzwerkdienste einen bestimmten TCP-Socket als aktivierten controlchannel- Wert markieren. Windows markiert den entsprechenden TCP-Socket und konfiguriert die entsprechenden Hardware-und Softwareeinstellungen, wenn diese Option aufgerufen wird. Eine Windows Store-App ruft diese IOCTL nicht direkt auf.

Siehe auch

ControlChannelTrigger

Glühbirne

SIO_QUERY_TRANSPORT_SETTING

TRANSPORT_SETTING_ID

WSAGetLastError

Wsagein verlappedresult

WSAIoctl

Wsaoverlgetauscht

Wsasocketa

Wsasocketw