ChangerReinitializeUnit, fonction (mcd.h)
ChangerReinitializeUnit gère les aspects spécifiques à l’appareil d’un IRP de contrôle d’appareil avec le code IOCTL IOCTL_CHANGER_REINITIALIZE_TRANSPORT.
Syntaxe
NTSTATUS ChangerReinitializeUnit(
[in] PDEVICE_OBJECT DeviceObject,
[in] PIRP Irp
);
Paramètres
[in] DeviceObject
Pointeur vers l’objet d’appareil qui représente le changeur.
[in] Irp
Pointeur vers l’IRP.
Valeur retournée
Si le changeur prend en charge la recalibration d’un élément de transport, ChangerReinitializeUnit retourne la valeur STATUS_XXX retournée par le pilote de port système, ou l’une des valeurs suivantes :
STATUS_SUCCESS
STATUS_INVALID_ELEMENT_ADDRESS
STATUS_INVALID_PARAMETER
STATUS_INSUFFICIENT_RESOURCES
Si le changeur ne prend pas en charge la recalibration d’un élément de transport, ChangerReinitializeUnit retourne STATUS_INVALID_DEVICE_REQUEST.
Remarques
Cette routine est obligatoire.
ChangerReinitializeUnit oblige le changeur à recalibrer son élément de transport. Selon le changeur, cela peut renvoyer le transport à une position « d’accueil ». Le pilote de classe de changeur appelle généralement ChangerReinitializeUnit après que le changeur a été mis sous tension ou qu’une application appelante a lancé une opération de récupération. L’indicateur CHANGER_DEVICE_REINITIALIZE_CAPABLE dans Features0 de GET_CHANGER_PARAMETERS indique si le transport du changeur prend en charge le réétalonnage dans ces circonstances.
Le pilote de classe de changeur vérifie la longueur de la mémoire tampon d’entrée dans l’emplacement de la pile d’E/S avant d’appeler ChangerReinitializeUnit. Irp-SystemBuffer> pointe vers une structure CHANGER_ELEMENT qui indique l’élément à recalibrer.
ChangerReinitializeUnit génère un SRB avec une CDB pour positionner l’élément de transport et l’envoie au pilote de port système.
ChangerReinitializeUnit définit le champ Information dans le bloc d’E/S status sur sizeof(CHANGER_ELEMENT) avant de revenir au pilote de classe de changeur.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | mcd.h (inclure Mcd.h, Ntddchgr.h) |
IRQL | PASSIVE_LEVEL |