Поделиться через


функция обратного вызова PFND3DDDI_CHECKCOUNTER (d3dumddi.h)

PFND3DDDI_CHECKCOUNTER вызывается средой выполнения Direct3D для получения сведений, описывающих счетчик. Должен быть реализован с помощью драйверов windows Display Driver Model (WDDM) 1.3 и более поздних версий в пользовательском режиме.

Синтаксис

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

Параметры

hDevice

[in] Дескриптор устройства отображения (графический контекст).

unnamedParam2

[in] Счетчик — это значение типа D3DDDIQUERYTYPE , определяющее идентификатор счетчика, для которого извлекаются сведения.

unnamedParam3

[out] pType — это указатель на переменную, получающую значение перечисления D3DDDI_COUNTER_TYPE , идентифицирующее тип данных, который выводит счетчик.

unnamedParam4

pActiveCounters [out] pActiveCounters — это указатель на переменную, получающую количество одновременно активных счетчиков, выделенных для создания идентификатора счетчика, определяемого параметром Counter .

unnamedParam5

[out, необязательный] pszName — это необязательный указатель, в который драйвер возвращает строку, завершающуюся значением NULL, которая содержит имя идентификатора счетчика.

Может иметь значение NULL, в этом случае приложению не требуется имя.

pNameLength

[in, out, optional] Необязательный указатель на переменную, которая получает размер строки, завершающейся null, в байтах, указанной параметром pszName .

Ниже приведены ограничения на значения параметров pNameLength и pszName .

  • pNameLength может иметь значение NULL. В этом случае приложению не требуется длина имени или имени.
  • Если pszName имеет значение NULL, а pNameLength не равно NULL, входное значение pNameLength игнорируется, а длина строки (включая завершающий символ NULL) должна возвращаться с помощью параметра pNameLength .
  • Если и pszName, и pNameLength не имеют значения NULL, драйвер должен проверка входное значение pNameLength, чтобы убедиться, что в выделенном буфере достаточно места, а затем длина строки pszName (включая завершающий символ NULL) передается через параметр pNameLength.

unnamedParam7

[out, необязательный] pszUnits — это необязательный указатель, в который драйвер возвращает строку, завершающуюся значением NULL, которая содержит имя единиц измерения идентификатора счетчика.

Может иметь значение NULL, в этом случае приложению не нужны сведения об единицах. Дополнительные сведения см. в описании параметра pUnitsLength .

pUnitsLength

[in, out, optional] pUnitsLength является необязательным указателем на переменную, которая получает размер строки, заканчивающейся null, в байтах, указанной параметром pszUnits .

Ниже приведены ограничения на значения параметров pUnitsLength и pszUnits :

  • pUnitsLength может иметь значение NULL. В этом случае приложению не требуется имя или длина имени единицы измерения.
  • Если pszUnits имеет значение NULL, а pUnitsLength не равно NULL, входное значение pUnitsLength игнорируется, а длина строки (включая завершающий символ NULL) должна быть возвращена с помощью параметра pUnitsLength .
  • Если и pszUnits, и pUnitsLength не имеют значения NULL, драйвер должен проверка входное значение pUnitsLength, чтобы убедиться, что в выделенном буфере достаточно места, а затем длина строки pszUnits (включая завершающий символ NULL) передается через параметр pUnitsLength.

unnamedParam9

[out, необязательный] pszDescription — это необязательный указатель, в который драйвер возвращает строку, завершающуюся значением NULL, которая содержит описание мер идентификатора счетчика.

Может иметь значение NULL, в этом случае приложению не требуются сведения об описании. Дополнительные сведения см. в описании параметра pDescriptionLength .

pDescriptionLength

[in, out, optional] pDescriptionLength является необязательным указателем на переменную, которая получает размер строки, заканчивающейся null, в байтах, указанной параметром pszDescription .

Ниже приведены ограничения на значения параметров pDescriptionLength и pszDescription :

  • pDescriptionLength может иметь значение NULL. В этом случае приложению не требуется имя или длина имени единицы измерения.
  • Если pszDescription имеет значение NULL, а pDescriptionLength не равно NULL, входное значение pDescriptionLength игнорируется, а длина строки (включая завершающий символ NULL) должна возвращаться с помощью параметра pDescriptionLength .
  • Если и pszDescription, и pDescriptionLength не имеют значения NULL, драйвер должен проверка входное значение pDescriptionLength, чтобы убедиться, что в выделенном буфере достаточно места, а затем длина строки pszDescription (включая завершающий символ NULL) передается через параметр pDescriptionLength.

Возвращаемое значение

Если эта подпрограмма завершается успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT, включая следующее:

Код возврата Описание
E_INVALIDARG Запрашивается счетчик вне диапазона, зависящий от устройства, или длина строки недостаточно велика, чтобы буфер содержал всю строку. Несмотря на то, что все строки, используемые в этой функции, основаны на Юникоде, они всегда находятся в английском языковом стандарте и не локализованы для других языковых стандартов.

Комментарии

Эта функция должна вести себя аналогично функции CheckCounter , которая поддерживает Microsoft Direct3D 10 и более поздних версий.

Счетчики обычно используются средствами, которые захватывают кадр и воспроизводит его несколько раз. Проход, который записывает точные сведения о времени, отделен от других проходов. В последующих проходах каждый раз используется другой набор счетчиков. Приоритет должен быть в том, чтобы получить точную корреляцию результатов счетчика для рисования вызовов, и можно пожертвовать затратами, связанными с воспроизведением. Чтобы обеспечить точную корреляцию, драйвер должен вставлять вызовы очистки или вызовы ожидания простоя.

Как правило, приложение может одновременно отслеживать только небольшое количество возможных собственных счетчиков, число которых может быть сотнями. Кроме того, драйвер должен указать количество активных счетчиков, используемых при мониторинге каждого поддерживаемого идентификатора счетчика из перечисления D3DDDIQUERYTYPE (как известные идентификаторы счетчиков, так и идентификаторы счетчиков для конкретных устройств). Например, драйвер может указать, что для мониторинга переменной FillRateUtilized требуется 3 из 4 одновременно активных счетчиков (обозначается параметром pActiveCounters ). Поэтому приложение также может отслеживать другой идентификатор счетчика, если для этого идентификатора счетчика требуется один или меньше активных счетчиков.

Если идентификатор счетчика всегда можно отслеживать (и это не мешает мониторингу других идентификаторов счетчиков), количество одновременных активных счетчиков, требуемое для идентификатора счетчика, может быть равным нулю.

Требования

Требование Значение
Минимальная версия клиента Windows 8.1
Минимальная версия сервера Windows Server 2012 R2
Целевая платформа Персональный компьютер
Верхняя часть d3dumddi.h (включая D3d10umddi.h)

См. также раздел

CheckCounter

D3DDDIQUERYTYPE