структура 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 можно задать следующие значения.
Константа | Значение |
---|---|
|
Публикует сообщение уведомления после завершения асинхронной операции. |
Эти флаги используются с каналами DCE, которые позволяют приложениям отправлять или получать данные в нескольких блоках. Программы могут отправлять непрерывный поток данных или ждать передачи каждого блока перед отправкой следующего блока. Если он не ожидает, библиотека времени выполнения RPC будет буферировать выходные данные до тех пор, пока они не будут отправлены. После завершения передачи данных библиотека RPC отправляет приложению уведомление. Если приложение указывает флаг RPC_C_NOTIFY_ON_SEND_COMPLETE, библиотека RPC отправляет ему член перечисления RPC_NOTIFICATION_TYPES после завершения каждой операции отправки.
StubInfo
Зарезервировано для использования заглушками. Не используйте этот элемент.
UserInfo
Используйте этот элемент для всех сведений о приложении, которые вы хотите отслеживать в этой структуре.
RuntimeInfo
Зарезервировано для использования средой выполнения RPC. Не используйте этот элемент.
Event
Тип произошедшего события. Среда выполнения RPC задает это поле как член перечисления RPC_ASYNC_EVENT .
NotificationType
Тип уведомления, которое должно использоваться во время выполнения RPC для уведомления клиента о возникновении события, например о завершении вызова или завершении события.
Значение | Значение |
---|---|
|
Уведомление не указано; RPC_ASYNC_NOTIFICATION_INFO не инициализирована. |
|
Механизм уведомления — это событие Windows. |
|
Механизм уведомления — это вызов асинхронной процедуры Windows. |
|
Механизм уведомления — это порт завершения ввода-вывода. |
|
Механизм уведомления — это системное сообщение Windows.
Windows Server 2003 или более поздней версии: Уведомление через HWND не рекомендуется. Не используйте это значение. |
|
Механизм уведомления — это обратный вызов функции. |
u
Содержит сведения об асинхронном уведомлении, отформатированные для типа механизма, указанного в NotificationType.
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) |