__lwpins32, __lwpins64

Visual Studio 2010 SP1 wird benötigt.

Microsoft-spezifisch

Generiert die LWP-Anweisung (einfache Profilerstellung) lwpins, um einen Benutzerereignisdatensatz in den aktiven LWP-Ringpuffer einzufügen.

unsigned char __lwpins32(
   unsigned int data2,
   unsigned int data1,
   unsigned int flags
);

unsigned char __lwpins64(
   unsigned __int64 data2,
   unsigned int data1,
   unsigned int flags
);

Parameter

  • [in] data2
    Ein 32 oder ein 64-Bit-Parameter, der in das Data2-Feld eines LWP-Ringpufferdatensatzes geschrieben wird.

  • [in] data1
    Ein 32-Bit-Parameter, der in das Data1-Feld eines LWP-Ringpufferdatensatzes geschrieben wird.

  • [in] flags
    Ein 32-Bit-Parameter, dessen untere 16 Bit in das Flags-Feld eines LWP-Ringpufferdatensatzes geschrieben werden.

Rückgabewert

Ein Zeichen ohne Vorzeichen, das über den Wert 1 verfügt, wenn der Ringpuffer voll ist, andernfalls 0.

Anforderungen

Intrinsisch

Architektur

__llwpins32

LWP

__llwpins64

LWP, nur X64

Headerdatei <intrin.h>

Hinweise

Diese systeminternen Funktionen können verwendet werden, um wichtige Ereignisse mit EventId 255 im einfachen Profilerstellungsringpuffer aufzuzeichnen. Im Gegensatz zu lwpval schreibt die lwpins-Anweisung bei jeder Ausführung in den Puffer. Weitere Informationen finden Sie unter __lwpval32.

Wenn die einfache Profilerstellung aktiviert ist, schreiben diese systeminternen Funktionen sofort einen Datensatz in den nächsten verfügbaren Slot des aktiven LWP-Ringpuffers und geben 0 (null) zurück. Wenn der Ringpuffer voll ist, überschreibt der neue Datensatz den letzten Datensatz im Puffer, und die systeminterne Funktion gibt 1 zurück. Wenn die einfache Profilerstellung nicht aktiviert ist, geben diese systeminternen Funktionen automatisch 0 (null) zurück.

Sowohl __lwpins32 als auch __lwpins64 schreiben den Wert von data2 in das Data2-Feld des Ringpufferdatensatzes (Bytes 23-16), data1 in das Data1-Feld (Bytes 7-4) und flags in das Flags-Feld (Bytes 3-2). Beachten Sie, dass flags konstant sein muss und auf 16 Bits abgeschnitten wird. Der systeminterne __lwpins32 legt Bytes 23-20 des Ringpufferrekordes auf 0 (null) fest.

Die lwpins-Anweisung ist Teil der LWP-Anweisungsfamilie. Die LWP-Anweisungen erfordern sowohl Hardware- als auch Betriebssystemunterstützung. Um die Hardwareunterstützung für LWP zu bestimmen, rufen Sie die systeminterne Funktion __cpuid mit InfoType = 0x80000001 auf, und prüfen Sie Bit 15 von CPUInfo[2] (ECX). Dieses Bit ist 1, wenn LWP unterstützt wird, und andernfalls 0. Sobald bekannt ist, dass LWP vom Prozessor unterstützt wird, rufen Sie die systeminterne Funktion __cpuid mit InfoType = 0x8000001C auf, und überprüfen Sie Bit 0 von CPUInfo[0](EAX). Dieses Bit ist 1, wenn das Betriebssystem ebenfalls LWP unterstützt, andernfalls 0. Dieser __cpuid-Test gibt außerdem zusätzliche Informationen zur LWP-Implementierung zurück. Weitere Informationen finden Sie unter __llwpcb und AMD "Einfache Profilerstellungsspezifikation (Publikation Number 43724)".

Ein Beispiel finden Sie unter __llwpcb.

Siehe auch

Weitere Ressourcen

__llwpcb

__lwpval32, __lwpval64

__slwpcb

In Visual Studio 2010 SP1 hinzugefügte systeminterne LWP-Funktionen

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

März 2011

Diesen Inhalt hinzugefügt.

SP1-Funktionsänderung.