SIO_TCP_INITIAL_RTO-Steuerelementcode

BESCHREIBUNG

Der SIO_TCP_INITIAL_RTO-Steuerungscode konfiguriert RTO-Parameter (Initial Retransmission Timeout) für einen Socket.

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_TCP_INITIAL_RTO,                // dwIoControlCode
  (LPVOID) lpvInBuffer,   // pointer to a TCP_INITIAL_RTO_PARAMETERS structure
  (DWORD) cbInBuffer,    // size, in bytes, of the input buffer
  (LPVOID) lpvOutBuffer,         // pointer to 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_TCP_INITIAL_RTO,                // dwIoControlCode
  (LPVOID) lpvInBuffer,   // pointer to a TCP_INITIAL_RTO_PARAMETERS structure
  (DWORD) cbInBuffer,           // size, in bytes, of the input buffer
  (LPVOID) lpvOutBuffer,         // pointer to 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 SIO_TCP_INITIAL_RTO für diesen Vorgang.

lpvInBuffer

Ein Zeiger auf den Eingabepuffer. Dieser Parameter enthält einen Zeiger auf die TCP_INITIAL_RTO_PARAMETERS, die dem Socket zugeordnet ist.

cbInBuffer

Die Größe des Eingabepuffers in Bytes.

lpvOutBuffer

Ein Zeiger auf den Ausgabepuffer. Dieser Parameter wird für diesen Vorgang nicht verwendet.

cbOutBuffer

Die Größe des Ausgabepuffers in Bytes. Dieser Parameter muss auf 0 (null) festgelegt werden.

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
WSA _ IO _ PENDING Ein überlappender E/A-Vorgang wird ausgeführt. Dieser Wert wird zurückgegeben, wenn ein überlappender Vorgang erfolgreich initiiert wurde und der Abschluss zu einem späteren Zeitpunkt angezeigt wird.
_WSA-VORGANG _ ABGEBROCHEN Der E/A-Vorgang wurde aufgrund eines Threadendvorgangs oder einer Anwendungsanforderung abgebrochen. Dieser Fehler wird zurückgegeben, wenn ein überlappender Vorgang aufgrund des Schließens des Sockets oder der Ausführung des SIO _ FLUSH IOCTL-Befehls abgebrochen wurde.
WSAEACCES Es wurde versucht, auf eine Weise auf einen Socket zuzugreifen, die durch seine Zugriffsberechtigungen unzulässig ist. Dieser Fehler wird unter folgenden Bedingungen zurückgegeben: Dem Benutzer fehlen die erforderlichen Administratorrechte auf dem lokalen Computer, oder die Anwendung wird nicht in einer erweiterten Shell als integrierter Administrator ( RunAs administrator ) ausgeführt.
WSAEFAULT Das System hat beim Versuch, ein Zeigerargument in einem Aufruf zu verwenden, eine ungültige Zeigeradresse erkannt. Dieser Fehler wird zurückgegeben, wenn der Parameter lpvInBuffer, lpvoutBuffer, lpcbBytesReturned, lpOverlapped oder lpCompletionRoutine nicht vollständig in einem gültigen Teil des Benutzeradressraums enthalten ist.
WSAEINPROGRESS Ein Blockierungsvorgang wird momentan ausgeführt. Dieser Fehler wird zurückgegeben, wenn die Funktion aufgerufen wird, wenn ein Rückruf ausgeführt wird.
WSAEINTR Ein Blockierender Vorgang wurde durch einen Aufruf von WSACancelBlockingCall unterbrochen. Dieser Fehler wird zurückgegeben, wenn ein Blockierungsvorgang unterbrochen wurde.
WSAEINVAL Ein ungültiges Argument wurde angegeben. Dieser Fehler wird zurückgegeben, wenn der dwIoControlCode-Parameter kein gültiger Befehl ist oder ein angegebener Eingabeparameter nicht akzeptabel 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 beim Netzwerksubsystem ein Fehler aufgetreten ist.
WSAENOTSOCK Es wurde versucht, einen Vorgang für etwas zu unternehmen, das kein Socket ist. Dieser Fehler wird zurückgegeben, wenn der Deskriptor s kein Socket ist.
WSAEOPNOTSUPP Der versuchsweise Vorgang wird für den Objekttyp, auf den 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 SIO_TCP_INITIAL_RTO IOCTL vom Transportanbieter nicht unterstützt wird.

Bemerkungen

Eine Anwendung kann die SIO_TCP_INITIAL_RTO IOCTL verwenden, um die anfänglichen Neuübertragungsmerkmale (SYN/SYN+ACK) eines TCP-Sockets bei Bedarf zu steuern. Bei Verwendung dieser Option muss eine Anwendung geeignete Werte bereitstellen, bevor ein TCP-Verbindungsversuch für den Socket gestartet wird.

Die TCP_INITIAL_RTO_PARAMETERS IOCTL ermöglicht einer Anwendung das Konfigurieren des anfänglichen (SYN) Retransmission Timeout (RTO), das vom Socket verwendet wird.

Ein Zeiger auf eine TCP_INITIAL_RTO_PARAMETERS Struktur, die im lpvInBuffer-Parameter übergeben wird, ermöglicht es einer Anwendung, die erste Roundtripzeit (RTT) zu konfigurieren, die zum Berechnen des Timeouts für die Neuübertragung verwendet wird. Die Anwendung kann auch die Anzahl der Neuübertragungen konfigurieren, die versucht werden, bevor der Verbindungsversuch fehlschlägt.

Weitere Informationen

Socket

TCP_INITIAL_RTO_PARAMETERS

WSAGetLastError

WSAGetOverlappedResult

WSAIoctl

WSAOVERLAPPED

WSASocketA

WSASocketW