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
STATUS_INVALID_PARAMETER o STATUS_INVALID_PARAMETER_2
El valor DeviceProperty especificado no es válido.
STATUS_INVALID_DEVICE_REQUEST
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)

Consulte también

WdfDeviceAllocAndQueryProperty

WdfFdoInitQueryProperty