Поделиться через


функция обратного вызова HW_DPC_ROUTINE (storport.h)

Подпрограмма HwStorDpcRoutine — это подпрограмма, которая откладывается для выполнения в DISPATCH IRQL с помощью механизма отложенного вызова процедуры (DPC).

Синтаксис

HW_DPC_ROUTINE HwDpcRoutine;

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

Параметры

Dpc

Указатель на контекст DPC Storport.

HwDeviceExtension

Указатель на расширение устройства для каждого адаптера.

SystemArgument1

Указатель на сведения, предоставленные вызывающим.

SystemArgument2

Указатель на сведения, предоставленные вызывающим.

Возвращаемое значение

None

Remarks

Когда драйвер мини-порта вызывает StorPortInitializeDpc для инициализации DPC, он должен загрузить параметр HwDpcRoutine подпрограммы StorPortInitializeDpcDpc с указателем на подпрограмму HwStorDpcRoutine .

Любой конкретный экземпляр подпрограммы DPC гарантированно будет синхронизирован с другими экземплярами подпрограммы DPC. Подпрограмма DPC может синхронизироваться с подпрограммой HwStorStartIo или с подпрограммой HwStorInterrupt , получив соответствующую блокировку спина с помощью вызова StorPortAcquireSpinLock. Дополнительные сведения об управлении спин-блокировками в подпрограммах DPC см. в статье StorPortIssueDpc.

Имя HwStorDpcRoutine — это просто заполнитель. Фактический прототип этой подпрограммы определен в storport.h следующим образом:

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

Драйвер порта вызывает подпрограмму HwStorDpcRoutine по адресу DISPATCH IRQL.

Примеры

Чтобы определить функцию обратного вызова HwStorDpcRoutine , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции обратного вызова. Windows предоставляет набор типов функций обратного вызова для драйверов. Объявление функции с помощью типов функций обратного вызова помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить подпрограмму обратного вызова HwStorDpcRoutine с именем MyHwDpcRoutine, используйте тип HW_DPC_ROUTINE , как показано в следующем примере кода:

HW_DPC_ROUTINE MyHwDpcRoutine;

Затем реализуйте процедуру обратного вызова следующим образом:

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

Тип функции HW_DPC_ROUTINE определен в файле заголовка Storport.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, применяемых к типу функции HW_DPC_ROUTINE в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов Storport. Сведения о Use_decl_annotations см. в статье Поведение функции с заметками.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть storport.h (включая Storport.h)
IRQL DISPATCH_LEVEL (см. раздел "Примечания"))

См. также раздел

Когда драйвер мини-порта вызывает для инициализации DPC, он должен загрузить параметр HwDpcRoutineподпрограммы StorPortInitializeDpcDpc с указателем на подпрограмму HwStorDpcRoutine .

Любой конкретный экземпляр подпрограммы DPC гарантированно будет синхронизирован с другими экземплярами подпрограммы DPC. Подпрограмма DPC может синхронизироваться с подпрограммой или с ней, получив соответствующую блокировку спина с помощью вызова . Дополнительные сведения об управлении спин-блокировками в подпрограммах DPC см. в разделе .

HwStorInterrupt

HwStorStartIo

StorPortAcquireSpinLock

StorPortInitializeDpc

StorPortIssueDpc