Share via


Fonction StorPortLogSystemEvent (storport.h)

La routine StorPortLogSystemEvent donne aux pilotes miniport un accès complet aux fonctionnalités de la fonctionnalité d’événement du noyau Windows, ce qui permet aux pilotes miniports de créer des entrées de journal des événements qui sont vraiment utiles pour résoudre les problèmes de stockage. Il offre une meilleure alternative à la fonction de journalisation des événements de pilote miniport existante, StorPortLogError.

Syntaxe

ULONG StorPortLogSystemEvent(
  [in]      PVOID                   HwDeviceExtension,
  [in, out] PSTOR_LOG_EVENT_DETAILS LogDetails,
  [in, out] PULONG                  MaximumSize
);

Paramètres

[in] 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 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.

[in, out] LogDetails

Une structure STOR_LOG_EVENT_DETAILS qui contient des informations à afficher dans l’entrée du journal des événements système.

[in, out] MaximumSize

Variable pour recevoir la taille combinée maximale des chaînes et des données de vidage du miniport. Retourné uniquement si la fonction échoue et retourne une valeur STOR_STATUS_INVALID_BUFFER_SIZE. Ce paramètre est facultatif.

Valeur renvoyée

Code de retour Description
STOR_STATUS_NOT_IMPLEMENTED
Cette fonction n’est pas implémentée sur le système d’exploitation actif.
STOR_STATUS_INVALID_PARAMETER
Un paramètre non valide a été transmis.
STOR_STATUS_INVALID_IRQL
L’appel a été effectué à l’IRQL > DISPATCH_LEVEL.
STOR_STATUS_INSUFFICIENT_RESOURCES
Les ressources système étaient insuffisantes pour effectuer la demande.
STOR_STATUS_UNSUPPORTED_VERSION :
Une version non prise en charge (par exemple, plus actuelle) de la structure STOR_LOG_EVENT_DETAILS a été spécifiée. Lorsque cette valeur est retournée, LogDetails->InterfaceRevision est définie sur la dernière version prise en charge.
STOR_STATUS_INVALID_BUFFER_SIZE
Les tampons passés à la fonction étaient trop volumineux. Lorsque cette valeur est retournée, MaximumSize est défini sur la taille combinée maximale des chaînes et des données de vidage du miniport.
STOR_STATUS_SUCCESS
L’opération de journal s’est terminée avec succès.

Remarques

Pour comprendre comment utiliser au mieux les codes d’erreur personnalisés, consultez Extensions du journal des erreurs Storport. La routine StorPortLogSystemEvent doit être appelée dans IRQL <= DISPATCH_LEVEL. Si vous passez une version plus récente de STOR_LOG_EVENT_DETAILS que celle prise en charge par cette build, cette fonction remplace le champ InterfaceRevision par la dernière version prise en charge et retourne STOR_STATUS_UNSUPPORTED_VERSION. Le champ InterfaceRevision de STOR_LOG_EVENT_DETAILS est une valeur 32 bits. Toutefois, seuls les trois octets les plus significatifs sont utilisés pour la validation. L’octet faible est réservé pour faire la distinction entre les variantes mineures compatibles d’une version particulière. Par instance, une structure de révision 0x00000101 est compatible avec un Storport qui implémente des 0x00000100 de révision de l’interface, bien qu’il soit possible que certaines fonctionnalités mineures et non critiques soient perdues. Si vous spécifiez une taille combinée de données de vidage et de chaînes qui dépasse la taille d’entrée maximale autorisée dans le journal des événements, l’entier pointé par MaximumSize est défini sur la taille maximale autorisée des chaînes et des données de vidage miniport, et STOR_INVALID_BUFFER_SIZE est retourné. Bien que cette fonction accepte des valeurs ULONG pour les spécificateurs de chemin d’accès, de cible et d’adresse LUN, les valeurs sont tronquées en valeurs UCHAR, car Storport ne prend en charge en interne que les valeurs 8 bits pour ces spécificateurs.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête storport.h (inclure Storport.h)
Règles de conformité DDI StorPortIrql(storport)

Voir aussi

StorPortLogError