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 已傳遞至此結構。
值 | 意義 |
---|---|
|
指出 RpcServerInqCallAttributes 應該填入這個結構的 ServerPrincipalName 成員。 |
|
指出 RpcServerInqCallAttributes 應該填入這個結構的 ClientPrincipalName 成員。 |
|
指出 RpcServerInqCallAttributes 應該填入這個結構的 CallLocalAddress 成員。 |
|
指出 RpcServerInqCallAttributes 應該填入這個結構的 ClientPID 成員。 只有 ncalrpc 通訊協定序列才支援此旗標。 |
ServerPrincipalNameBufferLength
ServerPrincipalName 的長度,以位元組為單位。 如果不足, ServerPrincipalName 會保持不變,而 ServerPrincipalNameBufferLength 表示必要的緩衝區長度,包括終止 NULL 字元,並傳回ERROR_MORE_DATA。 如果 ServerPrincipalNameBufferLength 超過必要時間,則會在傳回時設定為實際使用的長度,以位元組為單位,包括終止 NULL 字元。 請參閱<備註>。
如果通訊協定序列不支援擷取伺服器主體名稱, ServerPrincipalNameBufferLength 會在傳回時設定為零,而且 ServerPrincipalName 所指向的緩衝區未修改。 Windowsxp: 只有通訊協定序列 的ncacn_* 群組支援擷取伺服器主體名稱。
如果未指定RPC_QUERY_SERVER_PRINCIPAL_NAME旗標, 則會忽略 ServerPrincipalNameBufferLength 。 如果 ServerPrincipalNameBufferLength 為非零, 且 ServerPrincipalName 為 NULL,則會傳回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 為非零, 且 ClientPrincipalName 為 NULL,則會傳回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 呼叫狀態的位欄位。
值 | 意義 |
---|---|
|
呼叫正在進行中。 |
|
呼叫已取消。 |
|
用戶端已中斷連線。 |
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) |