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) lwpval, um einen Wertbeispieldatensatz in den aktiven LWP-Ringpuffer einzufügen.
void __lwpval32(
unsigned int data2,
unsigned int data1,
unsigned int flags
);
void __lwpval64(
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
Keine.
Anforderungen
Intrinsisch |
Architektur |
|---|---|
__lwpval32 |
LWP |
__lwpval64 |
LWP, nur X64 |
Headerdatei <intrin.h>
Hinweise
Diese systeminternen Funktionen können verwendet werden, um Messwerte mit EventID 1 im einfachen Profilerstellungsringpuffer aufzuzeichnen. Im Gegensatz zu lwpins schreibt die lwpval-Anweisung nur jedes kte Mal, wenn lwpval ausgeführt wird, in den Puffer, wobei k-1 der Wert des EventInterval1-Felds von LWPCB ist. Weitere Informationen finden Sie unter __lwpins32.
Wenn ein Datensatz geschrieben wird, wird er im den nächsten verfügbaren Slot des aktiven LWP-Ringpuffers gespeichert. Wenn der Ringpuffer voll ist, überschreibt der neue Datensatz den letzten Datensatz im Puffer. Wenn die einfache Profilerstellung nicht aktiviert ist, oder wenn LWP aktiviert, aber das Programmed Value Sample-Ereignis nicht aktiviert ist, haben diese systeminternen Funktionen keine Auswirkungen auf den Ringpuffer.
Sowohl __lwpval32 als auch __lwpval64 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 __lwpval32 legt Bytes 23-20 des Ringpufferrekordes auf 0 (null) fest.
Die lwpval-Anweisung gehört zur LWP-Anweisungsfamilie. Die LWP-Anweisungen erfordern sowohl eine Hardwareunterstützung als auch eine Unterstützung durch das Betriebssystem. 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. Wenn das Betriebssystem LWP unterstützt, überprüfen Sie Bit 1 von CPUInfo[0](EAX). Dieses ist 1, wenn die LWPVAL-Anweisung verfügbar ist. 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. |