IDebugHostType2::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.
}
要求
要求 | 值 |
---|---|
Header | dbgmodel.h |