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 |
---|---|
|
Indica que RpcServerInqCallAttributes debe rellenar el miembro ServerPrincipalName de esta estructura. |
|
Indica que RpcServerInqCallAttributes debe rellenar el miembro ClientPrincipalName de esta estructura. |
|
Indica que RpcServerInqCallAttributes debe rellenar el miembro CallLocalAddress de esta estructura. |
|
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 |
---|---|
|
La llamada está en curso. |
|
Se canceló la llamada. |
|
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) |