Partager via


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
RPC_QUERY_SERVER_PRINCIPAL_NAME
Indique que RpcServerInqCallAttributes doit remplir le membre ServerPrincipalName de cette structure.
RPC_QUERY_CLIENT_PRINCIPAL_NAME
Indique que RpcServerInqCallAttributes doit remplir le membre ClientPrincipalName de cette structure.
RPC_QUERY_CALL_LOCAL_ADDRESS
Indique que RpcServerInqCallAttributes doit remplir le membre CallLocalAddress de cette structure.
RPC_QUERY_CLIENT_PID
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
RPC_CALL_STATUS_IN_PROGRESS
0x01
L’appel est en cours.
RPC_CALL_STATUS_CANCELLED
0x02
L’appel a été annulé.
RPC_CALL_STATUS_DISCONNECTED
0x03
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)

Voir aussi

RpcServerInqCallAttributes