Condividi tramite


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
RPC_QUERY_SERVER_PRINCIPAL_NAME
Indica che RpcServerInqCallAttributes deve popolare il membro ServerPrincipalName di questa struttura.
RPC_QUERY_CLIENT_PRINCIPAL_NAME
Indica che RpcServerInqCallAttributes deve popolare il membro ClientPrincipalName di questa struttura.
RPC_QUERY_CALL_LOCAL_ADDRESS
Indica che RpcServerInqCallAttributes deve popolare il membro CallLocalAddress di questa struttura.
RPC_QUERY_CLIENT_PID
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
RPC_CALL_STATUS_IN_PROGRESS
0x01
La chiamata è in corso.
RPC_CALL_STATUS_CANCELLED
0x02
La chiamata è stata annullata.
RPC_CALL_STATUS_DISCONNECTED
0x03
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)

Vedi anche

RpcServerInqCallAttributes