Condividi tramite


PFND3DDDI_CHECKCOUNTER funzione di callback (d3dumddi.h)

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

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] Counter è un valore di tipo D3DDDIQUERYTYPE che identifica l'identificatore del contatore per cui vengono recuperate le informazioni.

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, nel qual caso l'app non richiede il 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 alcune limitazioni sui valori dei parametri pNameLength e pszName:

  • pNameLength può essere NULL, nel qual caso l'app non richiede il nome o la 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 di terminazione) viene passata tramite il parametro pNameLength.

unnamedParam7

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

Può essere NULL, nel qual caso l'app non richiede le informazioni sulle unità. Per altre informazioni, vedere la 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 .

Di seguito sono riportate alcune limitazioni sui valori dei parametri pUnitsLength e pszUnits:

  • pUnitsLength può essere NULL, nel qual caso l'app non richiede il nome dell'unità o la lunghezza del nome dell'unità.
  • Se pszUnits è NULL e pUnitsLength non è NULL, il valore di input di pUnitsLength viene ignorato e la lunghezza della stringa (incluso il carattere NULL di terminazione) 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 sia presente spazio sufficiente nel buffer allocato e quindi la lunghezza della stringa pszUnits (incluso il carattere NULL di terminazione) venga passata attraverso il parametro pUnitsLength.

unnamedParam9

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

Può essere NULL, nel qual caso l'app non richiede le informazioni sulla descrizione. Per altre informazioni, vedere la spiegazione del parametro pDescriptionLength.

pDescriptionLength

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

Ecco alcune limitazioni sui valori dei parametri pDescriptionLength e pszDescription:

  • pDescriptionLength può essere NULL, nel qual caso l'app non richiede il nome dell'unità o la lunghezza del nome dell'unità.
  • Se pszDescription è NULL e pDescriptionLength non è NULL, il valore di input di pDescriptionLength viene ignorato e la lunghezza della stringa (incluso il carattere NULL di terminazione) 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 sia presente spazio sufficiente nel buffer allocato e quindi la lunghezza del pszDescription stringa (incluso il carattere NULL di terminazione) venga passata attraverso il parametro pDescriptionLength.

Valore restituito

Se la routine ha esito positivo, 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 non compreso nell'intervallo oppure una lunghezza di stringa non è sufficiente per contenere l'intera stringa da parte di un buffer. Anche se tutte le stringhe usate in questa funzione sono basate su Unicode, si trovano sempre nelle impostazioni locali inglesi e non vengono localizzate in altre impostazioni locali.

Osservazioni

Questa funzione dovrebbe comportarsi in modo analogo alla funzioneCheckCounterche supporta Microsoft Direct3D 10 e versioni successive.

I contatori vengono in genere usati dagli strumenti che acquisiscono un frame e lo riproducono più volte. Il passaggio che registra informazioni di intervallo accurate è separato da altri passaggi. In passaggi successivi viene usato ogni volta un set diverso di contatori. La priorità deve essere quella di ottenere una correlazione accurata dei risultati del contatore per disegnare le chiamate e l'overhead generato 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 in 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 anche un altro ID contatore, purché tale ID contatore richieda uno o meno contatori attivi.

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

Fabbisogno

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)

Vedere anche

CheckCounter

D3DDDIQUERYTYPE