ポインター (RPC)
共通ポインター
共通ポインターは、インターフェイス ポインターとバイトカウント ポインター以外のすべてのものとして定義されます。
説明には、次の 2 つのレイアウトが考えられます。
pointer_type<1> pointer_attributes<1>
simple_type<1> FC_PAD
\- または -
pointer_type<1> pointer_attributes<1>
offset_to_complex_description<2>
最初の形式は、ポインターが単純型へのポインターまたは非初期化文字列ポインターである場合に使用されます。 2 番目の形式は、他のすべての型へのポインターに使用されます。 ポインター属性は、FC_SIMPLE_POINTER フラグを持つ説明レイアウトを示します。
<pointer_type 1> は次のいずれかです。
文字の書式設定 | 説明 |
---|---|
FC_RP | 参照ポインター。 |
FC_UP | 一意のポインター。 |
FC_FP | 完全なポインター。 |
FC_OP | オブジェクト インターフェイス内の一意のポインター。 |
FC_OPを区別する理由はセマンティックです。オブジェクト インターフェイスでは、新しいオブジェクトのマーシャリングを解除して新しいポインター値を割り当てる前に、[in,out] ポインターを解放する必要があります。
<Pointer_attributes 1> には、次の表に示す任意のフラグを指定できます。
属性 | フラグ | 説明 |
---|---|---|
01 | FC_ALLOCATE_ALL_NODES | ポインターは、allocate(all_nodes) 割り当てスキームの一部です。 |
02 | FC_DONT_FREE | allocate(dont_free) ポインター。 |
04 | FC_ALLOCED_ON_STACK | 参照先がスタブのスタックに割り当てられるポインター。 |
08 | FC_SIMPLE_POINTER | 単純型または非対応の準拠文字列へのポインター。 設定されているこのフラグは、上で説明した単純なポインター レイアウトとしてポインター記述のレイアウトを示します。それ以外の場合は、オフセットを持つ記述子形式が示されます。 |
10 | FC_POINTER_DEREF | ポインターの参照先を処理する前に逆参照する必要があるポインター。 |
size_is()、max_is()、length_is()、last_is()、first_is() が適用されているポインターには、適切な型の配列へのポインター (たとえば、size_is() が適用されている場合は準拠配列、size_is() とlength_isが適用されている場合は準拠する配列) へのポインターと同じ書式指定文字列の説明があります。
インターフェイス ポインター
オブジェクト インターフェイス ポインターの書式指定文字列には、対応する IID がコンパイラに認識されているかどうかに応じて、2 つの形式のいずれかがあります。
定数 IID を持つインターフェイス ポインターには、次の説明があります。
FC_IP FC_CONSTANT_IID
iid<16>
iid<16> 部分は、インターフェイス ポインターの実際の IID です。 iid は GUID データ構造と同じ形式で書式指定文字列に書き込まれます。long、short、short、char [8]。
iid_is() が適用されたインターフェイス ポインターの説明は次のとおりです。
FC_IP FC_PAD
iid_description<>
iid_description<> は関連付け記述子であり、 /robust が使用されているかどうかに応じて 4 バイトまたは 6 バイトです。 NdrComputeConformance 関数によって計算される値は、IID ポインターです。
バイト数ポインター
バイト数ポインターは、[byte_count] と呼ばれる特別な最適化属性に関連します。 次の形式が使用されます。
FC_BYTE_COUNT_POINTER
simple_type<1>
byte_count_description<>
–そして–
FC_BYTE_COUNT_POINTER
FC_PAD
byte_count_description<>
pointee_description<>
byte_count_description<> は相関記述子であり、 /robust が使用されているかどうかに応じて 4 バイトまたは 6 バイトです。
pointee_description<> は、ポイント先の種類の説明です。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示