VIRTUAL_HW_FIND_ADAPTER fonction de rappel (storport.h)
Le miniport virtuel Storport utilise les informations de configuration fournies à la routine VIRTUAL_HW_FIND_ADAPTER pour initialiser davantage elle-même.
Syntaxe
VIRTUAL_HW_FIND_ADAPTER VirtualHwFindAdapter;
ULONG VirtualHwFindAdapter(
PVOID DeviceExtension,
PVOID HwContext,
PVOID BusInformation,
PVOID LowerDevice,
PCHAR ArgumentString,
PPORT_CONFIGURATION_INFORMATION ConfigInfo,
PBOOLEAN Again
)
{...}
Paramètres
DeviceExtension
Pointeur vers la zone de stockage non paginée du pilote miniport. Le pilote de port spécifique au système d’exploitation alloue de la mémoire et initialise cette extension avec zéros avant d’appeler la routine de VIRTUAL_HW_FIND_ADAPTER du miniport.
HwContext
Pointeur vers l’objet PDO dans la pile d’appareils. L’adaptateur HBA lui-même est le FDO. Le PDO peut appartenir au pilote Pci.sys si le pilote miniport contrôle le matériel physique. Mais dans le cas d’un pilote de miniport virtuel, l’opération PDO appartient au gestionnaire PnP.
BusInformation
Pointeur vers l’objet d’appareil fonctionnel (FDO) du miniport.
LowerDevice
Pointeur vers l’objet d’appareil contrôlé par le FDO du miniport.
ArgumentString
Pointeur vers une chaîne ASCII terminée par null. Cette chaîne, si elle est fournie, contient des informations sur l’appareil à partir du Registre, telles qu’un paramètre de base.
ConfigInfo
Pointeur vers une structure PORT_CONFIGURATION_INFORMATION. Le pilote de port initialise cette structure avec toutes les informations de configuration connues, telles que les valeurs définies par le pilote miniport DriverEntry définies dans l'VIRTUAL_HW_INITIALIZATION_DATA. VIRTUAL_HW_FIND_ADAPTER devez utiliser des informations fournies pour déterminer si l’adaptateur HBA virtuel décrit est celui pris en charge par le pilote miniport. Si c’est le cas, VIRTUAL_HW_FIND_ADAPTER initialise et configure cet adaptateur HBA et renseigne les informations de configuration manquantes. Si possible, un pilote miniport doit avoir des valeurs de configuration par défaut pour chaque type de HBA qu’il prend en charge, dans le cas où le pilote de port dépendant du système d’exploitation ne peut pas fournir d’informations de configuration supplémentaires qui n’ont pas été fournies par la routine DriverEntry du pilote miniport.
Again
Non utilisé.
Valeur de retour
VIRTUAL_HW_FIND_ADAPTER devez retourner l’une des valeurs d’état suivantes :
Retourner le code | Description |
---|---|
SP_RETURN_FOUND | Un HBA pris en charge a été trouvé et que les informations de configuration pertinentes pour l’adaptateur HBA ont été déterminées avec succès et définies dans la structure PORT_CONFIGURATION_INFORMATION. |
SP_RETURN_ERROR | Un HBA a été trouvé, mais une erreur s’est produite lorsqu’elle a obtenu les informations de configuration. Si possible, une telle erreur doit être enregistrée avec ScsiPortLogError. |
SP_RETURN_BAD_CONFIG | Les informations de configuration fournies n’étaient pas valides pour l’adaptateur. |
SP_RETURN_NOT_FOUND | Aucun HBA pris en charge n’a été trouvé pour les informations de configuration fournies. |
Remarques
Le champ VirtualDevice dans la structure des informations de configuration doit être défini sur TRUE. D’autres champs peuvent être définis en fonction des besoins.
Le pilote de port appelle le VIRTUAL_HW_FIND_ADAPTER du miniport virtuel Storport à PASSIVE_LEVEL.
Le nom VirtualHwStorFindAdapter est un texte d’espace réservé pour le nom de routine réel. Le prototype réel de cette routine est défini dans Srb.h comme suit :
typedef
ULONG
VIRTUAL_HW_FIND_ADAPTER (
_In_ PVOID DeviceExtension,
_In_ PVOID HwContext,
_In_ PVOID BusInformation,
_In_ PVOID LowerDevice,
_In_ PCHAR ArgumentString,
_Inout_ PPORT_CONFIGURATION_INFORMATION ConfigInfo,
_Out_ PBOOLEAN Again
);
Exemples
Pour définir une fonction de rappel VIRTUAL_HW_FIND_ADAPTER, vous devez d’abord fournir une déclaration de fonction qui identifie le type de fonction de rappel que vous définissez. Windows fournit un ensemble de types de fonctions de rappel pour les pilotes. La déclaration d’une fonction à l’aide des types de fonctions de rappel permet d'Analyse du code pour les pilotes, static Driver Verifier (SDV) et d’autres outils de vérification recherchent des erreurs, et il est nécessaire d’écrire des pilotes pour le système d’exploitation Windows.
Par exemple, pour définir une routine de rappel VIRTUAL_HW_FIND_ADAPTER nommée MyVirtualHwFindAdapter, utilisez le type VIRTUAL_HW_FIND_ADAPTER comme indiqué dans cet exemple de code :
VIRTUAL_HW_FIND_ADAPTER MyVirtualHwFindAdapter;
Ensuite, implémentez votre routine de rappel comme suit :
_Use_decl_annotations_
ULONG
MyVirtualHwFindAdapter (
_In_ PVOID DeviceExtension,
_In_ PVOID HwContext,
_In_ PVOID BusInformation,
_In_ PVOID LowerDevice,
_In_ PCHAR ArgumentString,
_Inout_ PPORT_CONFIGURATION_INFORMATION ConfigInfo,
_Out_ PBOOLEAN Again
);
{
...
}
Le type de fonction VIRTUAL_HW_FIND_ADAPTER est défini dans le fichier d’en-tête Storport.h. Pour identifier plus précisément les erreurs lorsque vous exécutez les outils d’analyse du code, veillez à ajouter l’annotation Use_decl_annotations à votre définition de fonction. L’annotation Use_decl_annotations garantit que les annotations appliquées au type de fonction VIRTUAL_HW_FIND_ADAPTER dans le fichier d’en-tête sont utilisées. Pour plus d’informations sur les conditions requises pour les déclarations de fonction, consultez déclaration de fonctions à l’aide de types de rôles de fonction pour les pilotes Storport. Pour plus d’informations sur Use_decl_annotations, consultez annoter le comportement de la fonction.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | storport.h (include Storport.h) |