RPC_CALL_ATTRIBUTES_V2_A structure (rpcasync.h)
La structure RPC_CALL_ATTRIBUTES_V2 fournit des paramètres à la fonction RpcServerInqCallAttributes . La version 2 spécifie la prise en charge des adresses locales et des ID de processus client.
Syntaxe
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;
Membres
Version
Version de la structure RPC_CALL_ATTRIBUTES . Pour cette structure, cette valeur doit être définie sur 2.
Flags
Indicateurs de masque de bits qui indiquent quels membres de cette structure doivent être remplis par l’appel à RpcServerInqCallAttributes auquel cette structure a été passée.
Valeur | Signification |
---|---|
|
Indique que RpcServerInqCallAttributes doit remplir le membre ServerPrincipalName de cette structure. |
|
Indique que RpcServerInqCallAttributes doit remplir le membre ClientPrincipalName de cette structure. |
|
Indique que RpcServerInqCallAttributes doit remplir le membre CallLocalAddress de cette structure. |
|
Indique que RpcServerInqCallAttributes doit remplir le membre ClientPID de cette structure. Cet indicateur est uniquement pris en charge pour la séquence de protocole ncalrpc. |
ServerPrincipalNameBufferLength
Longueur de ServerPrincipalName, en octets. En cas d’insuffisance, ServerPrincipalName est inchangé, et ServerPrincipalNameBufferLength indique la longueur de mémoire tampon requise, y compris le caractère NULL de fin, et ERROR_MORE_DATA est retourné. Si ServerPrincipalNameBufferLength est plus long que nécessaire, lors du retour, il est défini sur la longueur réelle utilisée, en octets, y compris le caractère NULL de fin. Consultez la section Notes.
Si la séquence de protocole ne prend pas en charge la récupération d’un nom de principal de serveur, ServerPrincipalNameBufferLength est défini sur zéro au retour, et la mémoire tampon pointée par ServerPrincipalName n’est pas modifiée. Windows XP : Seul le groupe ncacn_* de séquences de protocole prend en charge la récupération du nom du principal du serveur.
Si l’indicateur RPC_QUERY_SERVER_PRINCIPAL_NAME n’est pas spécifié, ServerPrincipalNameBufferLength est ignoré. Si ServerPrincipalNameBufferLength est différent de zéro et Que ServerPrincipalName a la valeur NULL, ERROR_INVALID_PARAMETER est retourné.
ServerPrincipalName
Pointeur vers le nom du principal du serveur, si demandé dans Indicateurs et pris en charge par la séquence de protocole. Sur toute valeur de retour autre que RPC_S_OK ou ERROR_MORE_DATA, le contenu de ServerPrincipalName n’est pas défini et peut avoir été modifié par RPC.
ClientPrincipalNameBufferLength
Longueur de la mémoire tampon pointée par ClientPrincipalName, en octets. En cas d’insuffisance, ClientPrincipalName est inchangé, et ClientPrincipalNameBufferLength indique la longueur de mémoire tampon requise, y compris le caractère NULL de fin, et ERROR_MORE_DATA est retourné. Si ClientPrincipalNameBufferLength est plus long que nécessaire, lors du retour, il est défini sur la longueur réelle utilisée, en octets, y compris le caractère NULL de fin.
Si la séquence de protocole ne prend pas en charge la récupération d’un nom de principal client, ClientPrincipalNameBufferLength a la valeur zéro au retour, et la mémoire tampon pointée par ClientPrincipalName n’est pas modifiée. Windows XP : Seule la séquence de protocole ncalrpc prend en charge la récupération du nom du principal client.
Si l’indicateur RPC_QUERY_CLIENT_PRINCIPAL_NAME n’est pas spécifié, ClientPrincipalNameBufferLength est ignoré. Si ClientPrincipalNameBufferLength est différent de zéro et Que ClientPrincipalName a la valeur NULL, ERROR_INVALID_PARAMETER est retourné.
ClientPrincipalName
Pointeur vers le nom du principal client, si demandé dans le membre Flags et pris en charge par la séquence de protocole. Sur toute valeur de retour autre que RPC_S_OK ou ERROR_MORE_DATA, le contenu de ClientPrincipalName n’est pas défini et peut avoir été modifié par RPC.
AuthenticationLevel
Niveau d’authentification pour l’appel. Consultez Constantes de niveau d’authentification pour les niveaux d’authentification pris en charge par RPC.
AuthenticationService
Service d’authentification, ou fournisseur de sécurité, utilisé pour effectuer l’appel de procédure distante.
NullSession
Spécifie si une session Null est utilisée. Zéro indique que l’appel n’arrive pas sur une session Null ; toute autre valeur indique une session Null .
KernelModeCaller
ProtocolSequence
Constante qui indique la séquence de protocole sur laquelle l’appel a été effectué.
IsClientLocal
Valeur d’énumération RpcCallClientLocality qui indique la localité du client (local, distant ou inconnu).
ClientPID
Handle qui contient l’ID de processus du client appelant. Ce champ est uniquement pris en charge pour la séquence de protocole ncalrpc et est rempli uniquement lorsque RPC_QUERY_CLIENT_PID est spécifié dans le paramètre Flags .
CallStatus
Champ bit qui spécifie le status de l’appel RPC.
Valeur | Signification |
---|---|
|
L’appel est en cours. |
|
L’appel a été annulé. |
|
Le client s’est déconnecté. |
CallType
Valeur d’énumération RpcCallType qui indique le type de l’appel RPC.
CallLocalAddress
Pointeur vers une structure RPC_CALL_LOCAL_ADDRESS qui contient des informations sur le serveur sur l’adresse locale sur laquelle l’appel a été effectué.
Ce champ ne doit pas être NULL si RPC_QUERY_CALL_LOCAL_ADDRESS est spécifié dans Indicateurs ; sinon, RPC_S_INVALID_ARG est retourné.
Si la mémoire tampon fournie par l’application est insuffisante, RpcServerInqCallAttributes retourne ERROR_MORE_DATA.
OpNum
Valeur opnum associée à l’appel dans le fichier IDL correspondant.
InterfaceUuid
UUID d’interface sur lequel l’appel est effectué.
Remarques
La structure RPC_CALL_ATTRIBUTES utilise un schéma de contrôle de version pour permettre à la fonction RpcServerInqCallAttributes d’incorporer de nouvelles fonctionnalités sans avoir à introduire de nouvelles fonctions avec des identificateurs de suffixe. Par exemple, une deuxième version de l’RPC_CALL_ATTRIBUTES, identifiée avec une simple #define dans l’en-tête, peut ajouter de nouveaux membres pour faciliter les nouvelles fonctionnalités intégrées aux futures versions de la fonction RpcServerInqCallAttributes , sans avoir à libérer une autre fonction correspondante.
Le membre Version indique la version de la structure RPC_CALL_ATTRIBUTES (actuellement RPC_CALL_ATTRIBUTES_V1 ou RPC_CALL_ATTRIBUTES_V2) utilisée par l’application appelante. Cette identification permet au moment de l’exécution rpc de fournir une compatibilité descendante pour les applications qui n’utilisent pas la version la plus récente de la structure.
Tant que le processus n’est pas terminé, ClientPID identifie ce processus de manière unique sur le client. Lorsque le processus s’arrête, l’ID de processus spécifié par ClientPID peut être utilisé par les nouveaux processus.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2008 [applications de bureau uniquement] |
En-tête | rpcasync.h (inclure Rpc.h) |