struttura RPC_CALL_ATTRIBUTES_V2_A (rpcasync.h)
La struttura RPC_CALL_ATTRIBUTES_V2 fornisce parametri alla funzione RpcServerInqCallAttributes . La versione 2 specifica il supporto per gli indirizzi locali e gli ID processo client.
Sintassi
typedef struct tagRPC_CALL_ATTRIBUTES_V2_A {
unsigned int Version;
unsigned long Flags;
unsigned long ServerPrincipalNameBufferLength;
unsigned char *ServerPrincipalName;
unsigned long ClientPrincipalNameBufferLength;
unsigned char *ClientPrincipalName;
unsigned long AuthenticationLevel;
unsigned long AuthenticationService;
BOOL NullSession;
BOOL KernelModeCaller;
unsigned long ProtocolSequence;
unsigned long IsClientLocal;
HANDLE ClientPID;
unsigned long CallStatus;
RpcCallType CallType;
RPC_CALL_LOCAL_ADDRESS_V1 *CallLocalAddress;
unsigned short OpNum;
UUID InterfaceUuid;
} RPC_CALL_ATTRIBUTES_V2_A;
Members
Version
Versione della struttura RPC_CALL_ATTRIBUTES . Per questa struttura, questo valore deve essere impostato su 2.
Flags
Flag mascherati di bit che indicano quali membri di questa struttura devono essere popolati dalla chiamata a RpcServerInqCallAttributes a cui è stata passata questa struttura.
Valore | Significato |
---|---|
|
Indica che RpcServerInqCallAttributes deve popolare il membro ServerPrincipalName di questa struttura. |
|
Indica che RpcServerInqCallAttributes deve popolare il membro ClientPrincipalName di questa struttura. |
|
Indica che RpcServerInqCallAttributes deve popolare il membro CallLocalAddress di questa struttura. |
|
Indica che RpcServerInqCallAttributes deve popolare il membro ClientPID di questa struttura. Questo flag è supportato solo per la sequenza di protocollo ncalrpc. |
ServerPrincipalNameBufferLength
Lunghezza di ServerPrincipalName, in byte. Se non è sufficiente, ServerPrincipalName rimane invariato e ServerPrincipalNameBufferLength indica la lunghezza del buffer necessaria, incluso il carattere NULL di terminazione e viene restituito ERROR_MORE_DATA. Se ServerPrincipalNameBufferLength è più lungo del necessario, al momento della restituzione viene impostato sulla lunghezza effettiva utilizzata, in byte, incluso il carattere NULL di terminazione. Vedere la sezione Osservazioni.
Se la sequenza di protocollo non supporta il recupero di un nome dell'entità server, ServerPrincipalNameBufferLength viene impostato su zero in caso di restituzione e il buffer a cui punta ServerPrincipalName non viene modificato. Windows XP: Solo il gruppo di sequenze di protocolli ncacn_* supporta il recupero del nome dell'entità server.
Se il flag RPC_QUERY_SERVER_PRINCIPAL_NAME non viene specificato, ServerPrincipalNameBufferLength viene ignorato. Se ServerPrincipalNameBufferLength è diverso da zero e ServerPrincipalName è NULL, viene restituito ERROR_INVALID_PARAMETER.
ServerPrincipalName
Puntatore al nome dell'entità server, se richiesto in Flag e supportato dalla sequenza di protocollo. Dopo qualsiasi valore restituito diverso da RPC_S_OK o ERROR_MORE_DATA, il contenuto di ServerPrincipalName non è definito e potrebbe essere stato modificato da RPC.
ClientPrincipalNameBufferLength
Lunghezza del buffer a cui punta ClientPrincipalName, in byte. Se non è sufficiente, ClientPrincipalName è invariato e ClientPrincipalNameBufferLength indica la lunghezza del buffer necessaria, incluso il carattere NULL di terminazione, e ERROR_MORE_DATA viene restituito. Se ClientPrincipalNameBufferLength è più lungo del necessario, al momento della restituzione viene impostato sulla lunghezza effettiva utilizzata, in byte, incluso il carattere NULL di terminazione.
Se la sequenza di protocollo non supporta il recupero di un nome dell'entità client, ClientPrincipalNameBufferLength viene impostato su zero in caso di restituzione e il buffer a cui punta ClientPrincipalName non viene modificato. Windows XP: Solo la sequenza di protocollo ncalrpc supporta il recupero del nome dell'entità client.
Se il flag RPC_QUERY_CLIENT_PRINCIPAL_NAME non viene specificato, ClientPrincipalNameBufferLength viene ignorato. Se ClientPrincipalNameBufferLength è diverso da zero e ClientPrincipalName è NULL, viene restituito ERROR_INVALID_PARAMETER.
ClientPrincipalName
Puntatore al nome dell'entità client, se richiesto nel membro Flags e supportato dalla sequenza di protocollo. Dopo qualsiasi valore restituito diverso da RPC_S_OK o ERROR_MORE_DATA, il contenuto di ClientPrincipalName non è definito e potrebbe essere stato modificato da RPC.
AuthenticationLevel
Livello di autenticazione per la chiamata. Vedere Costanti a livello di autenticazione per i livelli di autenticazione supportati da RPC.
AuthenticationService
Servizio di autenticazione, o provider di sicurezza, usato per effettuare la chiamata alla procedura remota.
NullSession
Specifica se viene utilizzata una sessione Null . Zero indica che la chiamata non viene eseguita su una sessione Null ; qualsiasi altro valore indica una sessione Null .
KernelModeCaller
ProtocolSequence
Costante che indica la sequenza di protocollo su cui è stata effettuata la chiamata.
IsClientLocal
Valore di enumerazione RpcCallClientLocality che indica la località del client (locale, remoto o sconosciuto).
ClientPID
Handle che contiene l'ID processo del client chiamante. Questo campo è supportato solo per la sequenza di protocollo ncalrpc e viene popolato solo quando RPC_QUERY_CLIENT_PID viene specificato nel parametro Flags .
CallStatus
Campo bit che specifica lo stato della chiamata RPC.
Valore | Significato |
---|---|
|
La chiamata è in corso. |
|
La chiamata è stata annullata. |
|
Il client è disconnesso. |
CallType
Valore di enumerazione RpcCallType che indica il tipo della chiamata RPC.
CallLocalAddress
Puntatore a una struttura RPC_CALL_LOCAL_ADDRESS che contiene informazioni sul server sull'indirizzo locale in cui è stata effettuata la chiamata.
Questo campo non deve essere NULL se RPC_QUERY_CALL_LOCAL_ADDRESS è specificato in Flags; in caso contrario, viene restituito RPC_S_INVALID_ARG.
Se il buffer fornito dall'applicazione non è sufficiente, RpcServerInqCallAttributes restituisce ERROR_MORE_DATA.
OpNum
Valore opnum associato alla chiamata nel file IDL corrispondente.
InterfaceUuid
UUID dell'interfaccia in cui viene effettuata la chiamata.
Commenti
La struttura RPC_CALL_ATTRIBUTES usa uno schema di controllo delle versioni per consentire alla funzione RpcServerInqCallAttributes di incorporare nuove funzionalità senza dover introdurre nuove funzioni con identificatori di suffisso. Ad esempio, una seconda versione del RPC_CALL_ATTRIBUTES, identificata con un semplice #define nell'intestazione, può aggiungere nuovi membri per facilitare nuove funzionalità incorporate nelle versioni future della funzione RpcServerInqCallAttributes , senza dover rilasciare una funzione alternativa corrispondente.
Il membro Version indica la versione della struttura RPC_CALL_ATTRIBUTES (attualmente RPC_CALL_ATTRIBUTES_V1 o RPC_CALL_ATTRIBUTES_V2) usata dall'applicazione chiamante. Questa identificazione consente al runtime RPC di garantire la compatibilità con le versioni precedenti per le applicazioni che non usano la versione più recente della struttura.
Fino al termine del processo, ClientPID identifica in modo univoco il processo nel client. Al termine del processo, l'ID del processo specificato da ClientPID può essere usato da nuovi processi.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2008 [solo app desktop] |
Intestazione | rpcasync.h (include Rpc.h) |