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


Функция StorPortNotification (storport.h)

Драйвер мини-порта использует подпрограмму StorPortNotification для уведомления драйвера Storport об определенных событиях и условиях.

StorPortNotification принимает переменное количество параметров в зависимости от указанного типа уведомления.

Синтаксис

STORPORT_API VOID StorPortNotification(
  SCSI_NOTIFICATION_TYPE NotificationType,
  PVOID                  HwDeviceExtension,
  ...                    
);

Параметры

NotificationType

Указывает тип уведомления, который может быть одним из следующих значений.

Тип уведомления Описание
BufferOverrunDetected Этот тип уведомления не имеет аргументов и дает драйверу мини-порта возможность проверить ошибку в системе при обнаружении повреждения.
BusChangeDetected Указывает, что целевое устройство могло быть добавлено или удалено из динамической шины. Чтобы использовать этот тип уведомления, добавьте необязательный параметр PathId, указывающий порт или шину SCSI, где было обнаружено изменение.
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_opt_ UCHAR                  PathId
);
IoTargetRequestServiceTime Указывает Storport время, необходимое для обработки указанного запроса.
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ ULONGLONG              Duration,
  _In_ PSCSI_REQUEST_BLOCK    Srb
);

Длительность [in]

Длительность времени обслуживания, необходимого для Srb, в 100 единицах наносекунд.

Srb [in]

Блок запроса для задания времени обслуживания.

LinkDown Указывает, что ссылка не работает и, вероятно, будет отключена в течение некоторого времени. StorPort приостановит работу адаптера в ответ на это уведомление.
LinkUp Указывает, что ссылка восстановлена. StorPort перезапустит адаптер, чтобы он смог возобновить работу в ответ на это уведомление. Драйверы мини-портов не должны отправлять это уведомление, если только ссылка не отключена.
QueryTickCount Этот тип уведомления возвращает LARGE_INTEGER, содержащий значение из KeQueryTickCount. Значение, возвращаемое в TickCount, — это количество прерываний таймера интервала, произошедших с момента загрузки системы.
VOID StorPortNotification(
  _In_    SCSI_NOTIFICATION_TYPE NotificationType,
  _In_    PVOID                  HwDeviceExtension,
  _Inout_ PLARGE_INTEGER         TickCount
);
RequestComplete Указывает, что заданный SRB завершен. После отправки этого уведомления драйвер порта становится владельцем запроса. Параметр Srb представляет указатель на завершенный блок запроса SCSI. Драйвер мини-порта не должен пытаться получить доступ к запросу в Srb, и он не должен передавать Srb в другую подпрограмму.
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ PSCSI_REQUEST_BLOCK    Srb
);
RequestTimerCall Указывает, что драйвер мини-порта требует, чтобы драйвер порта вызывал подпрограмму HwStorTimer драйвера мини-порта в запрошенном количестве микросекунд.
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ PHW_TIMER              HwStorTimer,
  _In_ ULONG                  MiniportTimerValue
);

HwStorTimer [in]

Указатель на подпрограмму таймера, вызываемую после интервала времени, указанного в MiniportTimerValue.

MiniportTimerValue [in]

Указывает интервал, по истечении которого вызывается подпрограмма таймера, на которую указывает HwStorTimer. Это положительное значение, указанное в микросекундах. Значение 0 отменит таймер. Разрешение системного таймера составляет примерно 10 миллисекундах.

ResetDetected Указывает, что HBA обнаружил сброс в шине. После отправки этого уведомления драйвер мини-порта по-прежнему отвечает за выполнение активных запросов. Драйвер порта будет управлять всеми необходимыми задержками сброса шины.
WMIEvent Указывает, что драйвер мини-порта обнаружил событие, для которого зарегистрировано одно или несколько потребителей данных WMI. Обратите внимание, что параметр WmiEvent ограничен не более 128 байтами. Если размер WmiEvent превышает 128 байт, он будет игнорироваться.
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_     PWNODE_EVENT_ITEM      WMIEvent,
  _In_     UCHAR                  PathId,
  _In_opt_ UCHAR                  TargetId,
  _In_opt_ UCHAR                  Lun
);

WMIEvent [in]

Указатель на структуры событий, которые содержат сведения о событии WMI, обнаруженном драйвером мини-порта.

PathId [in]

Указывает порт или шину SCSI для запроса. Задайте для этого параметра значение 0xff для устройства адаптера. В противном случае задайте допустимый идентификатор пути.

TargetId [in, необязательный]

Указывает целевой контроллер или устройство в шине. Этот параметр не используется, если событие предназначено для адаптера.

Lun [in, необязательный]

Указывает логический номер устройства. Этот параметр не используется, если событие предназначено для адаптера.

WMIReregister Указывает, что драйвер мини-порта изменил элементы данных или количество экземпляров заданного блока данных, зарегистрированного ранее путем вызова IoWMIRegistrationControl.
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_     UCHAR                  PathId,
  _In_opt_ UCHAR                  TargetId,
  _In_opt_ UCHAR                  Lun
);

PathId [in]

Указывает порт или шину SCSI для запроса. Задайте для этого параметра значение 0xff для устройства адаптера. В противном случае задайте допустимый идентификатор пути.

TargetId [in, необязательный]

Указывает целевой контроллер или устройство в шине. Этот параметр не используется, если регистрация для адаптера.

Lun [in, необязательный]

Указывает логический номер устройства. Этот параметр не используется, если регистрация для адаптера.

HwDeviceExtension

Указатель на расширение аппаратного устройства. Это область хранения HBA, которую драйвер порта выделяет и инициализирует от имени драйвера мини-порта. Драйверы мини-портов обычно хранят сведения, относящиеся к HBA, в этом расширении, такие как состояние HBA и сопоставленные диапазоны доступа для HBA. Эта область доступна драйверу мини-порта сразу после того, как драйвер мини-порта вызывает StorPortInitialize. Драйвер порта освобождает эту память при удалении устройства.

...

Дополнительные параметры.

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

Нет.

Remarks

StorPortNotification — это полиморфная функция, которая обрабатывает множество различных типов запросов, что затрудняет добавление заметок таким образом, чтобы охватывать все возможные варианты использования. Так как StorPortNotification возвращает VOID, подсистема сканирования должна предполагать, что LockHandle был получен по запросу.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть storport.h (включая Storport.h)
Библиотека Storport.lib
Правила соответствия DDI StorPortNotification2(storport), StorPortStatusPending, StorPortTimer(storport)

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

StorPortInitialize