Compartir a través de


Función IoGetDeviceProperty (wdm.h)

La rutina IoGetDeviceProperty recupera información sobre un dispositivo, como la información de configuración y el nombre de su PDO.

Sintaxis

NTSTATUS IoGetDeviceProperty(
  [in]            PDEVICE_OBJECT           DeviceObject,
  [in]            DEVICE_REGISTRY_PROPERTY DeviceProperty,
  [in]            ULONG                    BufferLength,
  [out, optional] PVOID                    PropertyBuffer,
  [out]           PULONG                   ResultLength
);

Parámetros

[in] DeviceObject

Puntero al objeto de dispositivo físico (PDO) para el dispositivo que se está consultando.

[in] DeviceProperty

Enumerador con tipo DEVICE_REGISTRY_PROPERTYque identifica la propiedad del dispositivo que se va a recuperar.

[in] BufferLength

Especifica el tamaño, en bytes, del PropertyBuffer proporcionado por el autor de la llamada.

[out, optional] PropertyBuffer

Puntero a un búfer proporcionado por el autor de la llamada para recibir la información de la propiedad. El búfer se puede asignar desde la memoria paginable. El tipo del búfer viene determinado por el deviceProperty (consulte más arriba).

[out] ResultLength

Puntero a un ULONG para recibir el tamaño de la información de propiedad devuelta en PropertyBuffer. Si ioGetDeviceProperty devuelve STATUS_BUFFER_TOO_SMALL, establece este parámetro en la longitud del búfer necesaria.

Valor devuelto

ioGetDeviceProperty devuelve STATUS_SUCCESS si la llamada se realizó correctamente. Entre los posibles valores devueltos de error se incluyen los siguientes.

Código devuelto Descripción
STATUS_BUFFER_TOO_SMALL El búfer de PropertyBuffer era demasiado pequeño. ResultLength apunta a la longitud del búfer necesaria.
STATUS_INVALID_PARAMETER_2 La deviceProperty especificada no es una de las propiedades controladas por esta rutina.
STATUS_INVALID_DEVICE_REQUEST Posiblemente indica que el deviceObject especificado no era un puntero PDO válido.

Observaciones

IoGetDeviceProperty recupera la información de configuración del dispositivo del registro. Use esta rutina, en lugar de acceder al registro directamente, para aislar a un controlador de las diferencias entre plataformas y de los posibles cambios en la estructura del Registro.

Para muchas solicitudes de DeviceProperty, puede tomar dos o más llamadas a IoGetDeviceProperty para determinar el BufferLength necesario. La primera llamada debe usar un valor de estimación más adecuado. Si el estado devuelto es STATUS_BUFFER_TOO_SMALL, el controlador debe liberar su búfer actual, asigne un búfer del tamaño devuelto en ResultLengthy llame a IoGetDeviceProperty de nuevo. Dado que algunas de las propiedades de configuración son dinámicas, el tamaño de los datos puede cambiar entre el momento en que se devuelve el tamaño necesario y el controlador vuelve a llamar a esta rutina. Por lo tanto, los controladores deben llamar a IoGetDeviceProperty dentro de un bucle que se ejecuta hasta que el estado de devolución no se STATUS_BUFFER_TOO_SMALL.

Los controladores de funciones que admiten dispositivos en un bus heredado y un bus PnP pueden usar las propiedades DevicePropertyBusNumber, DevicePropertyBusTypeGuidy DevicePropertyLegacyBusType para distinguir entre los buses.

Requisitos

Requisito Valor
cliente mínimo admitido Disponible a partir de Windows 2000.
de la plataforma de destino de Universal
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL PASSIVE_LEVEL
reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm)

Consulte también

CM_RESOURCE_LIST

DEVICE_REMOVAL_POLICY

ExAllocatePoolWithTag

GUID de

INTERFACE_TYPE

IO_RESOURCE_REQUIREMENTS_LIST