Partager via


IOCTL_SFFDISK_QUERY_DEVICE_PROTOCOL IOCTL (sffdisk.h)

Les applications en mode utilisateur utilisent ce IOCTL pour récupérer une valeur de protocole qui identifie la carte en tant que carte SD ou carte MMC. 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
Contient le 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_QUERY_DEVICE_PROTOCOL pour cette opération.
lpInBuffer
Non utilisé avec ce IOCTL. L’appelant doit passer un NULL.
nInBufferSize
Non utilisé avec ce IOCTL. L’appelant doit passer une valeur de 0.
lpOutBuffer
Pointeur vers une structure SFFDISK_QUERY_DEVICE_PROTOCOL_DATA dans une mémoire tampon fournie par l’utilisateur qui contient les données de résultats. Le ProtocolGUID membre de la structure SFFDISK_QUERY_DEVICE_PROTOCOL_DATA contient un GUID qui identifie la carte en tant que carte SD ou carte MMC. 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

Mémoire tampon d’entrée

TBD

Mémoire tampon de sortie

TBD

Longueur de la mémoire tampon de sortie

TBD

Mémoire tampon d’entrée/sortie

TBD

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

TBD

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)