PFND3DDDI_CHECKCOUNTER Rückruffunktion (d3dumddi.h)
PFND3DDDI_CHECKCOUNTER wird von der Direct3D-Laufzeit aufgerufen, um Informationen abzurufen, die einen Zähler beschreiben. Muss von Windows Display Driver Model (WDDM) 1.3 und höher von Anzeigetreibern für den Benutzermodus implementiert werden.
Syntax
PFND3DDDI_CHECKCOUNTER Pfnd3dddiCheckcounter;
HRESULT Pfnd3dddiCheckcounter(
HANDLE hDevice,
D3DDDIQUERYTYPE unnamedParam2,
D3DDDI_COUNTER_TYPE *unnamedParam3,
UINT *unnamedParam4,
LPSTR unnamedParam5,
UINT *pNameLength,
LPSTR unnamedParam7,
UINT *pUnitsLength,
LPSTR unnamedParam9,
UINT *pDescriptionLength
)
{...}
Parameter
hDevice
[in] Ein Handle für das Anzeigegerät (Grafikkontext).
unnamedParam2
[in] Counter ist ein Wert vom Typ D3DDDIQUERYTYPE, der den Indikatorbezeichner identifiziert, für den Informationen abgerufen werden.
unnamedParam3
[out] pType- ist ein Zeiger auf eine Variable, die einen D3DDDI_COUNTER_TYPE Enumerationswert empfängt, der den Datentyp identifiziert, den der Zähler ausgibt.
unnamedParam4
pActiveCounters [out] pActiveCounters ist ein Zeiger auf eine Variable, die die Anzahl gleichzeitig aktiver Leistungsindikatoren empfängt, die für die Erstellung des Leistungsindikatorbezeichners zugeordnet sind, den der Counter Parameter identifiziert.
unnamedParam5
[out, optional] pszName ist ein optionaler Zeiger, der vom Treiber eine NULL-beendete Zeichenfolge zurückgibt, die den Namen des Zählerbezeichners enthält.
Kann NULL sein, in diesem Fall benötigt die App nicht den Namen.
pNameLength
[in, out, optional] Ein optionaler Zeiger auf eine Variable, die die Größe der NULL-beendeten Zeichenfolge in Byte empfängt, die der pszName-Parameter angibt.
Hier sind Einschränkungen für die Werte der pNameLength und pszName Parameter:
- pNameLength- kann NULL sein, in diesem Fall benötigt die App nicht den Namen oder die Namelänge.
- Wenn pszName NULL ist und pNameLength- nicht NULL ist, muss der Eingabewert pNameLength- ignoriert werden, und die Länge der Zeichenfolge (einschließlich endendes NULL-Zeichen) muss über den pNameLength Parameter zurückgegeben werden.
- Wenn sowohl pszName- als auch pNameLength- nicht NULL sind, Der Treiber muss den Eingabewert pNameLength- überprüfen, um sicherzustellen, dass genügend Platz im zugewiesenen Puffer vorhanden ist, und dann wird die Länge der pszName Zeichenfolge (einschließlich endendem NULL-Zeichen) über den pNameLength Parameter übergeben.
unnamedParam7
[out, optional] pszUnits ein optionaler Zeiger ist, an den der Treiber eine NULL-beendete Zeichenfolge zurückgibt, die den Namen der Einheiten enthält, die der Indikatorbezeichner misst.
Dies kann NULL sein, in diesem Fall benötigt die App keine Einheiteninformationen. Weitere Informationen finden Sie in der Erläuterung des pUnitsLength--Parameters.
pUnitsLength
[in, out, optional] pUnitsLength ist ein optionaler Zeiger auf eine Variable, die die Größe der NULL-beendeten Zeichenfolge in Bytes empfängt, die der pszUnits Parameter angibt.
Hier sind Einschränkungen für die Werte der pUnitsLength und pszUnits Parameter:
- pUnitsLength- kann NULL sein, in diesem Fall benötigt die App nicht den Einheitennamen oder die Länge des Einheitennamens.
- Wenn pszUnits NULL ist und pUnitsLength- nicht NULL ist, muss der Eingabewert pUnitsLength- ignoriert werden, und die Länge der Zeichenfolge (einschließlich endendes NULL-Zeichen) muss über den pUnitsLength Parameter zurückgegeben werden.
- Wenn sowohl pszUnits als auch pUnitsLength- nicht NULL sind, Der Treiber muss den Eingabewert pUnitsLength- überprüfen, um sicherzustellen, dass genügend Platz im zugewiesenen Puffer vorhanden ist, und dann wird die Länge der pszUnits Zeichenfolge (einschließlich endendes NULL-Zeichen) über den pUnitsLength Parameter übergeben.
unnamedParam9
[out, optional] pszDescription ein optionaler Zeiger ist, an den der Treiber eine NULL-beendete Zeichenfolge zurückgibt, die die Beschreibung enthält, was der Indikatorbezeichner misst.
Dies kann NULL sein, in diesem Fall benötigt die App keine Beschreibungsinformationen. Weitere Informationen finden Sie in der Erläuterung des pDescriptionLength-Parameters.
pDescriptionLength
[in, out, optional] pDescriptionLength ist ein optionaler Zeiger auf eine Variable, die die Größe der NULL-beendeten Zeichenfolge in Bytes empfängt, die der pszDescription Parameter angibt.
Hier sind Einschränkungen für die Werte der pDescriptionLength und pszDescription Parameter:
- pDescriptionLength- kann NULL sein, in diesem Fall benötigt die App nicht den Einheitennamen oder die Länge des Einheitennamens.
- Wenn pszDescription NULL ist und pDescriptionLength nicht NULL ist, muss der Eingabewert pDescriptionLength- ignoriert werden, und die Länge der Zeichenfolge (einschließlich endendes NULL-Zeichen) muss über den pDescriptionLength-Parameter zurückgegeben werden.
- Wenn sowohl pszDescription als auch pDescriptionLength nicht NULL sind, Der Treiber muss den Eingabewert pDescriptionLength- überprüfen, um sicherzustellen, dass genügend Platz im zugeordneten Puffer vorhanden ist, und dann wird die Länge der pszDescription Zeichenfolge (einschließlich endendes NULL-Zeichen) über den pDescriptionLength Parameter übergeben.
Rückgabewert
Wenn diese Routine erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein HRESULT-Fehlercode zurückgegeben, einschließlich der folgenden:
Rückgabecode | Beschreibung |
---|---|
E_INVALIDARG | Ein geräteabhängiger Zähler außerhalb des Bereichs wird angefordert, oder eine Zeichenfolgenlänge ist nicht groß genug, damit ein Puffer die gesamte Zeichenfolge enthält. Obwohl alle in dieser Funktion verwendeten Zeichenfolgen auf Unicode basieren, befinden sie sich immer im englischen Gebietsschema und werden nicht in andere Gebietsschemas lokalisiert. |
Bemerkungen
Diese Funktion sollte sich ähnlich wie die CheckCounter--Funktion verhalten, die Microsoft Direct3D 10 und höher unterstützt.
Leistungsindikatoren werden in der Regel von Tools verwendet, die einen Frame erfassen und mehrmals wiedergeben. Der Pass, der genaue Anzeigedauerinformationen erfasst, ist von anderen Durchläufen getrennt. Bei späteren Durchläufen wird jedes Mal eine andere Gruppe von Zählern verwendet. Die Priorität sollte sein, eine genaue Korrelation von Gegenergebnissen zu erhalten, um Aufrufe zu zeichnen, und der während der Wiedergabe entstehende Aufwand kann geopfert werden. Der Treiber muss Leeraufrufe oder Leerlaufaufrufe einfügen, um eine genaue Korrelation sicherzustellen.
In der Regel kann eine App nur eine kleine Anzahl möglicher systemeigener Zähler gleichzeitig überwachen, was in den Hunderten vorkommen kann. Darüber hinaus muss der Treiber die Anzahl der aktiven Leistungsindikatoren angeben, die von der D3DDDIQUERYTYPE-Enumeration verwendet werden, indem jede unterstützte Zähler-ID überwacht wird (sowohl bekannte Zähler-IDs als auch gerätespezifische Zähler-IDs). Beispielsweise kann der Treiber angeben, dass die Überwachung einer FillRateUtilized Variable 3 der maximal 4 gleichzeitig aktiven Zähler erfordert (angegeben durch den pActiveCounters Parameter). Die App kann daher auch eine andere Zähler-ID überwachen, sofern für diese Zähler-ID mindestens ein aktiver Zähler erforderlich ist.
Wenn eine Leistungsindikator-ID immer überwacht werden kann (und die Überwachung anderer Zähler-IDs nicht beeinträchtigt), kann die Anzahl der gleichzeitigen aktiven Zähler, die für die Leistungsindikator-ID erforderlich sind, null sein.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows 8.1 |
mindestens unterstützte Server- | Windows Server 2012 R2 |
Zielplattform- | Desktop |
Header- | d3dumddi.h (include D3d10umddi.h) |