estructura RPC_CALL_ATTRIBUTES_V2_A (rpcasync.h)

La estructura RPC_CALL_ATTRIBUTES_V2 proporciona parámetros a la función RpcServerInqCallAttributes . La versión 2 especifica la compatibilidad con las direcciones locales y los identificadores de proceso de cliente.

Sintaxis

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;

Miembros

Version

Versión de la estructura RPC_CALL_ATTRIBUTES . Para esta estructura, este valor debe establecerse en 2.

Flags

Marcas de máscara de bits que indican qué miembros de esta estructura se deben rellenar mediante la llamada a RpcServerInqCallAttributes a los que se pasó esta estructura.

Valor Significado
RPC_QUERY_SERVER_PRINCIPAL_NAME
Indica que RpcServerInqCallAttributes debe rellenar el miembro ServerPrincipalName de esta estructura.
RPC_QUERY_CLIENT_PRINCIPAL_NAME
Indica que RpcServerInqCallAttributes debe rellenar el miembro ClientPrincipalName de esta estructura.
RPC_QUERY_CALL_LOCAL_ADDRESS
Indica que RpcServerInqCallAttributes debe rellenar el miembro CallLocalAddress de esta estructura.
RPC_QUERY_CLIENT_PID
Indica que RpcServerInqCallAttributes debe rellenar el miembro ClientPID de esta estructura. Esta marca solo se admite para la secuencia del protocolo ncalrpc.

ServerPrincipalNameBufferLength

Longitud de ServerPrincipalName, en bytes. Si no es suficiente, ServerPrincipalName no cambia y ServerPrincipalNameBufferLength indica la longitud del búfer necesaria, incluido el carácter NULL de terminación, y se devuelve ERROR_MORE_DATA. Si ServerPrincipalNameBufferLength es más largo de lo necesario, al devolverlo se establece en la longitud real utilizada, en bytes, incluido el carácter NULL de terminación. Vea la sección Comentarios.

Si la secuencia de protocolo no admite la recuperación de un nombre principal del servidor, ServerPrincipalNameBufferLength se establece en cero a cambio y el búfer señalado por ServerPrincipalName no está modificado. Windows XP: Solo el grupo de secuencias de protocolos ncacn_* admite la recuperación del nombre principal del servidor.

Si no se especifica la marca RPC_QUERY_SERVER_PRINCIPAL_NAME, se omite ServerPrincipalNameBufferLength . Si ServerPrincipalNameBufferLength es distinto de cero y ServerPrincipalName es NULL, se devuelve ERROR_INVALID_PARAMETER.

ServerPrincipalName

Puntero al nombre principal del servidor, si se solicita en Marcas y es compatible con la secuencia de protocolo. Tras cualquier valor devuelto distinto de RPC_S_OK o ERROR_MORE_DATA, el contenido de ServerPrincipalName no está definido y puede haber sido modificado por RPC.

ClientPrincipalNameBufferLength

Longitud del búfer al que apunta ClientPrincipalName, en bytes. Si no es suficiente, ClientPrincipalName no cambia y ClientPrincipalNameBufferLength indica la longitud del búfer necesaria, incluido el carácter NULL de terminación, y se devuelve ERROR_MORE_DATA. Si ClientPrincipalNameBufferLength es más largo de lo necesario, al devolverlo se establece en la longitud real utilizada, en bytes, incluido el carácter NULL de terminación.

Si la secuencia de protocolo no admite la recuperación de un nombre principal de cliente, ClientPrincipalNameBufferLength se establece en cero a cambio y el búfer señalado por ClientPrincipalName no está modificado. Windows XP: Solo la secuencia de protocolo ncalrpc admite la recuperación del nombre principal del cliente.

Si no se especifica la marca RPC_QUERY_CLIENT_PRINCIPAL_NAME, se omite ClientPrincipalNameBufferLength . Si ClientPrincipalNameBufferLength es distinto de cero y ClientPrincipalName es NULL, se devuelve ERROR_INVALID_PARAMETER.

ClientPrincipalName

Puntero al nombre principal del cliente, si se solicita en el miembro Flags y es compatible con la secuencia de protocolo. Tras cualquier valor devuelto distinto de RPC_S_OK o ERROR_MORE_DATA, el contenido de ClientPrincipalName no está definido y puede haber sido modificado por RPC.

AuthenticationLevel

Nivel de autenticación de la llamada. Consulte Constantes de nivel de autenticación para conocer los niveles de autenticación admitidos por RPC.

AuthenticationService

Servicio de autenticación o proveedor de seguridad, que se usa para realizar la llamada a procedimiento remoto.

NullSession

Especifica si se usa una sesión Null . Cero indica que la llamada no llega a través de una sesión Null ; cualquier otro valor indica una sesión Null .

KernelModeCaller

ProtocolSequence

Constante que indica la secuencia de protocolo en la que se realizó la llamada.

IsClientLocal

Valor de enumeración RpcCallClientLocality que indica la localidad del cliente (local, remota o desconocida).

ClientPID

Identificador que contiene el identificador de proceso del cliente que realiza la llamada. Este campo solo se admite para la secuencia del protocolo ncalrpc y solo se rellena cuando se especifica RPC_QUERY_CLIENT_PID en el parámetro Flags .

CallStatus

Campo de bits que especifica el estado de la llamada RPC.

Valor Significado
RPC_CALL_STATUS_IN_PROGRESS
0x01
La llamada está en curso.
RPC_CALL_STATUS_CANCELLED
0x02
Se canceló la llamada.
RPC_CALL_STATUS_DISCONNECTED
0x03
El cliente se ha desconectado.

CallType

Valor de enumeración RpcCallType que indica el tipo de la llamada RPC.

CallLocalAddress

Puntero a una estructura de RPC_CALL_LOCAL_ADDRESS que contiene información al servidor sobre la dirección local en la que se realizó la llamada.

Este campo no debe ser NULL si RPC_QUERY_CALL_LOCAL_ADDRESS se especifica en Marcas; De lo contrario, se devuelve RPC_S_INVALID_ARG.

Si el búfer proporcionado por la aplicación no es suficiente, RpcServerInqCallAttributes devuelve ERROR_MORE_DATA.

OpNum

Valor de número de operación asociado a la llamada en el archivo IDL correspondiente.

InterfaceUuid

UuID de interfaz en la que se realiza la llamada.

Comentarios

La estructura RPC_CALL_ATTRIBUTES usa un esquema de control de versiones para habilitar la función RpcServerInqCallAttributes para incorporar nuevas funcionalidades sin tener que introducir nuevas funciones con identificadores de sufijo. Por ejemplo, una segunda versión del RPC_CALL_ATTRIBUTES, identificada con un #define simple en el encabezado, puede agregar nuevos miembros para facilitar la nueva funcionalidad integrada en versiones futuras de la función RpcServerInqCallAttributes , sin tener que liberar una función alternativa correspondiente.

El miembro Version indica la versión de la estructura de RPC_CALL_ATTRIBUTES (actualmente RPC_CALL_ATTRIBUTES_V1 o RPC_CALL_ATTRIBUTES_V2) que usa la aplicación que realiza la llamada. Esta identificación permite que el tiempo de ejecución de RPC proporcione compatibilidad con versiones anteriores para las aplicaciones que no usan la versión más actual de la estructura.

Hasta que finalice el proceso, ClientPID identifica de forma única ese proceso en el cliente. Cuando finaliza el proceso, los nuevos procesos pueden usar el identificador de proceso especificado por ClientPID .

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Encabezado rpcasync.h (incluir Rpc.h)

Consulte también

RpcServerInqCallAttributes