Поделиться через


структура RPC_ASYNC_STATE (rpcasync.h)

Структура RPC_ASYNC_STATE содержит состояние асинхронного вызова удаленной процедуры. RPC_ASYNC_STATE — это дескриптор этой структуры, используемый для ожидания, запроса, ответа на асинхронные вызовы или отмены.

Синтаксис

typedef struct _RPC_ASYNC_STATE {
  unsigned int                Size;
  unsigned long               Signature;
  long                        Lock;
  unsigned long               Flags;
  void                        *StubInfo;
  void                        *UserInfo;
  void                        *RuntimeInfo;
  RPC_ASYNC_EVENT             Event;
  RPC_NOTIFICATION_TYPES      NotificationType;
  RPC_ASYNC_NOTIFICATION_INFO u;
  LONG_PTR                    Reserved[4];
} RPC_ASYNC_STATE, *PRPC_ASYNC_STATE;

Члены

Size

Размер этой структуры в байтах. Среда задает этот член при вызове RpcAsyncInitializeHandle . Не изменяйте этот элемент.

Signature

Среда выполнения задает этот элемент при вызове RpcAsyncInitializeHandle . Не изменяйте этот элемент.

Lock

Среда выполнения задает этот элемент при вызове RpcAsyncInitializeHandle . Не изменяйте этот элемент.

Flags

Для элемента flags можно задать следующие значения.

Константа Значение
RPC_C_NOTIFY_ON_SEND_COMPLETE
Публикует сообщение уведомления после завершения асинхронной операции.
 

Эти флаги используются с каналами DCE, которые позволяют приложениям отправлять или получать данные в нескольких блоках. Программы могут отправлять непрерывный поток данных или ждать передачи каждого блока перед отправкой следующего блока. Если он не ожидает, библиотека времени выполнения RPC будет буферировать выходные данные до тех пор, пока они не будут отправлены. После завершения передачи данных библиотека RPC отправляет приложению уведомление. Если приложение указывает флаг RPC_C_NOTIFY_ON_SEND_COMPLETE, библиотека RPC отправляет ему член перечисления RPC_NOTIFICATION_TYPES после завершения каждой операции отправки.

StubInfo

Зарезервировано для использования заглушками. Не используйте этот элемент.

UserInfo

Используйте этот элемент для всех сведений о приложении, которые вы хотите отслеживать в этой структуре.

RuntimeInfo

Зарезервировано для использования средой выполнения RPC. Не используйте этот элемент.

Event

Тип произошедшего события. Среда выполнения RPC задает это поле как член перечисления RPC_ASYNC_EVENT .

NotificationType

Тип уведомления, которое должно использоваться во время выполнения RPC для уведомления клиента о возникновении события, например о завершении вызова или завершении события.

Значение Значение
RpcNotificationTypeNone
Уведомление не указано; RPC_ASYNC_NOTIFICATION_INFO не инициализирована.
RpcNotificationTypeEvent
Механизм уведомления — это событие Windows.
RpcNotificationTypeApc
Механизм уведомления — это вызов асинхронной процедуры Windows.
RpcNotificationTypeIoc
Механизм уведомления — это порт завершения ввода-вывода.
RpcNotificationTypeHwnd
Механизм уведомления — это системное сообщение Windows.

Windows Server 2003 или более поздней версии: Уведомление через HWND не рекомендуется. Не используйте это значение.

RpcNotificationTypeCallback
Механизм уведомления — это обратный вызов функции.

u

Содержит сведения об асинхронном уведомлении, отформатированные для типа механизма, указанного в NotificationType.

Примечание До Windows Vista этот элемент содержал конкретный синтаксис объединения, который в настоящее время определяется RPC_ASYNC_NOTIFICATION_INFO объединением.
 

Reserved[4]

Зарезервировано для совместимости с будущими версиями, если таковые есть. Не используйте этот элемент.

Комментарии

Клиент выделяет пространство для структуры RPC_ASYNC_STATE и связанного дескриптора и вызывает RpcAsyncInitializeHandle для инициализации структуры. После успешной инициализации структуры средой выполнения клиент инициализирует NotificationType и именно одну из следующих структур в RPC_ASYNC_NOTIFICATION_INFO объединении: APC для вызова асинхронной процедуры Windows, IOC для порта завершения ввода-вывода, HWND для системного сообщения Windows или hEvent для события Windows. Если выбранным методом уведомления является RpcNotificationTypeNone, инициализировать поле объединения не требуется. Клиент RPC также может инициализировать поле UserInfo .

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Верхняя часть rpcasync.h (включая Rpc.h)

См. также раздел

Асинхронный RPC

RpcAsyncAbortCall

RpcAsyncCancelCall

RpcAsyncCompleteCall

RpcAsyncGetCallHandle

RpcAsyncGetCallStatus

RpcAsyncInitializeHandle

RpcServerTestCancel