IDebugHostType::GetBitField メソッド (dbgmodel.h)
データ構造体の特定のメンバーがビットフィールド (ULONG MyBits:8 など) の場合、フィールドの型情報にはビットフィールドの配置に関する情報が含まれます。 GetBitField メソッドを使用して、その情報を取得できます。 このメソッドは、ビットフィールドではない任意の型で失敗します。 これがメソッドが失敗する唯一の理由です。 このメソッドを呼び出し、成功/失敗を確認するだけで、ビット フィールドと非ビット フィールドを区別できます。
特定の型がビットフィールドである場合、フィールドの位置は半開きセット (lsbOfField + lengthOfField : lsbOfField) によって定義されます。
構文
HRESULT GetBitField(
ULONG *lsbOfField,
ULONG *lengthOfField
);
パラメーター
lsbOfField
フィールドの最下位ビットを示します (0 は、格納型の最下位ビットとして定義されます)。 bit フィールドは、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 |