Функция 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. К дополнительным возвращаемым значениям относятся:

Код возврата Описание
STATUS_INVALID_PARAMETER или STATUS_INVALID_PARAMETER_2
Указанное значение DeviceProperty недопустимо.
STATUS_INVALID_DEVICE_REQUEST
Структура 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)

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

WdfDeviceAllocAndQueryProperty

WdfFdoInitQueryProperty