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 の呼び出しによって設定する必要があることを示すビットマスクされたフラグ。

意味
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 は戻り値として 0 に設定され、 ServerPrincipalName が指すバッファーは変更されません。 Windows XP: サーバー プリンシパル名の取得をサポートするのは、プロトコル シーケンスの ncacn_* グループのみです。

RPC_QUERY_SERVER_PRINCIPAL_NAME フラグが指定されていない場合、 ServerPrincipalNameBufferLength は無視されます。 ServerPrincipalNameBufferLength が 0 以外で、ServerPrincipalNameNULL の場合は、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 以外で、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

呼び出し元クライアントのプロセス ID を含むハンドル。 このフィールドは 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

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 を含む)

こちらもご覧ください

RpcServerInqCallAttributes