RPC_ASYNC_NOTIFICATION_INFO union (rpcasync.h)

The RPC_ASYNC_NOTIFICATION_INFO union contains notification information for asynchronous remote procedure calls. This notification information can be configured for I/O completion ports (IOC), Windows asynchronous procedure calls (APC), Windows messaging, and Windows event notification.

Syntax

typedef union _RPC_ASYNC_NOTIFICATION_INFO {
  struct {
    PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;
    HANDLE                      hThread;
  } APC;
  struct {
    HANDLE       hIOPort;
    DWORD        dwNumberOfBytesTransferred;
    DWORD_PTR    dwCompletionKey;
    LPOVERLAPPED lpOverlapped;
  } IOC;
  struct {
    HWND hWnd;
    UINT Msg;
  } HWND;
  HANDLE                      hEvent;
  PKEVENT                     Event;
  PFN_RPCNOTIFICATION_ROUTINE NotificationRoutine;
} RPC_ASYNC_NOTIFICATION_INFO, *PRPC_ASYNC_NOTIFICATION_INFO;

Members

APC

Structure used for Windows asynchronous procedure call (APC) notifications.

APC.NotificationRoutine

Calls the user-defined APC notification routine.

APC.hThread

Handle to the thread on which the notification APC should be posted. A value of zero indicates the current thread.

IOC

Structure used for notification on an I/O completion port.

IOC.hIOPort

Handle to the I/O completion port.

IOC.dwNumberOfBytesTransferred

Set by the RPC client before the asynchronous call is started. When the notification is delivered to the completion port, this value is filled in the location pointed to by the lpNumberOfBytesTransferred parameter of the GetQueuedCompletionStatus function.

IOC.dwCompletionKey

Set by the RPC client before the asynchronous call is started. When the notification is delivered to the completion port, this value is filled in the location pointed to by the lpCompletionKey parameter of the GetQueuedCompletionStatus function.

IOC.lpOverlapped

Set by the RPC client before the asynchronous call is started. When the notification is delivered to the completion port, this value is filled in the location pointed to by the lpOverlapped parameter of the GetQueuedCompletionStatus function.

HWND

Fields used for notification by a Windows message. When the RPC run time posts the message, wParam is zero, and lParam points to the asynchronous handle for the call (the RPC_ASYNC_STATE).

Windows Server 2003 or later:  Notification via the HWND is deprecated. Do not use this member.

HWND.hWnd

Identifies the window to which the message should be posted.

HWND.Msg

Message to be posted.

hEvent

Handle used for notification by an event.

Event

NotificationRoutine

Windows Vista or earlier versions of Windows: COM uses this internally for direct callbacks. Do not use this member.

Windows 7 or later versions of Windows: An optional function pointer to a user-defined notification scheme built on top of RPC call completion. As an example, an application could call SubmitThreadpoolWork from the notification callback.

Note  Making additional RPC calls, blocking, or performing long running work from notification callbacks is strongly discouraged.
 

Remarks

Prior to Windows Vista and earlier versions of Windows, the RPC_ASYNC_NOTIFICATION_INFO union was part of the RPC_ASYNC_STATE structure. Please see the RPC_ASYNC_STATE topic for additional information.

Requirements

Requirement Value
Minimum supported client Windows XP with SP2 [desktop apps only]
Minimum supported server Windows Server 2003 with SP1 [desktop apps only]
Header rpcasync.h (include Rpc.h)

See also

RPC_ASYNC_STATE