Функция StorPortNotification (storport.h)
Драйвер мини-порта использует подпрограмму StorPortNotification для уведомления драйвера Storport об определенных событиях и условиях.
StorPortNotification принимает переменное количество параметров в зависимости от указанного типа уведомления.
Синтаксис
STORPORT_API VOID StorPortNotification(
SCSI_NOTIFICATION_TYPE NotificationType,
PVOID HwDeviceExtension,
...
);
Параметры
NotificationType
Указывает тип уведомления, который может быть одним из следующих значений.
Тип уведомления | Описание |
---|---|
BufferOverrunDetected | Этот тип уведомления не имеет аргументов и дает драйверу мини-порта возможность проверить ошибку в системе при обнаружении повреждения. |
BusChangeDetected |
Указывает, что целевое устройство могло быть добавлено или удалено из динамической шины. Чтобы использовать этот тип уведомления, добавьте необязательный параметр PathId, указывающий порт или шину SCSI, где было обнаружено изменение.
|
IoTargetRequestServiceTime |
Указывает Storport время, необходимое для обработки указанного запроса.
Длительность [in] Длительность времени обслуживания, необходимого для Srb, в 100 единицах наносекунд. Srb [in] Блок запроса для задания времени обслуживания. |
LinkDown | Указывает, что ссылка не работает и, вероятно, будет отключена в течение некоторого времени. StorPort приостановит работу адаптера в ответ на это уведомление. |
LinkUp | Указывает, что ссылка восстановлена. StorPort перезапустит адаптер, чтобы он смог возобновить работу в ответ на это уведомление. Драйверы мини-портов не должны отправлять это уведомление, если только ссылка не отключена. |
QueryTickCount |
Этот тип уведомления возвращает LARGE_INTEGER, содержащий значение из KeQueryTickCount. Значение, возвращаемое в TickCount, — это количество прерываний таймера интервала, произошедших с момента загрузки системы.
|
RequestComplete |
Указывает, что заданный SRB завершен. После отправки этого уведомления драйвер порта становится владельцем запроса. Параметр Srb представляет указатель на завершенный блок запроса SCSI. Драйвер мини-порта не должен пытаться получить доступ к запросу в Srb, и он не должен передавать Srb в другую подпрограмму.
|
RequestTimerCall |
Указывает, что драйвер мини-порта требует, чтобы драйвер порта вызывал подпрограмму HwStorTimer драйвера мини-порта в запрошенном количестве микросекунд.
HwStorTimer [in] Указатель на подпрограмму таймера, вызываемую после интервала времени, указанного в MiniportTimerValue. MiniportTimerValue [in] Указывает интервал, по истечении которого вызывается подпрограмма таймера, на которую указывает HwStorTimer. Это положительное значение, указанное в микросекундах. Значение 0 отменит таймер. Разрешение системного таймера составляет примерно 10 миллисекундах. |
ResetDetected | Указывает, что HBA обнаружил сброс в шине. После отправки этого уведомления драйвер мини-порта по-прежнему отвечает за выполнение активных запросов. Драйвер порта будет управлять всеми необходимыми задержками сброса шины. |
WMIEvent |
Указывает, что драйвер мини-порта обнаружил событие, для которого зарегистрировано одно или несколько потребителей данных WMI. Обратите внимание, что параметр WmiEvent ограничен не более 128 байтами. Если размер WmiEvent превышает 128 байт, он будет игнорироваться.
WMIEvent [in] Указатель на структуры событий, которые содержат сведения о событии WMI, обнаруженном драйвером мини-порта. PathId [in] Указывает порт или шину SCSI для запроса. Задайте для этого параметра значение 0xff для устройства адаптера. В противном случае задайте допустимый идентификатор пути. TargetId [in, необязательный] Указывает целевой контроллер или устройство в шине. Этот параметр не используется, если событие предназначено для адаптера. Lun [in, необязательный] Указывает логический номер устройства. Этот параметр не используется, если событие предназначено для адаптера. |
WMIReregister |
Указывает, что драйвер мини-порта изменил элементы данных или количество экземпляров заданного блока данных, зарегистрированного ранее путем вызова IoWMIRegistrationControl.
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) |