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.
}
요구 사항
요구 사항 | 값 |
---|---|
헤더 | dbgmodel.h |