struttura RPC_ASYNC_STATE (rpcasync.h)
La struttura RPC_ASYNC_STATE contiene lo stato di una chiamata di procedura remota asincrona. RPC_ASYNC_STATE è un handle per questa struttura, usato per attendere, eseguire query, rispondere o annullare chiamate asincrone.
Sintassi
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;
Members
Size
Dimensioni di questa struttura, in byte. L'ambiente imposta questo membro quando viene chiamato RpcAsyncInitializeHandle . Non modificare questo membro.
Signature
L'ambiente di runtime imposta questo membro quando viene chiamato RpcAsyncInitializeHandle . Non modificare questo membro.
Lock
L'ambiente di runtime imposta questo membro quando viene chiamato RpcAsyncInitializeHandle . Non modificare questo membro.
Flags
Il membro flag può essere impostato sui valori seguenti.
Costante | Significato |
---|---|
|
Invia un messaggio di notifica al completamento dell'operazione asincrona. |
Questi flag vengono usati con pipe DCE, che consentono alle applicazioni di inviare o ricevere dati in più blocchi. I programmi possono inviare un flusso continuo di dati o attendere che ogni blocco venga trasmesso prima di inviare il blocco successivo. Se non attende, la libreria di runtime RPC buffererà l'output fino a quando non può essere inviato. Al termine della trasmissione dei dati, la libreria RPC invia all'applicazione una notifica. Se un'applicazione specifica il flag RPC_C_NOTIFY_ON_SEND_COMPLETE, la libreria RPC lo invia a un membro dell'enumerazione RPC_NOTIFICATION_TYPES dopo aver completato ogni operazione di invio.
StubInfo
Riservato per l'uso da parte degli stub. Non usare questo membro.
UserInfo
Usare questo membro per tutte le informazioni specifiche dell'applicazione da tenere traccia in questa struttura.
RuntimeInfo
Riservato per l'uso dall'ambiente di runtime RPC. Non usare questo membro.
Event
Tipo di evento che si è verificato. L'ambiente di runtime RPC imposta questo campo su un membro dell'enumerazione RPC_ASYNC_EVENT .
NotificationType
Il tipo di notifica del tempo di esecuzione RPC deve essere usato per notificare al client l'occorrenza di un evento, ad esempio il completamento della chiamata o il completamento dell'evento.
Valore | Significato |
---|---|
|
Non è specificata alcuna notifica; RPC_ASYNC_NOTIFICATION_INFO non viene inizializzato. |
|
Il meccanismo di notifica è un evento di Windows. |
|
Il meccanismo di notifica è una chiamata di procedura asincrona di Windows. |
|
Il meccanismo di notifica è una porta di completamento di I/O. |
|
Il meccanismo di notifica è un messaggio di sistema di Windows.
Windows Server 2003 o versione successiva: La notifica tramite HWND è deprecata. Non usare questo valore. |
|
Il meccanismo di notifica è un callback delle funzioni. |
u
Contiene informazioni di notifica asincrone formattate per il tipo di meccanismo specificato in NotificationType.
Reserved[4]
Riservato per la compatibilità con le versioni future, se presenti. Non usare questo membro.
Commenti
Il client alloca spazio per la struttura RPC_ASYNC_STATE e un handle associato e chiama RpcAsyncInitializeHandle per inizializzare la struttura. Dopo aver inizializzato correttamente l'ambiente di runtime, il client inizializza il tipo di notifica e esattamente una delle strutture seguenti nell'unione RPC_ASYNC_NOTIFICATION_INFO : APC per una chiamata di routine asincrona di Windows, IOC per una porta di completamento di I/O, HWND per un messaggio di sistema Windows o hEvent per un evento Windows. Se il metodo di notifica scelto è RpcNotificationTypeNone, non è necessario inizializzare alcun campo dell'unione. Il client RPC può inizializzare anche il campo UserInfo .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Intestazione | rpcasync.h (include Rpc.h) |