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. |