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