Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[Применимо к 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. К дополнительным возвращаемым значениям относятся:
Код возврата | Описание |
---|---|
|
Указанное значение DeviceProperty недопустимо. |
|
Структура 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) |