Partager via


Routines de prise en charge du pilote Storport

Cette page catégorise certaines des routines de prise en charge fournies aux miniports par le pilote Storport fourni par le système. Veuillez consulter la section storport.h pour obtenir la liste complète.

Pour obtenir une liste des routines du miniport du pilote Storport, veuillez consulter la section Routines de miniport du pilote Storport.

Routines de prise en charge de l’accès direct à la mémoire

Le pilote Storport fournit les routines de prise en charge de l’accès direct à la mémoire (DMA) suivantes.

Routine Description
StorPortBuildScatterGatherList Crée une liste scatter/gather pour le tampon de données spécifié.
StorPortGetScatterGatherList Récupère la liste scatter/gather associée au bloc de requête SCSI (SRB) spécifié.
StorPortPutScatterGatherList Libère toutes les ressources associées à une liste scatter/gather précédemment créée par un appel à la routine StorPortBuildScatterGatherList.

Routines de prise en charge générale

Le pilote Storport fournit les routines de prise en charge générale suivantes.

Routine Description
StorPortDebugPrint Imprime une chaîne de débogage dans le débogueur du noyau, si celui-ci est attaché.
StorPortEtwEvent2 Publie un événement Event Tracing for Windows (ETW) dans un canal de trace de stockage. Le miniport peut consigner deux paramètres ETW à usage général. Les paramètres ETW sont exprimés sous forme de deux paires nom-valeur.
StorPortEtwEvent4 Publie un événement ETW dans un canal de trace de stockage. Le miniport peut consigner quatre paramètres ETW à usage général. Les paramètres ETW sont exprimés sous forme de quatre paires nom-valeur.
StorPortEtwEvent8 Publie un événement ETW dans un canal de trace de stockage. Le miniport peut consigner huit paramètres ETW à usage général. Les paramètres ETW sont exprimés sous forme de huit paires nom-valeur.
StorPortGetActivityIdSrb Récupère l’identifiant d’activité ETW associé à un bloc de requête.
StorPortGetDeviceObjects Renvoie les objets de périphérique associés à la pile de périphériques de l’adaptateur. Les objets de périphérique retournés sont les objets de périphérique fonctionnels et physiques de l’adaptateur, ainsi que l’objet de périphérique auquel l’objet de périphérique fonctionnel est attaché.
StorPortGetSystemPortNumber Récupère le numéro de port attribué par le système pour un adaptateur de stockage.
StorPortInitializeSListHead Initialise la tête d’une liste chaînée unilatérale gérée par Storport.
StorPortInterlockedFlushSList Supprime tous les éléments d’une liste chaînée unilatérale gérée par Storport. L’accès à la liste est synchronisé sur un système multiprocesseur.
StorPortInterlockedPopEntrySList Supprime un élément de l’avant d’une liste chaînée unilatérale gérée par Storport. L’accès à la liste est synchronisé sur un système multiprocesseur.
StorPortInterlockedPushEntrySList Insère un élément à l’avant d’une liste chaînée unilatérale gérée par Storport. L’accès à la liste est synchronisé sur un système multiprocesseur.
StorPortInvokeAcpiMethod Exécute une méthode ACPI pour un périphérique de stockage.
StorPortIsCurrentOsInstallationUpgrade Vérifie si l’installation actuelle de Windows est une mise à niveau à partir d’une version précédente ou non.
StorPortIsDeviceOperationAllowed Permet à un miniport de déterminer si les opérations pour une certaine classe de gestion de périphériques sont autorisées.
StorPortLogError Notifie au pilote de port qu’une erreur s’est produite.
StorPortLogTelemetry Consigne un événement de télémétrie du miniport pour aider à diagnostiquer ou à recueillir des informations utiles.
StorPortLogSystemEvent Donne aux pilotes miniport un accès complet aux capacités de l’infrastructure d’événements du noyau Windows, permettant aux pilotes miniport de créer des entrées dans le journal d’événements réellement utiles pour le dépannage des problèmes de stockage. Cela fournit une meilleure alternative à StorPortLogError.
StorPortQueryDepthSList Récupère le nombre d’entrées dans une liste chaînée unilatérale gérée par Storport.
StorPortQueryPerformanceCounter Interroge et renvoie la valeur actuelle du compteur de performance du système.
StorPortQuerySystemTime Obtient l’heure actuelle du système.
StorPortRegistryRead Lit les données du registre pour le périphérique et la valeur indiqués.
StorPortRegistryReadAdapterKey Lit les clés d’adaptateur du registre matériel ou de périphérique situées dans le registre à HKLM/CurrentControlSet/Enum/<chemin d’instance>/DeviceParameters/....
StorPortRegistryWriteAdapterKey Écrit les clés d’adaptateur du registre matériel ou de périphérique situées dans le registre à HKLM/CurrentControlSet/Enum/<chemin d’instance>/DeviceParameters/....
StorPortRegistryWrite Convertit les données du registre contenues dans un tampon spécifié d’ASCII en Unicode, puis écrit les données dans la zone de stockage par HBA du pilote miniport.

Routines de prise en charge du traitement des demandes d’E/S

Le pilote Storport fournit les routines de prise en charge du traitement des demandes d’E/S suivantes.

Routine Description
StorPortBusy Notifie au pilote de port que l’adaptateur est actuellement occupé, traitant des demandes en cours.
StorPortCompleteRequest Achève toutes les demandes en cours en définissant la valeur du statut SRB sur SrbStatus.
StorPortCompleteServiceIrp Appelée par un pilote miniport virtuel Storport lorsqu’il doit compléter une demande qu’il a reçue dans sa routine de rappel HwStorProcessServiceRequest.
StorPortDeviceBusy Notifie au pilote de port que l’unité logique spécifiée est actuellement occupée, traitant des demandes en cours.
StorPortDeviceReady Notifie au pilote de port que l’unité logique indiquée est prête à traiter de nouvelles demandes.
StorPortFreeWorker Libère un élément de travail Storport précédemment alloué par la routine StorPortInitializeWorker.
StorPortGetRequestInfo Récupère les informations de demande d’E/S associées à un bloc de requête SCSI (SRB) et les renvoie dans une structure STOR_REQUEST_INFO.
StorPortInitializeWorker Crée un nouvel élément de travail Storport qui s’exécute dans un thread de travail système.
StorPortQueueWorkItem Planifie l’exécution d’un élément de travail Storport dans le contexte d’un thread de travail système.
StorPortPause Met en pause un adaptateur pour la période de temps spécifiée.
StorPortPauseDevice Met en pause un périphérique d’unité logique spécifique pour la période de temps spécifiée.
StorPortReady Notifie au pilote de port que l’adaptateur n’est plus occupé.
StorPortResume Reprend un adaptateur mis en pause.
StorPortResumeDevice Reprend une unité logique précédemment mise en pause.

Routines de prise en charge de l’initialisation

Le pilote Storport fournit les routines de prise en charge de l’initialisation suivantes.

Routine Description
StorPortEnablePassiveInitialization Permet à la routine de rappel HwStorPassiveInitializeRoutine du miniport de s’exécuter à PASSIVE_LEVEL pendant l’initialisation du miniport.
StorPortGetActiveGroupCount Renvoie le nombre de groupes de processeurs présents dans le système.
StorPortGetActiveNodeCount Renvoie le nombre de nœuds présents dans le système.
StorPortGetBusData Récupère les informations de configuration spécifiques au bus nécessaires pour initialiser l’HBA.
StorPortGetCurrentProcessorNumber Récupère le numéro de processeur actuel à partir du noyau.
StorPortGetGroupAffinity Construit un masque des processeurs actifs dans un groupe demandé.
StorPortGetHighestNodeNumber Renvoie le plus grand numéro de nœud possible dans le système.
StorPortGetLogicalProcessorRelationship Renvoie les informations de relation pour un ou plusieurs types spécifiés. Ces types incluent des groupes, des packages physiques et des nœuds dans le système hôte. Les informations renvoyées incluent des masques d’affinité de processeur composés des processeurs logiques dans le système hôte. Ces processeurs logiques partagent les types de relation spécifiés.
StorPortGetLogicalUnit Renvoie un pointeur vers la zone de stockage par unité logique du pilote miniport.
StorPortGetNodeAffinity Construit un masque des processeurs actifs dans un nœud d’accès mémoire non uniforme (NUMA) demandé.
StorPortGetStartIoPerfParams Place les paramètres de performance pour une demande d’E/S donnée dans une structure STARTIO_PERFORMANCE_PARAMETERS.
StorPortInitialize Initialise les paramètres du pilote de port et les données d’extension. StorPortInitilize enregistre également les informations d’adaptateur fournies par le pilote miniport.
StorPortInitializePerfOpts Initialise les optimisations de performance que le pilote miniport et le pilote Storport prennent en charge à l’aide d’une structure PERF_CONFIGURATION_DATA.
StorPortSetAdapterBusType Utilisé pour ajuster le type de bus de l’adaptateur en fonction de sa configuration actuelle. Le fait de définir le type de bus avec cette routine vous permet de remplacer la propriété globale définie dans l’INF du miniport sans avoir à réinstaller le pilote. Cette capacité est utile dans des scénarios tels que la prise en charge RAID ou la prise en charge de plusieurs adaptateurs avec différents types de bus.
StorPortSetBusDataByOffset Écrit des informations de configuration spécifiques au bus.
StorPortSetDeviceQueueDepth Définit la profondeur maximale de la file d’attente de périphérique pour le périphérique indiqué.
StorPortSetPowerSettingNotificationGuids Permet à un miniport de recevoir des notifications de réglage de l’alimentation. Le miniport enregistre un tableau de GUID qui identifient les paramètres de gestion de l’alimentation pour recevoir des notifications de modification de l’alimentation.
StorPortSetUnitAttributes Enregistre les attributs d’alimentation d’un périphérique d’unité de stockage avec le pilote Storport.

Routines de prise en charge des interruptions

Le pilote Storport fournit les routines de prise en charge des interruptions suivantes.

Routine Description
StorPortGetMSIInfo Récupère les informations d’interruption signalée par message (MSI) pour le message spécifié.
StorPortSynchronizeAccess Fournit un accès synchronisé à l’extension de périphérique du pilote miniport.
StorPortInitializeDpc Initialise un appel de procédure différée (DPC) Storport.
StorPortIssueDpc Émet un DPC Storport.
StorPortStallExecution Interrompt l’exécution du pilote miniport.

Routines de prise en charge du verrouillage

Le pilote Storport fournit les routines de prise en charge du verrouillage suivantes.

Routine Description
StorPortAcquireMSISpinLock Acquiert le verrou tournant MSI (interruption signalée par message) associé au message spécifié.
StorPortAcquireSpinLock Acquiert le verrou tournant spécifié.
StorPortReleaseMSISpinLock Libère un verrou tournant MSI précédemment acquis pour le message spécifié.
StorPortReleaseSpinLock Libère un verrou tournant acquis par StorPortAcquireSpinLock.

Routines de prise en charge de la gestion de la mémoire

Le pilote Storport fournit les routines de prise en charge de la gestion de la mémoire suivantes.

Routine Description
StorPortAllocateContiguousMemorySpecifyCacheNode Alloue une plage de mémoire non mise en cache, non paginée et physiquement contiguë.
StorPortAllocateMdl Alloue un MDL pour décrire la mémoire de pool non paginée donnée.
StorPortAllocatePool Alloue un bloc de mémoire de pool non incohérente et non paginé.
StorPortAllocateRegistryBuffer Alloue un tampon qu’un miniport peut utiliser pour lire et écrire des données du registre.
StorPortBuildMdlForNonPagedPool Met à jour le MDL pour décrire la mémoire non paginée associée.
StorPortConvertUlongToPhysicalAddress Convertit une adresse non signée en une adresse physique.
StorPortConvertPhysicalAddressToULong64 Convertit une adresse physique en une valeur ULONG64.
StorPortFreeMdl Libère une liste de descripteurs de mémoire (MDL) décrivant la mémoire de pool non paginée.
StorPortFreeContiguousMemorySpecifyCache Désalloue une plage de mémoire non mise en cache dans la portion non paginée de l’espace d’adressage système.
StorPortFreePool Libère un bloc de mémoire précédemment alloué par un appel à la routine StorPortAllocatePool.
StorPortFreeRegistryBuffer Libère le tampon alloué pour le stockage des données du registre.
StorPortGetDataInBufferMdl Renvoie un MDL associé au tampon de données d’entrée d’un bloc de requête SCSI (SRB).
StorPortGetDataInBufferScatterGatherList Renvoie la liste scatter-gather associée au tampon de données d’entrée d’un bloc de requête SCSI (SRB).
StorPortGetDataInBufferSystemAddress Renvoie l’adresse système pour le tampon de données d’entrée d’un bloc de requête SCSI (SRB).
StorPortGetOriginalMdl Renvoie le MDL associé au SRB donné.
StorPortGetVirtualAddress Obtient une adresse virtuelle qui correspond à l’adresse physique indiquée.
StorPortGetPhysicalAddress Convertit une plage d’adresses virtuelles donnée en une plage d’adresses physiques pour une opération DMA.
StorPortGetSystemAddress Renvoie une adresse virtuelle dans l’espace système pour le tampon de données du bloc de requête SCSI (SRB) spécifié.
StorPortGetUncachedExtension Alloue un tampon commun non mis en cache que le CPU et le périphérique peuvent partager.
StorPortMarkDumpMemory Un miniport doit marquer la mémoire utilisée pour le fichier de vidage ou le fichier de mise en veille prolongée. La mémoire marquée est conservée et reste valide après une opération de reprise à partir d’une mise en veille prolongée. La mémoire à marquer est spécifiée par une adresse et une longueur de plage dans un appel à StorPortMarkDumpMemory.
StorPortMoveMemory Copie la mémoire d’un tampon à un autre.

Routines de prise en charge des notifications

Le pilote Storport fournit les routines de prise en charge des notifications suivantes.

Routine Description
StorPortAsyncNotificationDetected Notifie le pilote Storport d’un événement de changement de statut d’un périphérique de stockage.
StorPortNotification Notifie le pilote Storport de certains événements et conditions.
StorPortStateChangeDetected Notifie le pilote de port Storport d’un changement d’état pour un numéro d’unité logique (LUN), un port d’adaptateur de bus hôte (HBA) ou un périphérique cible.

Routines de prise en charge des ports et des registres d’E/S

Le pilote Storport fournit les routines de prise en charge des ports et des registres d’E/S suivantes.

Routine Description
StorPortGetDeviceBase Mappe une adresse d’E/S à l’espace d’adressage du système.
StorPortFreeDeviceBase Libère une plage de mémoire d’E/S de périphérique que StorPortGetDeviceBase a précédemment mappée.
StorPortReadPortBufferUchar Lit une valeur à partir d’une adresse de port spécifiée.
StorPortReadPortBufferUlong Lit une valeur à partir d’une adresse de port spécifiée.
StorPortReadPortBufferUshort Lit une valeur à partir d’une adresse de port spécifiée.
StorPortReadPortUchar Lit une valeur à partir d’une adresse de port spécifiée.
StorPortReadPortUlong Lit une valeur à partir d’une adresse de port spécifiée.
StorPortReadPortUshort Lit une valeur à partir d’une adresse de port spécifiée.
StorPortReadRegisterBufferUchar Lit une valeur à partir d’une adresse de registre spécifiée.
StorPortReadRegisterBufferUlong Lit une valeur à partir d’une adresse de registre spécifiée.
StorPortReadRegisterBufferUlong64 Lit un nombre spécifié de valeurs ULONG64 à partir de l’adresse de registre 64 bits spécifiée dans un tampon.
StorPortReadRegisterBufferUshort Lit une valeur à partir d’une adresse de registre spécifiée.
StorPortReadRegisterUchar Lit une valeur à partir d’une adresse de registre spécifiée.
StorPortReadRegisterUlong Lit une valeur à partir d’une adresse de registre spécifiée.
StorPortReadRegisterUlong64 Lit une valeur 64 bits à partir d’une adresse de registre 64 bits spécifiée.
StorPortReadRegisterUshort Lit une valeur à partir d’une adresse de registre spécifiée.
StorPortValidateRange Détermine si une plage spécifiée d’adresses d’E/S est utilisée par un autre adaptateur. Cette routine est obsolète dans les systèmes d’exploitation Windows NT 4.0 et ultérieurs.
StorPortWritePortBufferUchar Écrit une valeur dans une adresse de registre spécifiée.
StorPortWritePortBufferUlong Écrit une valeur dans une adresse de registre spécifiée.
StorPortWritePortBufferUshort Écrit une valeur dans une adresse de registre spécifiée.
StorPortWritePortUchar Écrit une valeur dans une adresse de registre spécifiée.
StorPortWritePortUlong Écrit une valeur dans une adresse de registre spécifiée.
StorPortWritePortUshort Écrit une valeur dans une adresse de registre spécifiée.
StorPortWriteRegisterBufferUchar Transfère un nombre donné d’octets non signés d’un tampon vers l’HBA.
StorPortWriteRegisterBufferUlong Transfère un nombre donné de valeurs ULONG d’un tampon vers l’HBA.
StorPortWriteRegisterBufferUlong64 Écrit un nombre spécifié de valeurs ULONG64 à partir de l’adresse de registre 64 bits spécifiée.
StorPortWriteRegisterBufferUshort Transfère un nombre donné de valeurs USHORT d’un tampon vers l’HBA.
StorPortWriteRegisterUchar Transfère un nombre donné de valeurs de caractères d’un tampon vers l’adresse de registre HBA indiquée.
StorPortWriteRegisterUlong Transfère une valeur ULONG vers l’adresse de registre HBA indiquée.
StorPortWriteRegisterUlong64 Écrit une valeur ULONG64 dans l’adresse de registre spécifiée.
StorPortWriteRegisterUshort Transfère une valeur ULONG vers l’adresse de registre HBA indiquée.

Routines de prise en charge de la gestion de l’alimentation en mode runtime

Le pilote Storport fournit les routines de prise en charge de la gestion de l’alimentation en mode runtime suivantes.

Routine Description
StorPortInitializePoFxPower Enregistre un périphérique de stockage avec le framework de gestion de l’alimentation (PoFx).
StorPortPoFxActivateComponent Incrémente le nombre de références d’activation sur le composant spécifié d’un périphérique de stockage.
StorPortPoFxIdleComponent Décrémente le nombre de références d’activation d’un composant spécifié d’un périphérique de stockage.
StorPortPoFxPowerControl Envoie une demande de contrôle d’alimentation au framework de gestion de l’alimentation (PoFx) pour la transmettre au plug-in moteur d’alimentation (PEP).
StorPortPoFxSetComponentLatency Spécifie la latence maximale tolérable lors de la transition de l’état inactif à actif dans le composant spécifié d’un périphérique de stockage.
StorPortPoFxSetComponentResidency Définit la durée estimée pendant laquelle un composant d’un périphérique de stockage est susceptible de rester inactif après que le composant est entré en état inactif.

Routines de prise en charge des minuteries

Le pilote Storport fournit les routines de prise en charge des minuteries suivantes.

Routine Description
StorPortFreeTimer Libère un objet de contexte de minuterie Storport précédemment créé par la routine StorPortInitializeTimer.
StorPortInitializeTimer Crée un objet de contexte de minuterie Storport.
StorPortRequestTimer Planifie un événement de rappel pour un objet de contexte de minuterie Storport.