RPC_CALL_ATTRIBUTES_V2_A 構造体 (rpcasync.h)
RPC_CALL_ATTRIBUTES_V2構造体は、RpcServerInqCallAttributes 関数にパラメーターを提供します。 バージョン 2 では、ローカル アドレスとクライアント プロセス ID のサポートが指定されています。
構文
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 は戻り値として 0 に設定され、 ServerPrincipalName が指すバッファーは変更されません。 Windows XP: サーバー プリンシパル名の取得をサポートするのは、プロトコル シーケンスの ncacn_* グループのみです。
RPC_QUERY_SERVER_PRINCIPAL_NAME フラグが指定されていない場合、 ServerPrincipalNameBufferLength は無視されます。 ServerPrincipalNameBufferLength が 0 以外で、ServerPrincipalName が NULL の場合は、ERROR_INVALID_PARAMETERが返されます。
ServerPrincipalName
Flags で要求され、プロトコル シーケンスでサポートされている場合は、サーバー プリンシパル名へのポインター。 RPC_S_OKまたはERROR_MORE_DATA以外の戻り値の場合、 ServerPrincipalName の内容は未定義であり、RPC によって変更された可能性があります。
ClientPrincipalNameBufferLength
ClientPrincipalName が指すバッファーの長さ (バイト単位)。 不十分な場合、 ClientPrincipalName は変更されず、 ClientPrincipalNameBufferLength は終端 の NULL 文字を含む必要なバッファー長を示し、ERROR_MORE_DATAが返されます。 ClientPrincipalNameBufferLength が必要以上に長い場合は、返されるときに、使用される実際の長さ (終端の NULL 文字を含むバイト単位) に設定されます。
プロトコル シーケンスでクライアント プリンシパル名の取得がサポートされていない場合、 ClientPrincipalNameBufferLength は戻り値として 0 に設定され、 ClientPrincipalName が指すバッファーは変更されません。 Windows XP: ncalrpc プロトコル シーケンスのみがクライアント プリンシパル名の取得をサポートします。
RPC_QUERY_CLIENT_PRINCIPAL_NAME フラグが指定されていない場合、 ClientPrincipalNameBufferLength は無視されます。 ClientPrincipalNameBufferLength が 0 以外で、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
呼び出し元クライアントのプロセス ID を含むハンドル。 このフィールドは ncalrpc プロトコル シーケンスでのみサポートされ、Flags パラメーターでRPC_QUERY_CLIENT_PIDが指定されている場合にのみ設定されます。
CallStatus
RPC 呼び出しの状態を指定するビット フィールド。
値 | 意味 |
---|---|
|
呼び出しが進行中です。 |
|
呼び出しが取り消されました。 |
|
クライアントが切断されました。 |
CallType
RPC 呼び出しの種類を示す RpcCallType 列挙値。
CallLocalAddress
呼び出 し が行われたローカル アドレスに関するサーバーへの情報を含むRPC_CALL_LOCAL_ADDRESS構造体へのポインター。
フラグでRPC_QUERY_CALL_LOCAL_ADDRESSが指定されている場合、このフィールドは NULL にすることはできません。それ以外の場合は、RPC_S_INVALID_ARGが返されます。
アプリケーションによって提供されるバッファーが不十分な場合、 RpcServerInqCallAttributes はERROR_MORE_DATAを返します。
OpNum
対応する IDL ファイル内の呼び出しに関連付けられた opnum 値。
InterfaceUuid
呼び出しが行われるインターフェイス UUID。
注釈
RPC_CALL_ATTRIBUTES構造体では、バージョン管理スキームを使用して、RpcServerInqCallAttributes 関数がサフィックス識別子を持つ新しい関数を導入することなく、新しい機能を組み込むことができます。 たとえば、ヘッダーの単純な #define で識別される 2 番目のバージョンの RPC_CALL_ATTRIBUTESでは、新しいメンバーを追加して、対応する代替関数を解放することなく、将来のバージョンの RpcServerInqCallAttributes 関数に組み込まれる新しい機能を容易にすることができます。
Version メンバーは、呼び出し元のアプリケーションで使用されているRPC_CALL_ATTRIBUTES構造体 (現在はRPC_CALL_ATTRIBUTES_V1またはRPC_CALL_ATTRIBUTES_V2) のバージョンを示します。 この識別により、RPC ランタイムは、最新バージョンの 構造体を使用していないアプリケーションに下位互換性を提供できます。
プロセスが終了するまで、 ClientPID はクライアント でそのプロセスを一意に識別します。 プロセスが終了すると、 ClientPID で指定されたプロセス ID を新しいプロセスで使用できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
Header | rpcasync.h (Rpc.h を含む) |