Partager via


IOCTL_STORAGE_CHECK_VERIFY IOCTL (ntddstor.h)

Détermine si le média a changé sur un périphérique multimédia amovible que l’appelant a ouvert pour l’accès en lecture ou en écriture. Si l’accès en lecture ou en écriture à l’appareil n’est pas nécessaire, l’appelant peut améliorer les performances en ouvrant l’appareil avec FILE_READ_ATTRIBUTES et en émettant unedemande de IOCTL_STORAGE_CHECK_VERIFY2 à la place.

Pour plus d’informations, consultez Prise en charge du support amovible.

Code principal

IRP_MJ_DEVICE_CONTROL

Mémoire tampon d'entrée

Aucun.

Longueur de la mémoire tampon d’entrée

Aucun.

Mémoire tampon de sortie

Si vous le souhaitez, pour les appareils de disque et de CD-ROM, Irp-AssociatedIrp.SystemBuffer> pointe vers une mémoire tampon pour recevoir le nombre de modifications multimédias. Le pilote remplit cette mémoire tampon uniquement si Parameters.DeviceIoControl.OutputBufferLength était différent de zéro et si la valeur de retour est STATUS_SUCCESS. Le nombre de modifications de média est un ULONG indiquant le nombre de fois où le média a changé depuis le démarrage du pilote.

Sinon, cette requête n’a pas de sortie.

Longueur de la mémoire tampon de sortie

Si vous le souhaitez, pour les appareils de disque et de CD-ROM, Parameters.DeviceIoControl.OutputBufferLength dans l’emplacement de la pile d’E/S de l’IRP indique la taille, en octets, d’une mémoire tampon, qui doit être >= sizeof(ULONG). Ce champ est égal à zéro si la mémoire tampon facultative n’est pas spécifiée.

Sinon, cette requête n’a aucune entrée.

Bloc d’état

Si un pilote de disque ou de CD-ROM n’a aucune indication que le média a changé, le pilote définit le champ État sur STATUS_SUCCESS. En outre, si la mémoire tampon de modification de média facultative a été spécifiée, le pilote retourne le nombre de modifications de média dans la mémoire tampon sur Irp-AssociatedIrp.SystemBuffer> et définit le champ d’informations sur sizeof(ULONG). Si la mémoire tampon de modification de média facultative n’a pas été spécifiée, le pilote définit Information sur zéro.

Si le pilote détecte que le média a changé et que le volume est monté (VPB_MOUNTED est défini dans le VPB), il doit :

  1. Définissez Informations sur zéro.
  2. Définissez État sur STATUS_VERIFY_REQUIRED.
  3. Définissez l’indicateur DO_VERIFY_VOLUME dans DeviceObject.
  4. Appelez IoCompleteRequest avec l’IRP d’entrée.
Si le pilote détecte que le média a changé, mais que le volume n’est pas monté, le pilote ne doit pas définir le DO_VERIFY_VOLUME bit. Au lieu de cela, il doit effectuer les opérations suivantes :
  1. Définissez État sur STATUS_IO_DEVICE_ERROR.
  2. Définissez Informations sur zéro.
  3. Appelez IoCompleteRequest avec l’IRP.
Si le pilote détecte une erreur telle que STATUS_BUFFER_TOO_SMALL, STATUS_INSUFFICIENT_RESOURCES ou une erreur d’appareil, il définit Information sur zéro et définit la valeur d’erreur appropriée dans le champ État .

Pour un pilote de bande, le champ Informations est défini sur zéro et le champ État est défini sur STATUS_SUCCESS, ou éventuellement sur STATUS_VERIFY_REQUIRED.

Configuration requise

Condition requise Valeur
En-tête ntddstor.h (inclure Ntddstor.h)

Voir aussi

IOCTL_STORAGE_CHECK_VERIFY2