Функция WdfFdoInitAllocAndQueryProperty (wdffdo.h)
[Относится к KMDF и UMDF]
Метод WdfFdoInitAllocAndQueryProperty выделяет буфер и извлекает указанное свойство устройства.
Синтаксис
NTSTATUS WdfFdoInitAllocAndQueryProperty(
[in] PWDFDEVICE_INIT DeviceInit,
[in] DEVICE_REGISTRY_PROPERTY DeviceProperty,
[in] POOL_TYPE PoolType,
[in, optional] PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
[out] WDFMEMORY *PropertyMemory
);
Параметры
[in] DeviceInit
Указатель на структуру WDFDEVICE_INIT , полученную драйвером из функции обратного вызова EvtDriverDeviceAdd .
[in] DeviceProperty
Значение перечислителя DEVICE_REGISTRY_PROPERTY типа, определяющее извлекаемое свойство устройства.
[in] PoolType
Значение перечислителя POOL_TYPE типа, указывающее тип выделяемой памяти.
[in, optional] PropertyMemoryAttributes
Указатель на структуру WDF_OBJECT_ATTRIBUTES , выделенную вызывающим объектом, которая описывает атрибуты объекта памяти, который будет выделять WdfFdoInitAllocAndQueryProperty . Этот параметр является необязательным и может быть WDF_NO_OBJECT_ATTRIBUTES.
[out] PropertyMemory
Указатель на расположение типа WDFMEMORY, которое получает дескриптор объекта памяти платформы.
Возвращаемое значение
Если операция выполнена успешно, метод возвращает STATUS_SUCCESS. К дополнительным возвращаемым значениям относятся:
Код возврата | Описание |
---|---|
|
Указанное значение DeviceProperty недопустимо. |
|
Структура WDFDEVICE_INIT не была получена из функции обратного вызова EvtDriverDeviceAdd драйвера. |
Метод также может возвращать другие значения NTSTATUS.
Комментарии
Драйвер должен вызвать WdfFdoInitAllocAndQueryProperty перед вызовомWdfDeviceCreate. Дополнительные сведения о вызове WdfDeviceCreate см. в разделе Создание объекта устройства платформы.
После вызова WdfDeviceCreate драйвер может получить сведения о свойствах устройства, вызвав WdfDeviceAllocAndQueryProperty.
Дополнительные сведения о методе WdfFdoInitAllocAndQueryProperty см. в статье Создание объектов устройств в драйвере функции.
Кроме того, вы можете использовать WdfFdoInitAllocAndQueryPropertyEx для доступа к свойствам устройства, которые предоставляются через единую модель свойств.
Примеры
В следующем примере кода вызывается WdfFdoInitAllocAndQueryProperty для получения дескриптора объекта памяти платформы, содержащего имя класса установки устройства. Затем в примере вызывается WdfMemoryGetBuffer , чтобы получить указатель на буфер, содержащий строку Юникода имени класса установки.
NTSTATUS status = STATUS_SUCCESS;
PVOID pMemoryBuffer = NULL;
WDFMEMORY memory = NULL;
status = WdfFdoInitAllocAndQueryProperty(
DeviceInit,
DevicePropertyClassName,
NonPagedPool,
WDF_NO_OBJECT_ATTRIBUTES,
&memory
);
if(NT_SUCCESS(status)){
pMemoryBuffer = WdfMemoryGetBuffer(
memory,
NULL
);
}
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Минимальная версия UMDF | 2,0 |
Верхняя часть | wdffdo.h (включая Wdf.h) |
Библиотека | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
Правила соответствия DDI | DeviceInitAPI(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |