Función WdfFdoInitAllocAndQueryProperty (wdffdo.h)
[Se aplica a KMDF y UMDF]
El método WdfFdoInitAllocAndQueryProperty asigna un búfer y recupera una propiedad de dispositivo especificada.
Sintaxis
NTSTATUS WdfFdoInitAllocAndQueryProperty(
[in] PWDFDEVICE_INIT DeviceInit,
[in] DEVICE_REGISTRY_PROPERTY DeviceProperty,
[in] POOL_TYPE PoolType,
[in, optional] PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
[out] WDFMEMORY *PropertyMemory
);
Parámetros
[in] DeviceInit
Puntero a una estructura de WDFDEVICE_INIT que el controlador obtuvo de su función de devolución de llamada EvtDriverDeviceAdd .
[in] DeviceProperty
Valor de enumerador con tipo DEVICE_REGISTRY_PROPERTY que identifica la propiedad del dispositivo que se va a recuperar.
[in] PoolType
Valor de enumerador con tipo POOL_TYPE que especifica el tipo de memoria que se va a asignar.
[in, optional] PropertyMemoryAttributes
Puntero a una estructura de WDF_OBJECT_ATTRIBUTES asignada por el autor de la llamada que describe los atributos de objeto para el objeto de memoria que WdfFdoInitAllocAndQueryProperty asignará. Este parámetro es opcional y se puede WDF_NO_OBJECT_ATTRIBUTES.
[out] PropertyMemory
Puntero a una ubicación con tipo WDFMEMORY que recibe un identificador para un objeto de memoria de marco.
Valor devuelto
Si la operación se realiza correctamente, el método devuelve STATUS_SUCCESS. Entre los valores devueltos adicionales se incluyen:
Código devuelto | Descripción |
---|---|
|
El valor DeviceProperty especificado no es válido. |
|
La estructura WDFDEVICE_INIT no se obtuvo de la función de devolución de llamada EvtDriverDeviceAdd del controlador. |
El método también puede devolver otros valores NTSTATUS.
Comentarios
El controlador debe llamar a WdfFdoInitAllocAndQueryProperty antes de llamar a WdfDeviceCreate. Para obtener más información sobre cómo llamar a WdfDeviceCreate, vea Crear un objeto de dispositivo framework.
Después de llamar a WdfDeviceCreate, un controlador puede obtener información de propiedad del dispositivo llamando a WdfDeviceAllocAndQueryProperty.
Para obtener más información sobre el método WdfFdoInitAllocAndQueryProperty , vea Creating Device Objects in a Function Driver.
Como alternativa, puede usar WdfFdoInitAllocAndQueryPropertyEx para acceder a las propiedades del dispositivo expuestas a través del modelo de propiedades unificadas.
Ejemplos
En el ejemplo de código siguiente se llama a WdfFdoInitAllocAndQueryProperty para obtener un identificador a un objeto de memoria de marco que contiene el nombre de la clase de instalación de un dispositivo. A continuación, el ejemplo llama a WdfMemoryGetBuffer para obtener un puntero al búfer que contiene la cadena Unicode del nombre de clase de instalación.
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
);
}
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Versión mínima de UMDF | 2.0 |
Encabezado | wdffdo.h (incluya Wdf.h) |
Library | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
Reglas de cumplimiento de DDI | DeviceInitAPI(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |