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.