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


Функция 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 структуру, описывающую атрибуты объектов для объекта памяти, который WdfFdoInitAllocAndQueryProper ty выделяется. Этот параметр является необязательным и может быть 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см. в создании объекта устройства Framework.

После вызова WdfDeviceCreateдрайвер может получить сведения о свойстве устройства, вызвав WdfDeviceAllocAndQueryProperty.

Дополнительные сведения о методе WdfFdoInitAllocAndQueryProper ty см. в создании объектов устройств в драйвере функций.

Кроме того, можно использовать 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 (include Wdf.h)
Библиотека Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
правил соответствия DDI DeviceInitAPI(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

См. также

WdfDeviceAllocAndQueryProperty

WdfFdoInitQueryProperty