Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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
In Visual Studio 2010 SP1 hinzugefügte systeminterne LWP-Funktionen
Änderungsprotokoll
Datum |
Versionsgeschichte |
Grund |
|---|---|---|
|
März 2011 |
Diesen Inhalt hinzugefügt. |
SP1-Funktionsänderung. |