CAsyncSocket::IOCtl
BOOL IOCtl ( lange lCommand, DWORD * LpArgument );
Rückgabewert
Ungleich NULL, wenn die Funktion erfolgreich ist; Ansonsten können 0 und einem bestimmten Fehlercode durch einen Aufruf der GetLastErrorabgerufen werden. Wenden Sie die folgenden Fehler auf dieser Member-Funktion:
-
WSA&NOTINITIALISEDNbsp; Eine erfolgreiche AfxSocketInit muss vor der Verwendung dieser API auftreten.
-
WSAE&NETDOWNNbsp; Die Windows Sockets-Implementierung hat festgestellt, dass das Netzwerk-Subsystem fehlgeschlagen.
-
WSAEI&NVALNbsp;LpArgument ist keine annehmbare Parameter für lCommand lCommand ist kein gültiger Befehl, oder der Befehl gilt nicht für den Typ des Socket geliefert.
-
WSAEI&NPROGRESSNbsp; Ein sperrender Windows Sockets-Vorgang wird ausgeführt.
-
WSAE&NOTSOCKNbsp; Die Beschreibung ist kein socket.
Parameter
lCommand
Der Befehl zum Ausführen auf dem Sockel.
lpArgument
Ein Zeiger auf einen Parameter für lCommand.
Bemerkungen
Rufen Sie diese Memberfunktion um den Modus eines Sockets steuern. Diese Routine kann auf jedem Socket in jedem Staat verwendet werden. Es dient zum Abrufen oder Abrufen Betriebsparameter der Socket, unabhängig von der Subsystem- Protokoll zugeordnet. Die folgenden Befehle werden unterstützt:
-
FIO&NBIONbsp; Aktivieren Sie oder deaktivieren Sie der Socket nicht blockierenden Modus. Der LpArgument -Parameter verweist auf ein DWORD, das ist ungleich NULL, wenn nicht blockierenden Modus wird aktiviert und 0 (null) deaktiviert werden soll. Wenn auf einem Socket AsyncSelect ausgestellt wurde, wird jeder Versuch der IOCTL-Aufruf verwenden, um den Socket zurück zu blockierenden Modus festzulegen mit WSAEINVALfehl. Zum Festlegen des Sockets zurück zu blockierenden Modus und verhindern den WSAEINVAL Fehler, muss eine Anwendung zuerst deaktivieren AsyncSelect von aufrufenden AsyncSelect mit dem lEvent Parameter gleich 0, dann rufen Sie IOCtl.
-
FIO&NREADNbsp; Bestimmen Sie die maximale Anzahl der Bytes, die gelesen werden kann mit einer Receive -Aufruf aus diesem Socket. Der LpArgument -Parameter verweist auf ein DWORD in IOCtl speichert das Ergebnis. Wenn dieser Socket vom Typ SOCK_STREAMist, gibt FIONREAD die Gesamtmenge der Daten, die gelesen werden können in einem einzigen empfangen; Dies ist normalerweise das gleiche wie die Gesamtmenge der Daten auf dem Sockel in der Warteschlange. Wenn dieser Socket vom Typ SOCK_DGRAMist, gibt FIONREAD auf dem Sockel die Größe von das erste Datagramm in der Warteschlange.
-
SIOCATMARK&Nbsp; Bestimmen Sie, ob alle Out-of-Band-Daten gelesen wurden. Dies gilt nur für ein Socket vom Typ SOCK_STREAM welche für in-Line-Aufnahme von Out-of-Band-Daten (SO_OOBINLINE) konfiguriert wurde. Wenn keine Out-of-Band-Daten wartet, gelesen werden, gibt die Operation ungleich NULL zurück. Andernfalls gibt sie 0 zurück, und die nächste empfangen oder ReceiveFrom durchgeführt auf dem Sockel wird abgerufen werden einige oder alle Daten vor der "Markierung"; die Anwendung sollte den SIOCATMARK -Vorgang verwenden, um festzustellen, ob alle Daten bleibt. Wenn gibt es keine normalen Daten vor die "dringenden" Daten (Out-of-Band), wird es in der Reihenfolge empfangen werden. (Beachten Sie, dass ein Receive- oder ReceiveFrom nie Out-of-Band- und normale Daten im selben Aufruf vermischen wird.) Der LpArgument -Parameter verweist auf ein DWORD in IOCtl speichert das Ergebnis.
Diese Funktion ist eine Teilmenge von ioctl() wie in Berkeley Sockets verwendet. Insbesondere gibt es keinen Befehl ist äquivalent zu FIOASYNC, während SIOCATMARK den Befehl nur auf Socket-Ebene ist die unterstützt wird.
CAsyncSocket Übersicht |nbsp; Member der Klasse | Hierarchiediagramm
Siehe auch&Nbsp;CAsyncSocket::AsyncSelect, CAsyncSocket::Create, CAsyncSocket::GetSockOpt, CAsyncSocket::SetSockOpt