Функция StorPortNotification (storport.h)
Драйвер минипорта использует подпрограмму StorPortNotification для уведомления драйвера Storport о определенных событиях и условиях.
StorPortNotification принимает переменное количество параметров в зависимости от указанного типа уведомления.
Синтаксис
STORPORT_API VOID StorPortNotification(
SCSI_NOTIFICATION_TYPE NotificationType,
PVOID HwDeviceExtension,
...
);
Параметры
NotificationType
Указывает тип уведомления, который может быть одним из следующих значений.
Тип уведомления | Описание |
---|---|
BufferOverrunDetected | Этот тип уведомления не имеет аргументов и предоставляет драйверу минипорта возможность проверить систему, если она обнаруживает повреждение. |
BusChangeDetected |
Указывает, что целевое устройство, возможно, было добавлено или удалено из динамической шины. Чтобы использовать этот тип уведомления, включите необязательный параметр PathId, чтобы указать порт SCSI или шину, в которой было обнаружено изменение.
|
IoTargetRequestServiceTime |
Указывает на Storport время, необходимое для обработки указанного запроса.
Длительность [в] Длительность времени службы, необходимого для 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 миллисекунда. |
СбросDetected | Указывает, что 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. Драйвер портов освобождает эту память при удалении устройства.
...
Дополнительные параметры.
Возвращаемое значение
Никакой.
Замечания
StorPortNotification представляет собой полиморфную функцию, которая обрабатывает множество различных типов запросов, что затрудняет аннотацию способом, который будет охватывать все возможные способы использования. Так как StorPortNotification возвращает VOID, модуль сканирования должен предположить, что LockHandle был получен по запросу.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | storport.h (include Storport.h) |
библиотеки | Storport.lib |
правил соответствия DDI | StorPortNotification2(storport), StorPortStatusPending, StorPortTimer(storport) |