Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die WinAsyncAPPCIOCP-Funktion stellt einen asynchronen Einstiegspunkt für alle APPC-Verben bereit. Verwenden Sie diese Funktion anstelle der blockierenden Versionen der Verben, um mehrere Sitzungen mithilfe von E/A-Vervollständigungsports auf demselben Thread zu behandeln. Dieses Verb wird nur unter Microsoft Windows unterstützt und verwendet Win32-E/A-Vervollständigungsports.
Syntax
HANDLE WINAPI WinAsyncAPPCIOCP(
APPC_IOCP_INFO *iocp_handle,
longlpVcb);
Parameter
iocp_handle
Ein Zeiger auf eine APPC_IOCP_INFO Struktur, die zum Übergeben von E/A-Vervollständigungsportinformationen verwendet wird.
lpVcb
Zeiger auf den Verb-Steuerelementblock
Die APPC_IOCP_INFO-Struktur weist den folgenden Prototyp auf:
APPC_CompletionPort;APPC_NumberOfBytesTransferred;
APPC_CompletionKey;
APPC_pOverlapped;
APPC_CompletionPort
Dieser angegebene Parameter ist das HANDLE, das vom Aufruf der CreateIoCompletionPort-Funktion zurückgegeben wird, wenn der E/A-Abschlussport erstellt wird. Der E/A-Vervollständigungsport muss erstellt werden, bevor die WinAsyncAPPCIOCP-Funktion aufgerufen wird. Nach Abschluss des Verbs ruft die APPC-Bibliothek die PostQueuedCompletionStatus-Funktion mit den verbleibenden Feldern in der Struktur als Eingaben auf, und diese Felder werden einfach an die von der Anwendung ausgegebene GetQueuedCompletionStatus-Funktion übergeben.
APPC_NumberOfBytesTransferred
Dieser angegebene Parameter wird ignoriert. Nach Abschluss des APPC-Verbs ruft die APPC-Bibliothek die PostQueuedCompletionStatus-Funktion mit diesem Feld als Eingabe auf, und der für die dwNumberOfBytesTransferred zurückgegebene Wert wird einfach an die von der Anwendung ausgegebene GetQueuedCompletionStatus-Funktion übergeben.
APPC_CompletionKey
Dieser angegebene Parameter wird ignoriert. Nach Abschluss des APPC-Verbs ruft die APPC-Bibliothek die PostQueuedCompletionStatus-Funktion mit diesem Feld als Eingabe auf, und der für den dwCompletionKey zurückgegebene Wert wird einfach an die von der Anwendung ausgegebene GetQueuedCompletionStatus-Funktion übergeben.
APPC_pOverlapped
Dieser angegebene Parameter wird ignoriert. Nach Abschluss des APPC-Verbs ruft die APPC-Bibliothek die PostQueuedCompletionStatus-Funktion mit diesem Feld als Eingabe auf, und der für das lpOverlapped zurückgegebene Wert wird einfach an die von der Anwendung ausgegebene GetQueuedCompletionStatus-Funktion übergeben.
Rückgabewert
Der Rückgabewert gibt an, ob die asynchrone Auflösungsanforderung erfolgreich war. Wenn die Funktion erfolgreich war, ist der Rückgabewert ein asynchroner Aufgabenhandle. Wenn die Funktion nicht erfolgreich war, wird eine Null zurückgegeben.
Wenn diese Funktion einen erfolgreichen Wert zurückgibt, gibt dies nicht an, dass der APPC-Aufruf letztendlich erfolgreich zurückgegeben wird. Es weist nur darauf hin, dass es für die APPC-Bibliothek möglich war, den APPC-Aufruf asynchron mithilfe eines E/A-Vervollständigungsports für die Benachrichtigung zu versuchen.
Bemerkungen
Diese Funktion ist für die Verwendung mit CreateIoCompletionPort und GetQueuedCompletionStatus in der Win32-API vorgesehen. Diese Funktionen werden im Abschnitt "Referenz" der Dokumentation zum Microsoft Platform SDK beschrieben.
Ein Beispiel für die Verwendung dieses Verbs in Multithreaded-TPs finden Sie im Multithreaded Receive Sample TP (MRCVIO im Ordner SNA\MSENDRCV) mithilfe von E/A-Vervollständigungsports, die im Host Integration Server SDK enthalten sind.
APPC-Verben, die in einfachen Unterhaltungen verwendet werden, die blockieren können, sind wie folgt:
-
APPC-Verben, die in zugeordneten Unterhaltungen verwendet werden, die blockieren können, sind wie folgt:
-
Bei Verwendung der synchronen oder asynchronen Versionen eines Verbs kann eine Anwendung nur eine herausragende Funktion gleichzeitig für eine Unterhaltung ausführen. Ein Versuch, eine zweite Funktion zu initiieren, führt zum Fehlercode AP_CONV_BUSY.
Die Ausnahmen vom vorherigen Absatz sind RECEIVE_AND_POST, MC_RECEIVE_AND_POST, RECEIVE_AND_WAIT und MC_RECEIVE_AND_WAIT.
Um die vollständige Verwendung der asynchronen Unterstützung zu ermöglichen, wurden asynchron ausgegebene RECEIVE_AND_WAIT und MC_RECEIVE_AND_WAIT Verben so geändert, dass sie wie die RECEIVE_AND_POST und MC_RECEIVE_AND_POST Verben funktionieren. Während eine asynchrone Version eines dieser Verben ausstehende ist, können die folgenden Verben in derselben Unterhaltung ausgegeben werden:
DEALLOCATE (AP_ABEND_PROG, AP_ABEND_SVC oder AP_ABEND_TIMER)
SEND_ERROR oder MC_SEND_ERROR
TEST_RTS oder MC_TEST_RTS
-
Auf diese Weise kann eine Anwendung, insbesondere eine Serveranwendung, eine asynchrone RECEIVE_AND_WAIT oder MC_RECEIVE_AND_WAIT verwenden, um Daten zu empfangen. Während die RECEIVE_AND_POST, MC_RECEIVE_AND_POST, RECEIVE_AND_WAIT oder MC_RECEIVE_AND_WAIT noch ausstehend sind, kann sie weiterhin SEND_ERROR oder MC_SEND_ERROR und REQUEST_TO_SEND oder MC_REQUEST_TO_SEND verwenden. Es wird empfohlen, dieses Feature für die vollständige asynchrone Unterstützung und insbesondere für die Unterstützung mehrerer Unterhaltungen im selben Thread zu verwenden.
Nach Abschluss des asynchronen Vorgangs wird die Anwendung über die GetQueuedCompletionStatus-Funktion benachrichtigt. Überprüfen Sie nach Abschluss von E/A den primären Rückgabecode und sekundären Rückgabecode im Verbsteuerelementblock auf fehlerbedingungen.