PFND3DDDI_CHECKCOUNTER función de devolución de llamada (d3dumddi.h)

el tiempo de ejecución de Direct3D llama a PFND3DDDI_CHECKCOUNTER para recuperar información que describe un contador. Debe implementarse mediante windows Display Driver Model (WDDM) 1.3 y los controladores de pantalla en modo usuario posteriores.

Sintaxis

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

Parámetros

hDevice

[in] Identificador del dispositivo de visualización (contexto de gráficos).

unnamedParam2

[in] Counter es un valor de tipo D3DDDIQUERYTYPE que identifica el identificador del contador para el que se recupera la información.

unnamedParam3

[out] pType es un puntero a una variable que recibe un valor de enumeración D3DDDI_COUNTER_TYPE que identifica el tipo de datos que genera el contador.

unnamedParam4

pActiveCounters [out] pActiveCounters es un puntero a una variable que recibe el número de contadores activos simultáneamente asignados para la creación del identificador de contador que identifica el parámetro Counter .

unnamedParam5

[out, optional] pszName es un puntero opcional que el controlador devuelve una cadena terminada en NULL a que contiene el nombre del identificador del contador.

Puede ser NULL, en cuyo caso la aplicación no necesita el nombre.

pNameLength

[in, out, optional] Puntero opcional a una variable que recibe el tamaño, en bytes, de la cadena terminada en NULL que especifica el parámetro pszName .

Estas son las limitaciones de los valores de los parámetros pNameLength y pszName :

  • pNameLength puede ser NULL, en cuyo caso la aplicación no necesita la longitud del nombre ni del nombre.
  • Si pszName es NULL y pNameLength no es NULL, se omite el valor de entrada de pNameLength y se debe devolver la longitud de la cadena (incluido el carácter NULL de terminación) a través del parámetro pNameLength .
  • Si pszName y pNameLength no son NULL, el controlador debe comprobar el valor de entrada de pNameLength para asegurarse de que hay suficiente espacio en el búfer asignado y, a continuación, la longitud de la cadena pszName (incluido el carácter NULL de terminación) se pasa a través del parámetro pNameLength .

unnamedParam7

[out, optional] pszUnits es un puntero opcional que el controlador devuelve una cadena terminada en NULL a que contiene el nombre de las unidades que mide el identificador de contador.

Puede ser NULL, en cuyo caso la aplicación no necesita la información de las unidades. Vea más información en la explicación del parámetro pUnitsLength .

pUnitsLength

[in, out, optional] pUnitsLength es un puntero opcional a una variable que recibe el tamaño, en bytes, de la cadena terminada en NULL que especifica el parámetro pszUnits .

Estas son las limitaciones de los valores de los parámetros pUnitsLength y pszUnits :

  • pUnitsLength puede ser NULL, en cuyo caso la aplicación no necesita el nombre de unidad ni la longitud del nombre de unidad.
  • Si pszUnits es NULL y pUnitsLength no es NULL, se omite el valor de entrada de pUnitsLength y se debe devolver la longitud de la cadena (incluido el carácter NULL de terminación) a través del parámetro pUnitsLength .
  • Si pszUnits y pUnitsLength no son NULL, el controlador debe comprobar el valor de entrada de pUnitsLength para asegurarse de que hay suficiente espacio en el búfer asignado y, a continuación, la longitud de la cadena pszUnits (incluido el carácter NULL de terminación) se pasa a través del parámetro pUnitsLength .

unnamedParam9

[out, optional] pszDescription es un puntero opcional que el controlador devuelve una cadena terminada en NULL a que contiene la descripción de lo que mide el identificador de contador.

Puede ser NULL, en cuyo caso la aplicación no necesita la información de descripción. Vea más información en la explicación del parámetro pDescriptionLength .

pDescriptionLength

[in, out, optional] pDescriptionLength es un puntero opcional a una variable que recibe el tamaño, en bytes, de la cadena terminada en NULL que especifica el parámetro pszDescription .

Estas son las limitaciones de los valores de los parámetros pDescriptionLength y pszDescription :

  • pDescriptionLength puede ser NULL, en cuyo caso la aplicación no necesita el nombre de unidad ni la longitud del nombre de unidad.
  • Si pszDescription es NULL y pDescriptionLength no es NULL, el valor de entrada de pDescriptionLength se omite y se debe devolver la longitud de la cadena (incluido el carácter NULL de terminación) a través del parámetro pDescriptionLength .
  • Si pszDescription y pDescriptionLength no son NULL, el controlador debe comprobar el valor de entrada de pDescriptionLength para asegurarse de que hay suficiente espacio en el búfer asignado y, a continuación, la longitud de la cadena pszDescription (incluido el carácter NULL de terminación) se pasa a través del parámetro pDescriptionLength .

Valor devuelto

Si esta rutina se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error HRESULT, incluido lo siguiente:

Código devuelto Descripción
E_INVALIDARG Se solicita un contador dependiente del dispositivo fuera de intervalo o una longitud de cadena no es lo suficientemente grande para que un búfer contenga toda la cadena. Aunque todas las cadenas usadas en esta función se basan en Unicode, siempre están en la configuración regional en inglés y no se localizan en otras configuraciones regionales.

Comentarios

Esta función debe comportarse de forma similar a la función CheckCounter que admite Microsoft Direct3D 10 y versiones posteriores.

Normalmente, los contadores se usan en herramientas que capturan un marco y lo reproducen varias veces. El pase que registra información de tiempo precisa es independiente de otros pases. En pasos posteriores, se usa un conjunto diferente de contadores cada vez. La prioridad debe ser obtener una correlación precisa de los resultados del contador para dibujar llamadas y se puede sacrificar la sobrecarga generada durante la reproducción. El controlador debe insertar llamadas de vaciado o llamadas de espera-for-idle para garantizar una correlación precisa.

Normalmente, una aplicación solo puede supervisar simultáneamente un pequeño número de posibles contadores nativos, lo que podría tener un número en los cientos. Además, el controlador debe indicar el número de contadores activos usados por la supervisión de cada identificador de contador admitido de la enumeración D3DDDIQUERYTYPE (identificadores de contador conocidos e identificadores de contador específicos del dispositivo). Por ejemplo, el controlador puede indicar que la supervisión de una variable FillRateUtilized requiere 3 de los 4 contadores activos máximos simultáneamente (indicados por el parámetro pActiveCounters ). Por lo tanto, la aplicación también puede supervisar otro identificador de contador, siempre que ese identificador de contador requiera uno o menos contadores activos.

Si siempre se puede supervisar un identificador de contador (y no interfiere con la supervisión de ningún otro identificador de contador), el número de contadores activos simultáneos requeridos por el identificador de contador puede ser cero.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 8.1
Servidor mínimo compatible Windows Server 2012 R2
Plataforma de destino Escritorio
Encabezado d3dumddi.h (incluya D3d10umddi.h)

Consulte también

CheckCounter

D3DDDIQUERYTYPE