Partager via


Fonction StorPortNotification (storport.h)

Le pilote miniport utilise la routine StorPortNotification pour informer le pilote Storport de certains événements et conditions.

StorPortNotification prend un nombre variable de paramètres en fonction du type de notification spécifié.

Syntaxe

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

Paramètres

NotificationType

Spécifie le type de notification, qui peut être l’une des valeurs suivantes.

Type de notification Description
BufferOverrunDetected Ce type de notification n’a aucun argument et donne au pilote miniport la possibilité de vérifier les bogues du système s’il détecte une altération.
BusChangeDetected Indique qu’un appareil cible a peut-être été ajouté ou supprimé d’un bus dynamique. Pour utiliser ce type de notification, incluez un paramètre PathId facultatif pour indiquer le port ou le bus SCSI où la modification a été détectée.
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_opt_ UCHAR                  PathId
);
IoTargetRequestServiceTime Indique à Storport la durée requise pour traiter une demande spécifiée.
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ ULONGLONG              Duration,
  _In_ PSCSI_REQUEST_BLOCK    Srb
);

Durée [in]

Durée du temps de service requis pour Srb en unités de 100 nanosecondes.

Srb [in]

Bloc de requête pour lequel définir l’heure du service.

LinkDown Indique que le lien est en panne et qu’il sera probablement arrêté pendant un certain temps. StorPort interrompt l’adaptateur en réponse à cette notification.
Linkup Indique que le lien a été restauré. StorPort redémarre l’adaptateur afin qu’il puisse reprendre le fonctionnement en réponse à cette notification. Les pilotes miniport ne doivent pas envoyer cette notification, sauf si le lien est arrêté.
QueryTickCount Ce type de notification retourne une LARGE_INTEGER qui contient la valeur de KeQueryTickCount. La valeur retournée dans TickCount est le nombre d’interruptions du minuteur d’intervalle qui se sont produites depuis le démarrage du système
VOID StorPortNotification(
  _In_    SCSI_NOTIFICATION_TYPE NotificationType,
  _In_    PVOID                  HwDeviceExtension,
  _Inout_ PLARGE_INTEGER         TickCount
);
RequestComplete Indique que le SRB donné est terminé. Une fois cette notification envoyée, le pilote de port est propriétaire de la demande. Le paramètre Srb représente un pointeur vers le bloc de requête SCSI terminé. Le pilote miniport ne doit pas tenter d’accéder à la demande dans Srb, et il ne doit pas passer Srb à une autre routine.
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ PSCSI_REQUEST_BLOCK    Srb
);
RequestTimerCall Indique que le pilote miniport nécessite que le pilote de port appelle la routine HwStorTimer du pilote miniport au nombre de microsecondes demandé.
VOID StorPortNotification(
  _In_ SCSI_NOTIFICATION_TYPE NotificationType,
  _In_ PVOID                  HwDeviceExtension,
  _In_ PHW_TIMER              HwStorTimer,
  _In_ ULONG                  MiniportTimerValue
);

HwStorTimer [in]

Pointeur vers une routine du minuteur appelée après l’intervalle de temps spécifié dans MiniportTimerValue.

MiniportTimerValue [in]

Indique l’intervalle après lequel la routine du minuteur pointée par HwStorTimer est appelée. Il s’agit d’une valeur positive spécifiée en microsecondes. La valeur 0 annule le minuteur. La résolution du minuteur système est d’environ 10 millisecondes.

ResetDetected Indique que l’adaptateur HBA a détecté une réinitialisation sur le bus. Une fois cette notification envoyée, le pilote miniport est toujours responsable de l’exécution des demandes actives. Le pilote de port gère tous les retards de réinitialisation de bus requis.
WMIEvent Indique que le pilote miniport a détecté un événement pour lequel un ou plusieurs consommateurs de données WMI sont inscrits. Notez que le paramètre WmiEvent est limité à un maximum de 128 octets. Si WmiEvent est supérieur à 128 octets, il sera ignoré.
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]

Pointeur vers des structures d’événements qui ont des informations sur un événement WMI détecté par le pilote miniport.

PathId [in]

Indique le port SCSI ou le bus de la demande. Définissez ce paramètre sur 0xff pour un périphérique adaptateur. Sinon, définissez sur un ID de chemin d’accès valide.

TargetId [in, facultatif]

Indique le contrôleur ou l’appareil cible sur le bus. Ce paramètre n’est pas utilisé lorsque l’événement concerne un adaptateur.

Lun [in, facultatif]

Indique le numéro d’unité logique de l’appareil. Ce paramètre n’est pas utilisé lorsque l’événement concerne un adaptateur.

WMIReregister Indique que le pilote miniport a modifié les éléments de données ou le nombre d’instances d’un bloc de données donné précédemment inscrit en appelant IoWMIRegistrationControl.
VOID StorPortNotification(
  _In_     SCSI_NOTIFICATION_TYPE NotificationType,
  _In_     PVOID                  HwDeviceExtension,
  _In_     UCHAR                  PathId,
  _In_opt_ UCHAR                  TargetId,
  _In_opt_ UCHAR                  Lun
);

PathId [in]

Indique le port SCSI ou le bus de la demande. Définissez ce paramètre sur 0xff pour un périphérique adaptateur. Sinon, définissez sur un ID de chemin d’accès valide.

TargetId [in, facultatif]

Indique le contrôleur ou l’appareil cible sur le bus. Ce paramètre n’est pas utilisé lorsque l’inscription concerne une carte.

Lun [in, facultatif]

Indique le numéro d’unité logique de l’appareil. Ce paramètre n’est pas utilisé lorsque l’inscription concerne une carte.

HwDeviceExtension

Pointeur vers l’extension de périphérique matériel. Il s’agit d’une zone de stockage par HBA que le pilote de port alloue et initialise pour le compte du pilote miniport. Les pilotes miniport stockent généralement des informations spécifiques à L’adaptateur HBA dans cette extension, telles que l’état de l’adaptateur HBA et les plages d’accès mappées pour l’adaptateur HBA. Cette zone est disponible pour le pilote miniport immédiatement après que le pilote miniport a appelé StorPortInitialize. Le pilote de port libère cette mémoire lorsqu’il supprime l’appareil.

...

Paramètres supplémentaires.

Valeur retournée

Aucun.

Notes

StorPortNotification est une fonction polymorphe qui gère de nombreux types de requêtes différents, ce qui rend difficile l’annotation d’une manière qui couvre toutes les utilisations possibles. Étant donné que StorPortNotification retourne VOID, le moteur d’analyse doit supposer que le LockHandle a été acquis comme demandé.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête storport.h (inclure Storport.h)
Bibliothèque Storport.lib
Règles de conformité DDI StorPortNotification2(storport), StorPortStatusPending, StorPortTimer(storport)

Voir aussi

StorPortInitialize