RPC_CALL_ATTRIBUTES_V2_A結構 (rpcasync.h)
RPC_CALL_ATTRIBUTES_V2 結構會提供 RpcServerInqCallAttributes 函式的參數。 第 2 版會指定本機位址和客戶端進程標識碼的支援。
語法
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;
成員
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
如果 旗 標成員中要求且通訊協議順序支援,則為客戶端主體名稱的指標。 在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) |