次の方法で共有


IDebugHostType2::GetBitField メソッド (dbgmodel.h)

データ構造の特定のメンバーがビットフィールド (ULONG MyBits:8 など) の場合、フィールドの型情報にはビットフィールドの配置に関する情報が含まれます。 GetBitField メソッドを使用して、その情報を取得できます。 このメソッドは、ビットフィールドではない任意の型で失敗します。 これが、メソッドが失敗する唯一の理由です。 このメソッドを呼び出し、成功/失敗を調べることで、ビット フィールドとビット以外のフィールドを区別するだけで十分です。

特定の型がビットフィールドの場合、フィールド位置はハーフ オープン セット (lsbOfField + lengthOfField : lsbOfField]) によって定義されます。

構文

HRESULT GetBitField(
  ULONG *lsbOfField,
  ULONG *lengthOfField
);

パラメーター

lsbOfField

フィールドの最下位ビットを示します (0 は、格納型の最下位ビットとして定義されます)。 ビット フィールドは、lengthOfField 引数で指定された長さに従って、このポイントから包含型の最上位ビットまでのビットを使用するように定義されています。

lengthOfField

フィールド内のビット数。 これは、少なくとも 1 つであり、包含型のビット数以下になります。 このビット フィールドは、lsbOfField 引数で指定されたビットから、ここで返されるビット数に応じて、格納値の最上位ビットに向かって上向きに占有されます。

戻り値

このメソッドは、成功または失敗を示す HRESULT を返します。

備考

サンプル コード

ComPtr<IDebugHostType> spType; /* get the type of a field which is a bitmap */

ULONG lsb;
ULONG length;
if (SUCCEEDED(spType->GetBitField(&lsb, &length)))
{
    // spType refers to a bitfield.  The field is [lsb, lsb + length) in 
    // bit positions.  Were you to read memory at the location/size specified 
    // by an object of this type, you would need to mask off bits at and 
    // above 'lsb + length' and shift right by 'lsb'
    //
    // Note that IModelObject::GetRawObject will automatically do this for you. 
    // So will creating an object with this type spType via CreateTypedObject.
}

必要条件

要件 価値
ヘッダー dbgmodel.h

関連項目

IDebugHostType2 インターフェイス