Freigeben über


IDebugHostType3::GetBitField-Methode (dbgmodel.h)

Wenn ein bestimmtes Element einer Datenstruktur ein Bitfeld ist (z. B. ULONG MyBits:8), enthält die Typinformationen für das Feld Informationen zur Bitfeldplatzierung. Die GetBitField-Methode kann verwendet werden, um diese Informationen abzurufen. Diese Methode schlägt für jeden Typ fehl, der kein Bitfeld ist. Dies ist der einzige Grund, warum die Methode fehlschlägt. Das Einfache Aufrufen dieser Methode und das Betrachten von Erfolg/Fehler reicht aus, um ein Bitfeld von einem Nicht-Bit-Feld zu unterscheiden.

Wenn ein bestimmter Typ ein Bitfeld ist, werden die Feldpositionen durch den halb geöffneten Satz definiert (lsbOfField + lengthOfField : lsbOfField].

Syntax

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

Parameter

lsbOfField

Gibt das kleinste signifikante Bit des Felds an (wobei 0 definiert ist, um das am wenigsten signifikante Bit des enthaltenden Typs zu sein). Das Bitfeld wird definiert, um Bits von diesem Punkt bis zum wichtigsten Bit des enthaltenden Typs gemäß der länge zu verwenden, die durch das lengthOfField-Argument angegeben wird.

lengthOfField

Die Anzahl der Bits im Feld. Dies ist mindestens ein Bit und nicht mehr als die Anzahl der Bits im enthaltenden Typ. Das Bitfeld belegt das im Argument "lsbOfField" angegebene Bit nach oben in Richtung des wichtigsten Bits des enthaltenden Werts entsprechend der Hier zurückgegebenen Anzahl der hier zurückgegebenen Bits.

Rückgabewert

Diese Methode gibt HRESULT zurück, das Erfolg oder Fehler angibt.

Bemerkungen

Beispielcode-

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.
}

Anforderungen

Anforderung Wert
Header- dbgmodel.h

Siehe auch

IDebugHostType3-Schnittstelle