共用方式為


RPC_CALL_ATTRIBUTES_V2_W 結構 (rpcasync.h)

RPC_CALL_ATTRIBUTES_V2 結構會提供 RpcServerInqCallAttributes 函式的參數。 第 2 版會指定本機位址和客戶端進程標識碼的支援。

語法

typedef struct tagRPC_CALL_ATTRIBUTES_V2_W {
  unsigned int              Version;
  unsigned long             Flags;
  unsigned long             ServerPrincipalNameBufferLength;
  unsigned short            *ServerPrincipalName;
  unsigned long             ClientPrincipalNameBufferLength;
  unsigned short            *ClientPrincipalName;
  unsigned long             AuthenticationLevel;
  unsigned long             AuthenticationService;
  BOOL                      NullSession;
  BOOL                      KernelModeCaller;
  unsigned long             ProtocolSequence;
  RpcCallClientLocality     IsClientLocal;
  HANDLE                    ClientPID;
  unsigned long             CallStatus;
  RpcCallType               CallType;
  RPC_CALL_LOCAL_ADDRESS_V1 *CallLocalAddress;
  unsigned short            OpNum;
  UUID                      InterfaceUuid;
} RPC_CALL_ATTRIBUTES_V2_W;

成員

Version

RPC_CALL_ATTRIBUTES 結構的版本。 針對這個結構,此值必須設定為 2。

Flags

位掩碼旗標,指出此結構的呼叫應該填入此結構的成員 ,而 RpcServerInqCallAttributes 已傳遞至此結構。

意義
RPC_QUERY_SERVER_PRINCIPAL_NAME
指出 RpcServerInqCallAttributes 應該填入這個結構的 ServerPrincipalName 成員。
RPC_QUERY_CLIENT_PRINCIPAL_NAME
指出 RpcServerInqCallAttributes 應該填入這個結構的 ClientPrincipalName 成員。
RPC_QUERY_CALL_LOCAL_ADDRESS
指出 RpcServerInqCallAttributes 應該填入這個結構的 CallLocalAddress 成員。
RPC_QUERY_CLIENT_PID
指出 RpcServerInqCallAttributes 應該填入這個結構的 ClientPID 成員。 只有 ncalrpc 通訊協定序列才支援此旗標。

ServerPrincipalNameBufferLength

ServerPrincipalName 的長度,以位元組為單位。 如果不足, ServerPrincipalName 會保持不變,而 ServerPrincipalNameBufferLength 表示必要的緩衝區長度,包括終止 NULL 字元,並傳回ERROR_MORE_DATA。 如果 ServerPrincipalNameBufferLength 超過必要時間,則會在傳回時設定為實際使用的長度,以位元組為單位,包括終止 NULL 字元。 請參閱<備註>。

如果通訊協定序列不支援擷取伺服器主體名稱, ServerPrincipalNameBufferLength 會在傳回時設定為零,而且 ServerPrincipalName 所指向的緩衝區未修改。 Windowsxp: 只有通訊協定序列 的ncacn_* 群組支援擷取伺服器主體名稱。

如果未指定RPC_QUERY_SERVER_PRINCIPAL_NAME旗標, 則會忽略 ServerPrincipalNameBufferLength 。 如果 ServerPrincipalNameBufferLength 為非零, 且 ServerPrincipalNameNULL,則會傳回ERROR_INVALID_PARAMETER。

ServerPrincipalName

如果 標中要求且通訊協議順序支援,則為伺服器主體名稱的指標。 在RPC_S_OK或ERROR_MORE_DATA以外的任何傳回值時, ServerPrincipalName 的內容未定義且可能已由 RPC 修改。

ClientPrincipalNameBufferLength

ClientPrincipalName 所指向的緩衝區長度,以位元組為單位。 如果不足, ClientPrincipalName 保持不變, ClientPrincipalNameBufferLength 表示必要的緩衝區長度,包括終止 NULL 字元,並傳回ERROR_MORE_DATA。 如果 ClientPrincipalNameBufferLength 超過必要時間,則會在傳回時設定為實際使用的長度,以位元組為單位,包括終止 的 NULL 字元。

如果通訊協定序列不支援擷取客戶端主體名稱, ClientPrincipalNameBufferLength 會在傳回時設定為零, 且 ClientPrincipalName 所指向的緩衝區未修改。 Windowsxp: 只有 ncalrpc 通訊協定序列支援擷取客戶端主體名稱。

如果未指定RPC_QUERY_CLIENT_PRINCIPAL_NAME旗標, 則會忽略 ClientPrincipalNameBufferLength 。 如果 ClientPrincipalNameBufferLength 為非零, 且 ClientPrincipalNameNULL,則會傳回ERROR_INVALID_PARAMETER。

ClientPrincipalName

如果 Flags 成員中要求且通訊協定序列支援,則為客戶端主體名稱的指標。 在RPC_S_OK或ERROR_MORE_DATA以外的任何傳回值時, ClientPrincipalName 的內容未定義且可能已由 RPC 修改。

AuthenticationLevel

呼叫的驗證層級。 如需 RPC 支援的驗證層級,請參閱 驗證層級常數

AuthenticationService

用來進行遠端過程調用的驗證服務或安全性提供者。

NullSession

指定是否使用 Null 工作階段。 零表示呼叫未通過 Null 會話;任何其他值表示 Null 工作階段。

KernelModeCaller

ProtocolSequence

常數,表示呼叫的通訊協定序列。

IsClientLocal

RpcCallClientLocality 列舉值,指出用戶端 (本機、遠端或未知) 的地區。

ClientPID

包含呼叫客戶端進程識別碼的句柄。 只有 ncalrpc 通訊協定序列才支援此欄位,而且只有在 Flags 參數中指定RPC_QUERY_CLIENT_PID時,才會填入。

CallStatus

指定 RPC 呼叫狀態的位欄位。

意義
RPC_CALL_STATUS_IN_PROGRESS
0x01
呼叫正在進行中。
RPC_CALL_STATUS_CANCELLED
0x02
呼叫已取消。
RPC_CALL_STATUS_DISCONNECTED
0x03
用戶端已中斷連線。

CallType

RpcCallType 列舉值,指出 RPC 呼叫的類型。

CallLocalAddress

RPC_CALL_LOCAL_ADDRESS 結構的指標,其中包含對伺服器發出呼叫之本機地址的相關信息。

如果在 Flags 中指定RPC_QUERY_CALL_LOCAL_ADDRESS,此字段不得為 NULL;否則會傳回RPC_S_INVALID_ARG。

如果應用程式提供的緩衝區不足, RpcServerInqCallAttributes 會傳回ERROR_MORE_DATA。

OpNum

與對應IDL檔案中呼叫相關聯的opnum值。

InterfaceUuid

呼叫所在的介面 UUID。

備註

RPC_CALL_ATTRIBUTES 結構會使用版本設定配置,讓 RpcServerInqCallAttributes 函式納入新功能,而不需要引進具有後綴標識碼的新函式。 例如,在標頭中使用簡單 #define 識別的第二個RPC_CALL_ATTRIBUTES版本,可以新增成員,以協助未來版本的 RpcServerInqCallAttributes 函式內建的新功能,而不需要釋放對應的替代函式。

Version 成員表示呼叫應用程式目前RPC_CALL_ATTRIBUTES_V1或RPC_CALL_ATTRIBUTES_V2) 所使用的RPC_CALL_ATTRIBUTES (結構版本。 此識別可讓 RPC 執行時間為不使用最新版結構的應用程式提供回溯相容性。

在進程終止之前, ClientPID 會唯一識別用戶端上的該進程。 當進程終止時,新進程可以使用 ClientPID 指定的進程識別碼。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
標頭 rpcasync.h (包含 Rpc.h)

另請參閱

RpcServerInqCallAttributes