Partager via


IOCTL_SFFDISK_DEVICE_PASSWORD IOCTL (sffdisk.h)

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

Pour effectuer cette opération, appelez la fonction DeviceIoControl (décrite dans la documentation du Kit de développement logiciel (SDK) Microsoft Windows) à 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 vers 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 null terminées pour l’ancien et le nouveau mot de passe. Le mot de passe actuel (ancien) est d’abord, 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 taille de(SFFDISK_DEVICE_PASSWORD_DATA) et de la taille, en octets, des informations de mot de passe qui 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 GetLastError retourne le code d’erreur STATUS_BUFFER_TOO_SMALL, la mémoire tampon de sortie n’a pas été suffisamment grande pour contenir les données de 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ées 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 est NULL (E/S non épinglées), l’appelant ne peut pas affecter un NULL à paramètre lpBytesReturned lors de l’entrée. Si lpOverlapped n’est pas NULL (E/S superposées), l’appelant peut affecter un 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 d’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 QUI SE CHEVAUCHE, 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 SE CHEVAUCHER valide. Dans ce cas, le système exécute DeviceIoControl en tant qu’opération asynchrone superposée. Si l’appelant a ouvert l’appareil avec l’indicateur FILE_FLAG_OVERLAPPED et lpOverlapped est NULL, la fonction échoue de manière imprévisible.

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

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’erreur étendues, appelez GetLastError.

Exigences

Exigence Valeur
d’en-tête sffdisk.h (include Sffdisk.h)