IDebugHostType::GetBitField 方法 (dbgmodel.h)

如果數據結構的指定成員是位字段 (例如:ULONG MyBits:8) ,則字段的類型資訊會隨附位字段位置的相關信息。 GetBitField 方法可用來擷取該資訊。 此方法會在不是位欄位的任何類型上失敗。 這是方法將失敗的唯一原因。 只要呼叫這個方法並查看成功/失敗就足以區分位字段與非位字段。

如果指定的類型確實是位字段,字段位置是由半開啟集 (lsbOfField + lengthOfField 所定義: lsbOfField]

語法

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

參數

lsbOfField

表示欄位 (的最小有效位,其中 0 定義為包含類型) 的最低有效位。 位欄位的定義是根據 lengthOfField 自變數所指定的長度,從這個點利用位到包含類型的最大有效位。

lengthOfField

欄位中的位數目。 這至少會是一個,而且不能超過包含型別中的位數目。 位欄位元元會根據此處傳回的位數,從 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

另請參閱

IDebugHostType 介面