Compartir a través de


HW_DPC_ROUTINE función de devolución de llamada (storport.h)

La rutina HwStorDpcRoutine es una rutina diferida para su ejecución en DISPATCH IRQL mediante el mecanismo de llamada a procedimiento diferido (DPC).

Sintaxis

HW_DPC_ROUTINE HwDpcRoutine;

void HwDpcRoutine(
  PSTOR_DPC Dpc,
  PVOID HwDeviceExtension,
  PVOID SystemArgument1,
  PVOID SystemArgument2
)
{...}

Parámetros

Dpc

Puntero a un contexto DPC de Storport.

HwDeviceExtension

Puntero a la extensión de dispositivo por adaptador.

SystemArgument1

Puntero a la información proporcionada por el autor de la llamada.

SystemArgument2

Puntero a la información proporcionada por el autor de la llamada.

Valor devuelto

None

Observaciones

Cuando un controlador de minipuerto llama a StorPortInitializeDpc para inicializar un DPC, debe cargar el parámetro HwDpcRoutine de la rutina StorPortInitializeDpc con un puntero a la rutina HwStorDpcRoutine .

Se garantiza que cualquier instancia determinada de una rutina DPC se sincronice con otras instancias de la rutina DPC. Una rutina DPC puede sincronizarse con la rutina HwStorStartIo o con la rutina HwStorInterrupt mediante la adquisición del bloqueo de número adecuado con una llamada a StorPortAcquireSpinLock. Para obtener más información sobre la administración de bloqueos de número en rutinas DPC, consulte StorPortIssueDpc.

El nombre HwStorDpcRoutine es simplemente un marcador de posición. El prototipo real de esta rutina se define en storport.h de la siguiente manera:

typedef
BOOLEAN
HW_DPC_ROUTINE (
  _In_  PSTOR_DPC Dpc,
  _In_  PVOID HwDeviceExtension,
  _In_opt_  PVOID SystemArgument1,
  _In_opt_  PVOID SystemArgument2
  );

El controlador de puerto llama a la rutina HwStorDpcRoutine en DISPATCH IRQL.

Ejemplos

Para definir una función de devolución de llamada HwStorDpcRoutine , primero debe proporcionar una declaración de función que identifique el tipo de función 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 HwStorDpcRoutine denominada MyHwDpcRoutine, use el tipo HW_DPC_ROUTINE como se muestra en este ejemplo de código:

HW_DPC_ROUTINE MyHwDpcRoutine;

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

_Use_decl_annotations_
BOOLEAN
MyHwDpcRoutine (
  _In_  PSTOR_DPC Dpc,
  _In_  PVOID HwDeviceExtension,
  _In_opt_  PVOID SystemArgument1,
  _In_opt_  PVOID SystemArgument2
  );
  {
      ...
  }

El tipo de función HW_DPC_ROUTINE se define en el archivo de encabezado Storport.h. Para identificar con más 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 HW_DPC_ROUTINE en el archivo de encabezado. Para obtener más información sobre los requisitos de las declaraciones de función, consulte Declaración de funciones mediante tipos de rol de función para controladores de Storport. Para obtener información sobre Use_decl_annotations, consulte Anotación del comportamiento de la función.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado storport.h (incluya Storport.h)
IRQL DISPATCH_LEVEL (consulte la sección Comentarios).

Consulte también

Cuando un controlador de minipuerto llama a para inicializar un DPC, debe cargar el parámetro HwDpcRoutine de la rutina StorPortInitializeDpc con un puntero a la rutina HwStorDpcRoutine .

Se garantiza que cualquier instancia determinada de una rutina DPC se sincronice con otras instancias de la rutina DPC. Una rutina DPC puede sincronizarse con la rutina o con la rutina mediante la adquisición del bloqueo de número adecuado con una llamada a . Para obtener más información sobre la administración de bloqueos de número dentro de rutinas DPC, vea .

HwStorInterrupt

HwStorStartIo

StorPortAcquireSpinLock

StorPortInitializeDpc

StorPortIssueDpc