Freigeben über


IDebugHostType2::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 bei jedem Typ fehl, der kein Bitfeld ist. Dies ist der einzige Grund, warum die Methode fehlschlägt. Das einfache Aufrufen dieser Methode und die Betrachtung von Erfolg/Misserfolg reicht aus, um ein Bitfeld von einem Nicht-Bitfeld zu unterscheiden.

Wenn ein bestimmter Typ ein Bitfeld ist, werden die Feldpositionen durch die halb geöffnete Menge (lsbOfField + lengthOfField : lsbOfField) definiert.

Syntax

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

Parameter

lsbOfField

Gibt das am wenigsten signifikante Bit des Felds an (wobei 0 als das am wenigsten signifikante Bit des enthaltenden Typs definiert ist). Das Bitfeld ist so definiert, dass Bits von diesem Punkt zum wichtigsten Bit des enthaltenden Typs gemäß der länge verwendet werden, die durch das lengthOfField-Argument angegeben wird.

lengthOfField

Die Anzahl der Bits im Feld. Dies ist mindestens eins und nicht mehr als die Anzahl der Bits im enthaltenden Typ. Das Bitfeld belegt von dem im lsbOfField-Argument angegebenen Bit nach oben das bedeutendste Bit des enthaltenden Werts entsprechend der Anzahl der hier zurückgegebenen Bits.

Rückgabewert

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

Hinweise

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

Weitere Informationen

IDebugHostType2-Schnittstelle