Compartir a través de


DRIVER_LIST_CONTROL función de devolución de llamada (wdm.h)

La rutina AdapterListControl de inicia una operación de dispersión o recopilación de acceso directo a memoria (DMA).

Sintaxis

DRIVER_LIST_CONTROL DriverListControl;

void DriverListControl(
  [in] _DEVICE_OBJECT *DeviceObject,
  [in] _IRP *Irp,
  [in] PSCATTER_GATHER_LIST ScatterGather,
  [in] PVOID Context
)
{...}

Parámetros

[in] DeviceObject

Puntero proporcionado por el autor de la llamada a una estructura DEVICE_OBJECT. Este es el objeto de dispositivo para el dispositivo de destino, creado previamente por la rutina de addDevice del controlador.

[in] Irp

Puntero proporcionado por el autor de la llamada a una estructura de IRP que describe la operación de E/S, si el controlador tiene una rutina StartIo. De lo contrario, no se usa.

[in] ScatterGather

Puntero proporcionado por el autor de la llamada a una estructura SCATTER_GATHER_LIST que describe las regiones de dispersión y recopilación.

[in] Context

Puntero proporcionado por el autor de la llamada a la información de contexto definida por el controlador, especificada en una llamada anterior a AllocateAdapterChannel.

Valor devuelto

Ninguno

Observaciones

Para registrar una rutina de AdapterListControl para un objeto de dispositivo específico, un controlador debe llamar a IoGetDmaAdapter para obtener un objeto de adaptador y, a continuación, llamar a GetScatterGatherList para solicitar el uso del adaptador y para proporcionar la dirección de la rutina AdapterListControl de. Cuando el adaptador está libre, el sistema llama a la rutina AdapterListControl.

Ejemplos

Para definir un AdapterListControl rutina de devolución de llamada, primero debe proporcionar una declaración de función que identifique el tipo de rutina de devolución de llamada que está definiendo. Windows proporciona un conjunto de tipos de función de devolución de llamada para controladores. Declarar una función mediante los tipos de función de devolución de llamada ayuda a Análisis de código para controladores, comprobador de controladores estáticos (SDV) y otras herramientas de comprobación encuentran errores y es un requisito para escribir controladores para el sistema operativo Windows.

Por ejemplo, para definir una rutina de devolución de llamada AdapterListControl denominada MyAdapterListControl, use el tipo DRIVER_LIST_CONTROL tal como se muestra en este ejemplo de código:

DRIVER_LIST_CONTROL MyAdapterListControl;

A continuación, implemente la rutina de devolución de llamada de la siguiente manera:

_Use_decl_annotations_
VOID
  MyAdapterListControl(
    struct _DEVICE_OBJECT  *DeviceObject,
    struct _IRP  *Irp,
    PSCATTER_GATHER_LIST  ScatterGather,
    PVOID  Context
    )
  {
      // Function body
  }

El tipo de función DRIVER_LIST_CONTROL se define en el archivo de encabezado Wdm.h. Para identificar con mayor precisión los errores al ejecutar las herramientas de análisis de código, asegúrese de agregar la anotación _Use_decl_annotations_ a la definición de función. La anotación _Use_decl_annotations_ garantiza que se usen las anotaciones que se aplican al tipo de función DRIVER_LIST_CONTROL en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, vea Declarar funciones mediante tipos de rol de función para controladores WDM. Para obtener información sobre _Use_decl_annotations_, vea Anotación del comportamiento de la función.

Para obtener información detallada sobre cómo implementar una rutina de AdapterListControl, consulte Using Scatter/Gather DMA.

Requisitos

Requisito Valor
de la plataforma de destino de Escritorio
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
irQL Se llama en DISPATCH_LEVEL.