WsAsyncExecute-Funktion (webservices.h)

Hilfsfunktion zum Implementieren eines asynchronen Vorgangs.

Syntax

HRESULT WsAsyncExecute(
  [in]           WS_ASYNC_STATE         *asyncState,
  [in, optional] WS_ASYNC_FUNCTION      operation,
  [in]           WS_CALLBACK_MODEL      callbackModel,
  [in]           void                   *callbackState,
  [in, optional] const WS_ASYNC_CONTEXT *asyncContext,
  [in, optional] WS_ERROR               *error
);

Parameter

[in] asyncState

Ein Zeiger auf die WS_ASYNC_STATE-Struktur , die während des asynchronen Vorgangs verwendet wird. Dies ist ein Zustandswartungsparameter, der nicht für die direkte Verwendung vorgesehen ist. Die Anwendung muss die WS_ASYNC_STATE Struktur zuordnen und sicherstellen, dass sie während des gesamten asynchronen Vorgangs aktiv bleibt. Die WS_ASYNC_STATE-Struktur kann wiederverwendet werden, nachdem ein asynchroner Vorgang abgeschlossen wurde.

[in, optional] operation

Stellt den anfänglichen asynchronen Vorgang dar, der ausgeführt werden soll.

[in] callbackModel

Gibt an, ob der Rückruf lang oder kurz aufgerufen wird. Weitere Informationen finden Sie unter WS_CALLBACK_MODEL

[in] callbackState

Ein void-Zeiger auf einen benutzerdefinierten Wert, der an jede WS_ASYNC_FUNCTION übergeben wird.

[in, optional] asyncContext

Zeiger auf Informationen zum asynchronen Aufrufen der Funktion. Übergeben Sie NULL , um die Funktion synchron aufzurufen.

[in, optional] error

Zeiger auf eine WS_ERROR-Struktur , die zusätzliche Fehlerinformationen empfängt, wenn die Funktion fehlschlägt.

Rückgabewert

Wenn die Funktion erfolgreich ist, wird NO_ERROR zurückgegeben. Andernfalls wird ein HRESULT-Fehlercode zurückgegeben.

Hinweise

Informationen dazu, wie WWSAPI asynchrone Vorgänge verarbeitet, finden Sie im Thema Asynchrones Modell .

In vielen Fällen besteht ein asynchroner Vorgang aus anderen asynchronen Vorgängen. Jeder asynchrone Vorgang kann WS_S_ASYNC zurückgeben, der angibt, dass der Rückruf aufgerufen wird, oder einen anderen Erfolgs- oder Fehlercode. In diesem Fall wird der Rückruf nicht aufgerufen. Der Vorgang muss bereit sein, eine NULL-WS_ASYNC_CONTEXT anzunehmen, die angibt, dass der Aufrufer den Vorgang synchron anfordert. Außerdem muss sichergestellt werden, dass der Rückruf ordnungsgemäß aufgerufen wird. Bei komplexen asynchronen Vorgängen vereinfacht WsAsyncExecute diese Details.

WsAsyncExecute wird durch Aufrufen eines benutzerdefinierten Rückrufs ausgeführt, der einen asynchronen Vorgang initiieren und eine Funktion angibt, die aufgerufen werden soll, wenn der asynchrone Vorgang abgeschlossen ist. Diese Sequenz wird fortgesetzt, bis der Rückruf keine andere Funktion zum Aufrufen festgelegt hat. An diesem Punkt wird der vom WS_ASYNC_CONTEXT angegebene Rückruf aufgerufen, wenn einer der Vorgänge asynchron abgeschlossen wurde.

Der parameter WS_ASYNC_STATE wird von WsAsyncExecute verwendet, um seinen Zustand beizubehalten, und ist nicht für die Initialisierung, Überprüfung oder Verwendung durch den Aufrufer vorgesehen. Der Aufrufer muss jedoch die WS_ASYNC_STATE zuordnen und sicherstellen, dass sie während des gesamten asynchronen Vorgangs aktiv bleibt. Die WS_ASYNC_STATE kann wiederverwendet werden, sobald der asynchrone Vorgang abgeschlossen ist.

Die Beispiele AsyncAdd3ExplicitExample und AsyncAdd3ImplicitExample veranschaulichen die manuelle Implementierung derselben asynchronen Funktion mithilfe von WsAsyncExecute.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 7 [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile webservices.h
Bibliothek WebServices.lib
DLL WebServices.dll