PFND3DDDI_CHECKCOUNTER funzione di callback (d3dumddi.h)

PFND3DDDI_CHECKCOUNTER viene chiamato dal runtime Direct3D per recuperare informazioni che descrivono un contatore. Deve essere implementato da Windows Display Driver Model (WDDM) 1.3 e versioni successive dei driver di visualizzazione in modalità utente.

Sintassi

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
)
{...}

Parametri

hDevice

[in] Handle per il dispositivo di visualizzazione (contesto grafico).

unnamedParam2

[in] Il contatore è un valore di tipo D3DDDIQUERYTYPE che identifica l'identificatore del contatore recuperato per.

unnamedParam3

[out] pType è un puntatore a una variabile che riceve un valore di enumerazione D3DDDI_COUNTER_TYPE che identifica il tipo di dati restituito dal contatore.

unnamedParam4

pActiveCounters [out] pActiveCounters è un puntatore a una variabile che riceve il numero di contatori attivi simultaneamente allocati per la creazione dell'identificatore del contatore identificato dal parametro Counter .

unnamedParam5

[out, facoltativo] pszName è un puntatore facoltativo che il driver restituisce una stringa con terminazione NULL a che contiene il nome dell'identificatore del contatore.

Può essere NULL, in questo caso l'app non ha bisogno del nome.

pNameLength

[in, out, facoltativo] Puntatore facoltativo a una variabile che riceve le dimensioni, in byte, della stringa con terminazione NULL specificata dal parametro pszName .

Ecco le limitazioni sui valori dei parametri pNameLength e pszName :

  • pNameLength può essere NULL, in questo caso l'app non ha bisogno del nome o della lunghezza del nome.
  • Se pszName è NULL e pNameLength non è NULL, il valore di input di pNameLength viene ignorato e la lunghezza della stringa (incluso il carattere NULL di terminazione) deve essere restituita tramite il parametro pNameLength .
  • Se sia pszName che pNameLength non sono NULL, il driver deve controllare il valore di input di pNameLength per assicurarsi che nel buffer allocato sia presente spazio sufficiente e quindi la lunghezza della stringa pszName (incluso il carattere NULL terminante) venga passata tramite il parametro pNameLength .

unnamedParam7

[out, facoltativo] pszUnits è un puntatore facoltativo che il driver restituisce una stringa con terminazione NULL in che contiene il nome delle unità misurate dall'identificatore del contatore.

Può essere NULL, in questo caso l'app non richiede le informazioni sulle unità. Vedere altre informazioni nella spiegazione del parametro pUnitsLength .

pUnitsLength

[in, out, facoltativo] pUnitsLength è un puntatore facoltativo a una variabile che riceve le dimensioni, in byte, della stringa con terminazione NULL specificata dal parametro pszUnits .

Ecco le limitazioni sui valori dei parametri pUnitsLength e pszUnits :

  • pUnitsLength può essere NULL, in questo caso l'app non richiede il nome dell'unità o la lunghezza del nome unità.
  • Se pszUnits è NULL e pUnitsLength non è NULL, il valore di input pUnitsLength viene ignorato e la lunghezza della stringa (incluso il carattere NULL terminante) deve essere restituita tramite il parametro pUnitsLength .
  • Se sia pszUnits che pUnitsLength non sono NULL, il driver deve controllare il valore di input di pUnitsLength per assicurarsi che nel buffer allocato sia presente spazio sufficiente e quindi la lunghezza della stringa pszUnits (inclusa la terminazione del carattere NULL) viene passata tramite il parametro pUnitsLength.

unnamedParam9

[out, facoltativo] pszDescription è un puntatore facoltativo che il driver restituisce una stringa con terminazione NULL in che contiene la descrizione delle misure dell'identificatore contatore.

Può essere NULL, in questo caso l'app non ha bisogno delle informazioni sulla descrizione. Per altre informazioni, vedere la spiegazione del parametro pDescriptionLength .

pDescriptionLength

[in, out, facoltativo] pDescriptionLength è un puntatore facoltativo a una variabile che riceve le dimensioni, in byte, della stringa con terminazione NULL specificata dal parametro pszDescription .

Ecco le limitazioni sui valori dei parametri pDescriptionLength e pszDescription :

  • pDescriptionLength può essere NULL, in questo caso l'app non ha bisogno del nome unità o della lunghezza del nome unità.
  • Se pszDescription è NULL e pDescriptionLength non è NULL, il valore di input pDescriptionLength viene ignorato e la lunghezza della stringa (inclusa la terminazione del carattere NULL) deve essere restituita tramite il parametro pDescriptionLength .
  • Se sia pszDescription che pDescriptionLength non sono NULL, il driver deve controllare il valore di input di pDescriptionLength per assicurarsi che nel buffer allocato sia presente spazio sufficiente e quindi la lunghezza della stringa pszDescription (incluso il carattere NULL terminante) viene passata tramite il parametro pDescriptionLength.

Valore restituito

Se questa routine riesce, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT, incluso quanto segue:

Codice restituito Descrizione
E_INVALIDARG Viene richiesto un contatore dipendente dal dispositivo out-of-range oppure una lunghezza di stringa non è sufficiente per contenere l'intera stringa. Anche se tutte le stringhe usate in questa funzione sono basate su Unicode, sono sempre nelle impostazioni locali inglesi e non vengono localizzate in altre impostazioni locali.

Commenti

Questa funzione deve comportarsi in modo analogo alla funzione CheckCounter che supporta Microsoft Direct3D 10 e versioni successive.

I contatori vengono in genere usati dagli strumenti che acquisiscono un frame e lo riproducino più volte. Il passaggio che registra informazioni di intervallo accurate è separato da altri passaggi. In un secondo momento viene usato un set diverso di contatori. La priorità deve essere quella di ottenere una correlazione accurata dei risultati dei contatori per disegnare le chiamate e il sovraccarico incorrere durante la riproduzione può essere sacrificato. Il driver deve inserire chiamate di scaricamento o chiamate inattive per garantire una correlazione accurata.

In genere un'app può monitorare simultaneamente solo un numero ridotto di possibili contatori nativi, che potrebbero essere numerati nelle centinaia. Inoltre, il driver deve indicare il numero di contatori attivi usati monitorando ogni ID contatore supportato dall'enumerazione D3DDDIQUERYTYPE (sia gli ID contatori noti che gli ID contatori specifici del dispositivo). Ad esempio, il driver può indicare che il monitoraggio di una variabile FillRateUtilized richiede 3 dei contatori attivi contemporaneamente 4 (indicati dal parametro pActiveCounters ). L'app può quindi monitorare un altro ID contatore, purché tale ID contatore richieda uno o meno contatori attivi.

Se un ID contatore può sempre essere monitorato (e non interferisce con il monitoraggio di altri ID contatori), il numero di contatori attivi simultanei richiesti dall'ID contatore può essere zero.

Requisiti

Requisito Valore
Client minimo supportato Windows 8.1
Server minimo supportato Windows Server 2012 R2
Piattaforma di destinazione Desktop
Intestazione d3dumddi.h (include D3d10umddi.h)

Vedi anche

CheckCounter

D3DDDIQUERYTYPE