IOCTL_SFFDISK_DEVICE_PASSWORD IOCTL (sffdisk.h)

Les applications en mode utilisateur utilisent cet IOCTL pour effectuer des opérations de base sur un carte Secure Digital (SD), telles que la définition du mot de passe sur le carte, la réinitialisation du carte ou le verrouillage et le déverrouillage de l’carte. Pour obtenir une description de cette commande, consultez la spécification SDIO (Secure Digital I/O ).

Pour effectuer cette opération, appelez la fonction DeviceIoControl (décrite dans la documentation Microsoft Windows SDK) à l’aide des paramètres suivants.

bRet = DeviceIoControl (
    (HANDLE)  hDevice, 
    (DWORD)  dwIoControlCode, 
    (PUCHAR)  lpInBuffer,
    (DWORD)  nInBufferSize, 
    (PUCHAR)  lpOutBuffer,
    (DWORD)  nOutBufferSize, 
    (LPDWORD)  lpBytesReturned,
    (LPOVERLAPPED)  lpOverlapped 
  );

Paramètres

hDevice
Handle d’un volume dans la pile SD.
dwIoControlCode
Code de contrôle de l’opération. Cette valeur identifie l’opération spécifique à effectuer et le type d’appareil sur lequel l’effectuer. Utilisez IOCTL_SFFDISK_DEVICE_PASSWORD pour cette opération.
lpInBuffer
Pointeur vers la mémoire tampon d’entrée. L’appelant doit initialiser une structure SFFDISK_DEVICE_PASSWORD_DATA et la stocker au début de la mémoire tampon. Immédiatement après la structure SFFDISK_DEVICE_PASSWORD_DATA, l’appelant doit passer des chaînes terminées par NULL pour l’ancien et le nouveau mot de passe. Le mot de passe actuel (ancien) est le premier, et il est immédiatement suivi du nouveau mot de passe.
nInBufferSize
Indique la taille en octets de la mémoire tampon d’entrée pointée par le paramètre lpInBuffer . La taille de la mémoire tampon d’entrée doit être la somme de sizeof(SFFDISK_DEVICE_PASSWORD_DATA) et la taille, en octets, des informations de mot de passe qui la suivent.
lpOutBuffer
Pointeur vers la mémoire tampon de sortie qui contient les résultats de l’opération. Si l’opération échoue et que GetLastError retourne le code d’erreur STATUS_BUFFER_TOO_SMALL, la mémoire tampon de sortie n’était pas assez grande pour contenir les données des résultats.
nOutBufferSize
Contient la taille, en octets, de la mémoire tampon de sortie pointée par le paramètre lpOutBuffer .
lpBytesReturned
Pointeur vers une variable qui reçoit la taille, en octets, des données de résultats stockées dans la mémoire tampon pointée par lpOutBuffer.

Si la mémoire tampon de sortie est trop petite pour contenir les données de retour, elle contient une valeur de zéro sur la sortie, l’appel échoue et GetLastError retourne le code d’erreur ERROR_INSUFFICIENT_BUFFER. Au cas où.

Si lpOverlapped a la valeur NULL (E/S non inoculées), l’appelant ne peut pas affecter un paramètre NULL à lpBytesReturned lors de l’entrée. Si lpOverlapped n’a pas la valeur NULL (E/S superposées), l’appelant peut affecter une valeur NULL au paramètre lpBytesReturned .

S’il s’agit d’une opération qui se chevauche, vous pouvez récupérer le nombre d’octets retournés en appelant la fonction GetOverlappedResult . Si hDevice est associé à un port d’achèvement des E/S, vous pouvez obtenir le nombre d’octets retournés en appelant la fonction GetQueuedCompletionStatus . Pour obtenir une description des fonctions GetOverlappedResult et GetQueuedCompletionStatus , consultez la documentation du Kit de développement logiciel (SDK) Windows.

lpOverlapped
Pointeur vers une structure CHEVAUCHÉE, comme décrit dans la documentation du Kit de développement logiciel (SDK) Windows.

Si l’appelant a ouvert l’appareil avec l’indicateur FILE_FLAG_OVERLAPPED, lpOverlapped doit pointer vers une structure CHEVAUCHEMENT VALIDE. Dans ce cas, le système exécute DeviceIoControl comme une opération asynchrone qui se chevauche. Si l’appelant a ouvert l’appareil avec l’indicateur FILE_FLAG_OVERLAPPED et que lpOverlapped a la valeur NULL, la fonction échoue de manière imprévisible.

Si l’appelant a ouvert l’appareil sans spécifier l’indicateur FILE_FLAG_OVERLAPPED, le système ignore la valeur dans lpOverlapped et la fonction DeviceIoControl ne retourne pas tant que l’opération n’est pas terminée ou qu’une erreur ne se produit.

Code principal

IRP_MJ_DEVICE_CONTROL

Bloc d’état

Si l’opération réussit, DeviceIoControl retourne une valeur différente de zéro.

Si l’opération échoue, DeviceIoControl retourne zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Configuration requise

Condition requise Valeur
En-tête sffdisk.h (include Sffdisk.h)