Función WsAsyncExecute (webservices.h)
Función auxiliar para implementar una operación asincrónica .
Sintaxis
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
);
Parámetros
[in] asyncState
Puntero a la estructura WS_ASYNC_STATE utilizada durante la operación asincrónica. Se trata de un parámetro de mantenimiento de estado que no está pensado para su uso directo. La aplicación debe asignar la estructura WS_ASYNC_STATE y asegurarse de que se mantiene activa durante toda la operación asincrónica. La estructura WS_ASYNC_STATE se puede reutilizar después de que se haya completado una operación asincrónica.
[in, optional] operation
Representa la operación asincrónica inicial que se va a realizar.
[in] callbackModel
Indica si la devolución de llamada se está invocando long o short. Para obtener más información, consulte WS_CALLBACK_MODEL
[in] callbackState
Puntero void a un valor definido por el usuario que se pasa a cada WS_ASYNC_FUNCTION.
[in, optional] asyncContext
Puntero a información para invocar la función de forma asincrónica. Pase NULL para invocar la función de forma sincrónica.
[in, optional] error
Puntero a una estructura de WS_ERROR que recibe información de error adicional si se produce un error en la función.
Valor devuelto
Si la función se realiza correctamente, devuelve NO_ERROR; de lo contrario, devuelve un código de error HRESULT.
Comentarios
Para obtener información sobre cómo WWSAPI controla las operaciones asincrónicas, consulte el tema Modelo asincrónico .
En muchos casos, una operación asincrónica se compone de otras operaciones asincrónicas. Cada operación asincrónica puede devolver WS_S_ASYNC que indique que se invocará la devolución de llamada, o cualquier otro código correcto o de error, en cuyo caso no se invocará la devolución de llamada. La operación debe estar preparada para aceptar un WS_ASYNC_CONTEXT NULL que indica que el autor de la llamada solicita que la operación se realice de forma sincrónica. También debe asegurarse de que la devolución de llamada se invoque correctamente. En operaciones asincrónicas complejas, WsAsyncExecute simplifica estos detalles.
WsAsyncExecute funciona invocando una devolución de llamada definida por el usuario que puede iniciar una operación asincrónica e indicar una función que se invocará cuando se complete la operación asincrónica. Esta secuencia continúa hasta que la devolución de llamada no establece otra función que se invoque. En este momento, se invocará la devolución de llamada especificada por el WS_ASYNC_CONTEXT si alguna de las operaciones se completó de forma asincrónica.
WsAsyncExecute usa el parámetro WS_ASYNC_STATE para mantener su estado y no está pensado para inicializarse, inspeccionarse o usarse por el autor de la llamada. Sin embargo, el autor de la llamada debe asignar el WS_ASYNC_STATE y asegurarse de que se mantiene activo durante toda la operación asincrónica. El WS_ASYNC_STATE se puede reutilizar una vez completada la operación asincrónica.
Los ejemplos AsyncAdd3ExplicitExample y AsyncAdd3ImplicitExample muestran la implementación manual de la misma función asincrónica mediante WsAsyncExecute.
Requisitos
Cliente mínimo compatible | Windows 7 [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2008 R2 [aplicaciones de escritorio | Aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | webservices.h |
Library | WebServices.lib |
Archivo DLL | WebServices.dll |