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.
|
IoTargetRequestServiceTime |
Indique à Storport la durée requise pour traiter une demande spécifiée.
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
|
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.
|
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é.
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é.
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.
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) |