Partager via


IOCTL_SFFDISK_DEVICE_COMMAND IOCTL (sffdisk.h)

Les applications en mode utilisateur utilisent ce IOCTL pour envoyer des commandes de carte secure digital (SD) à un carte SD. Pour obtenir une description de ces commandes, consultez la spécification de la couche physique de la partie 1 de la carte mémoire SD et la spécification de sécurité de la carte mémoire SD Partie 3 .

L’appelant doit remplir une structure SFFDISK_DEVICE_COMMAND_DATA et la passer en tant que paramètre à l’appel.

Pour effectuer cette opération, appelez la fonction DeviceIoControl (décrite dans la documentation Microsoft Windows SDK) avec les 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_COMMAND pour cette opération.
lpInBuffer
Pointeur vers la mémoire tampon d’entrée. L’appelant doit initialiser une structure SFFDISK_DEVICE_COMMAND_DATA et la stocker au début de la mémoire tampon. L’appelant doit stocker les paramètres associés à la commande à l’emplacement immédiatement après la structure SFFDISK_DEVICE_COMMAND_DATA.
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_COMMAND_DATA) et la taille des paramètres de commande 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 ERROR_INSUFFICIENT_BUFFER, la mémoire tampon de sortie n’était pas assez grande pour contenir les données des résultats.
nOutBufferSize
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 vers laquelle lpOutBuffer pointe.

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 CHEVAUCHEMENT, 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)