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.
}

要件

要件
Header dbgmodel.h

こちらもご覧ください

IDebugHostType2 インターフェイス