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 接口