Condividi tramite


IOCTL_SFFDISK_QUERY_DEVICE_PROTOCOL IOCTL (sffdisk.h)

Le applicazioni in modalità utente usano questo IOCTL per recuperare un valore di protocollo che identifica la scheda come scheda SD o come scheda MMC. Per una descrizione di questo comando, vedere la specifica secure digital I/O (SDIO).

Per eseguire questa operazione, chiamare la funzione DeviceIoControl (descritta nella documentazione di Microsoft Windows SDK) usando i parametri seguenti.

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

Parametri

hDevice
Handle in un volume nello stack SD.
dwIoControlCode
Contiene il codice di controllo per l'operazione. Questo valore identifica l'operazione specifica da eseguire e il tipo di dispositivo su cui eseguirlo. Usare IOCTL_SFFDISK_QUERY_DEVICE_PROTOCOL per questa operazione.
lpInBuffer
Non usato con questo IOCTL. Il chiamante deve passare un NULL.
nInBufferSize
Non usato con questo IOCTL. Il chiamante deve passare un valore pari a 0.
lpOutBuffer
Puntatore a una struttura SFFDISK_QUERY_DEVICE_PROTOCOL_DATA in un buffer fornito dall'utente che contiene i dati dei risultati. Il membro ProtocolGUID della struttura SFFDISK_QUERY_DEVICE_PROTOCOL_DATA contiene un GUID che identifica la scheda come scheda SD o come scheda MMC. Se l'operazione ha esito negativo e GetLastError restituisce il codice di errore STATUS_BUFFER_TOO_SMALL, il buffer di output non è abbastanza grande per contenere i dati dei risultati.
nOutBufferSize
Contiene le dimensioni, in byte, del buffer di output a cui punta il parametro lpOutBuffer.
lpBytesReturned
Puntatore a una variabile che riceve le dimensioni, in byte, dei dati dei risultati archiviati nel buffer a cui punta lpOutBuffer.

Se il buffer di output è troppo piccolo per contenere i dati restituiti, conterrà un valore pari a zero nell'output, la chiamata avrà esito negativo e GetLastError restituirà il codice di errore ERROR_INSUFFICIENT_BUFFER. Qualora.

Se lpOverlapped è NULL (I/O non sovrapposto), il chiamante non può assegnare un NULL a lpBytesReturned parametro all'input. Se lpOverlapped non è NULL (I/O sovrapposto), il chiamante può assegnare un NULL al parametro lpBytesReturned.

Se si tratta di un'operazione sovrapposta, è possibile recuperare il numero di byte restituiti chiamando la funzione GetOverlappedResult. Se hDevice è associato a una porta di completamento I/O, è possibile ottenere il numero di byte restituiti chiamando la funzione GetQueuedCompletionStatus. Per una descrizione delle funzioni GetOverlappedResult e GetQueuedCompletionStatus vedere la documentazione di Windows SDK.

lpOverlapped
Puntatore a una struttura OVERLAPPED, come descritto nella documentazione di Windows SDK.

Se il chiamante ha aperto il dispositivo con il flag FILE_FLAG_OVERLAPPED, lpOverlapped deve puntare a una struttura OVERLAPPED valida. In questo caso, il sistema esegue DeviceIoControl come operazione asincrona sovrapposta. Se il chiamante ha aperto il dispositivo con il flag di FILE_FLAG_OVERLAPPED e lpOverlapped è NULL, la funzione ha esito negativo in modi imprevedibili.

Se il chiamante ha aperto il dispositivo senza specificare il flag di FILE_FLAG_OVERLAPPED, il sistema ignora il valore in lpOverlappede la funzione DeviceIoControl non restituisce fino al completamento dell'operazione o fino a quando non si verifica un errore.

Codice principale

IRP_MJ_DEVICE_CONTROL

Buffer di input

TBD

Buffer di output

TBD

Lunghezza del buffer di output

TBD

Buffer di input/output

TBD

Lunghezza del buffer di input/output

TBD

Blocco di stato

Se l'operazione ha esito positivo, DeviceIoControl restituisce un valore diverso da zero.

Se l'operazione non riesce, DeviceIoControl restituisce zero. Per ottenere informazioni estese sull'errore, chiamare GetLastError.

Fabbisogno

Requisito Valore
intestazione sffdisk.h (include Sffdisk.h)