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


Функция 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
);

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

Длительность времени службы, необходимого для 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 миллисекунда.

СбросDetected Указывает, что 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. Драйвер портов освобождает эту память при удалении устройства.

...

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

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

Никакой.

Замечания

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

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка storport.h (include Storport.h)
библиотеки Storport.lib
правил соответствия DDI StorPortNotification2(storport), StorPortStatusPending, StorPortTimer(storport)

См. также

StorPortInitialize