функция обратного вызова PFND3DDDI_CHECKCOUNTER (d3dumddi.h)
PFND3DDDI_CHECKCOUNTER вызывается средой выполнения Direct3D для получения сведений, описывающих счетчик. Необходимо реализовать с помощью моделей драйверов Windows (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 — это указатель на переменную, которая получает число одновременных активных счетчиков, выделенных для создания идентификатора счетчика, который определяет параметр счетчика счетчика.
unnamedParam5
[out, необязательный] pszName является необязательным указателем, который драйвер возвращает строку, завершающуюся null, в то, что содержит имя идентификатора счетчика.
Может иметь значение NULL, в этом случае приложению не требуется имя.
pNameLength
[in, out, необязательный] Необязательный указатель на переменную, которая получает размер в байтах строки, завершаемой значением NULL, указанной параметром pszName.
Ниже приведены ограничения для значений параметров pNameLength и pszName:
- pNameLength может иметь значение NULL, в этом случае приложению не нужна длина имени или имени.
- Если pszName имеет значение NULL и pNameLength не имеет значения NULL, входное значение pNameLength игнорируется, а длина строки (включая завершающий символ NULL) должна быть возвращена с помощью параметра pNameLength.
- Если оба pszName и pNameLeng th не имеют значения NULL, Драйвер должен проверить входное значение pNameLength, чтобы убедиться, что в выделенном буфере достаточно места, а затем длина строки pszName (включая завершающий символ NULL) передается через параметр pNameLength.
unnamedParam7
[out, необязательный] pszUnits является необязательным указателем, который драйвер возвращает строку, завершающую значение NULL, в строку, содержащую имя единиц, которые меры счетчика идентификатора.
Может иметь значение NULL, в этом случае приложение не нуждается в сведениях об единицах. Дополнительные сведения см. в описании параметра pUnitsLength.
pUnitsLength
[in, out, необязательный] pUnitsLength является необязательным указателем на переменную, которая получает размер в байтах строки, завершаемой значением NULL, указанной параметром pszUnits.
Ниже приведены ограничения значений параметров pUnitsLength и pszUnits:
- pUnitsLength может иметь значение NULL, в этом случае приложению не требуется длина имени единицы или единицы.
- Если pszUnits имеет значение NULL и pUnitsLength не равно NULL, входное значение pUnitsLength игнорируется, а длина строки (включая завершение символа NULL) должна быть возвращена через параметр pUnitsLength.
- Если оба pszUnits и pUnitsLeng th не имеют значения NULL, Драйвер должен проверить входное значение pUnitsLength, чтобы убедиться, что в выделенном буфере достаточно места, а затем длина строки pszUnits (включая завершающий символ NULL) передается через параметр pUnitsLength.
unnamedParam9
[out, необязательный] pszDescription является необязательным указателем, который драйвер возвращает строку, завершающую значение NULL, в которую содержится описание мер идентификатора счетчика.
Может иметь значение NULL, в этом случае приложение не нуждается в сведениях о описании. Дополнительные сведения см. в описании параметра pDescriptionLength.
pDescriptionLength
[in, out, необязательный] pDescriptionLength является необязательным указателем на переменную, которая получает размер в байтах строки, завершаемой значением NULL, указанной параметром pszDescription.
Ниже приведены ограничения значений параметров pDescriptionLength и pszDescription:
- pDescriptionLength может иметь значение NULL, в этом случае приложению не требуется длина имени единицы или имени единицы.
- Если pszDescription имеет значение NULL и pDescriptionLength не равно NULL, входное значение pDescriptionLength игнорируется, а длина строки (включая завершающий символ NULL) должна быть возвращена через параметр pDescriptionLength.
- Если оба pszDescription и pDescriptionLeng th не имеют значения 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 (include D3d10umddi.h) |