Функция WsAsyncExecute (webservices.h)

Вспомогательная функция для реализации асинхронной операции.

Синтаксис

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
);

Параметры

[in] asyncState

Указатель на структуру WS_ASYNC_STATE , используемую во время асинхронной операции. Это параметр обслуживания состояния, не предназначенный для прямого использования. Приложение должно выделить структуру WS_ASYNC_STATE и обеспечить ее работоспособность в течение всей асинхронной операции. После завершения асинхронной операции можно повторно использовать структуру WS_ASYNC_STATE .

[in, optional] operation

Представляет начальную асинхронную операцию, которую необходимо выполнить.

[in] callbackModel

Указывает, вызывается ли обратный вызов : длинный или короткий. Дополнительные сведения см. в разделе WS_CALLBACK_MODEL

[in] callbackState

Пустой указатель на определяемое пользователем значение, которое передается каждому WS_ASYNC_FUNCTION.

[in, optional] asyncContext

Указатель на сведения для асинхронного вызова функции. Передайте значение NULL для синхронного вызова функции.

[in, optional] error

Указатель на структуру WS_ERROR , которая получает дополнительные сведения об ошибке в случае сбоя функции.

Возвращаемое значение

Если функция выполняется успешно, она возвращает NO_ERROR; В противном случае возвращается код ошибки HRESULT.

Комментарии

Сведения о том, как WWSAPI обрабатывает асинхронные операции, см. в разделе Асинхронная модель .

Во многих случаях асинхронная операция состоит из других асинхронных операций. Каждая асинхронная операция может возвращать WS_S_ASYNC, указывающее, что будет вызван обратный вызов, или любой другой код успешного или неудачного вызова, в этом случае обратный вызов не будет вызываться. Операция должна быть подготовлена к принятию WS_ASYNC_CONTEXT NULL , указывающей, что вызывающий объект запрашивает синхронное выполнение операции. Он также должен гарантировать, что обратный вызов вызывается соответствующим образом. В сложных асинхронных операциях WsAsyncExecute упрощает эти сведения.

WsAsyncExecute работает путем вызова определяемого пользователем обратного вызова, который может инициировать асинхронную операцию и указывать функцию, которая будет вызываться после завершения асинхронной операции. Эта последовательность продолжается до тех пор, пока обратный вызов не настроит другую функцию для вызова. На этом этапе обратный вызов, указанный WS_ASYNC_CONTEXT, будет вызываться, если какая-либо из операций выполняется асинхронно.

Параметр WS_ASYNC_STATE используется WsAsyncExecute для поддержания своего состояния и не предназначен для инициализации, проверки или использования вызывающей стороны. Однако вызывающий объект должен выделить WS_ASYNC_STATE и обеспечить его работоспособность в течение всей асинхронной операции. После завершения асинхронной операции можно повторно использовать WS_ASYNC_STATE .

В примерах AsyncAdd3ExplicitExample и AsyncAdd3ImplicitExample демонстрируется реализация одной и той же асинхронной функции вручную с помощью WsAsyncExecute.

Требования

   
Минимальная версия клиента Windows 7 [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 R2 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header webservices.h
Библиотека WebServices.lib
DLL WebServices.dll