IOCTL_SFFDISK_QUERY_DEVICE_PROTOCOL IOCTL (sffdisk.h)
Os aplicativos de modo de usuário usam esse IOCTL para recuperar um valor de protocolo que identifica o cartão como um cartão SD ou um cartão MMC. Para obter uma descrição desse comando, consulte a especificação de E/S (E/S) Digital Segura .
Para executar essa operação, chame a função DeviceIoControl (descrita na documentação SDK do Microsoft Windows) usando os parâmetros a seguir.
bRet = DeviceIoControl (
(HANDLE) hDevice,
(DWORD) dwIoControlCode,
(PUCHAR) lpInBuffer,
(DWORD) nInBufferSize,
(PUCHAR) lpOutBuffer,
(DWORD) nOutBufferSize,
(LPDWORD) lpBytesReturned,
(LPOVERLAPPED) lpOverlapped
);
Parâmetros
- hDevice
- O identificador para um volume na pilha SD.
- Dwiocontrolcode
- Contém o código de controle para a operação. Esse valor identifica a operação específica a ser executada e o tipo de dispositivo no qual executá-la. Use IOCTL_SFFDISK_QUERY_DEVICE_PROTOCOL para esta operação.
- lpInBuffer
- Não usado com este IOCTL. O chamador deve passar um NULL.
- nInBufferSize
- Não usado com este IOCTL. O chamador deve passar um valor igual a 0.
- Lpoutbuffer
- Ponteiro para uma estrutura SFFDISK_QUERY_DEVICE_PROTOCOL_DATA em um buffer fornecido pelo usuário que contém os dados de resultados. O membro ProtocolGUID da estrutura SFFDISK_QUERY_DEVICE_PROTOCOL_DATA contém um GUID que identifica o cartão como um cartão SD ou um cartão MMC. Se a operação falhar e GetLastError retornar o código de erro STATUS_BUFFER_TOO_SMALL, o buffer de saída não era grande o suficiente para manter os dados de resultados.
- nOutBufferSize
- Contém o tamanho, em bytes, do buffer de saída apontado pelo parâmetro lpOutBuffer .
- Lpbytesreturned
-
Ponteiro para uma variável que recebe o tamanho, em bytes, dos dados de resultados armazenados no buffer apontado por lpOutBuffer.
Se o buffer de saída for muito pequeno para manter os dados retornados, ele conterá um valor zero na saída, a chamada falhará e GetLastError retornará o código de erro ERROR_INSUFFICIENT_BUFFER. No caso.
Se lpOverlapped for NULL (E/S não sobreposta), o chamador não poderá atribuir um NULL ao parâmetro lpBytesReturned na entrada. Se lpOverlapped não for NULL (E/S sobreposta), o chamador poderá atribuir um NULL ao parâmetro lpBytesReturned .
Se essa for uma operação sobreposta, você poderá recuperar o número de bytes retornados chamando a função GetOverlappedResult . Se hDevice estiver associado a uma porta de conclusão de E/S, você poderá obter o número de bytes retornados chamando a função GetQueuedCompletionStatus . Para obter uma descrição das funções GetOverlappedResult e GetQueuedCompletionStatus , consulte a documentação do SDK do Windows.
- Lpoverlapped
-
Ponteiro para uma estrutura OVERLAPPED, conforme descrito na documentação do SDK do Windows.
Se o chamador abriu o dispositivo com o sinalizador FILE_FLAG_OVERLAPPED, lpOverlapped deverá apontar para uma estrutura OVERLAPPED válida. Nesse caso, o sistema executa DeviceIoControl como uma operação assíncrona sobreposta. Se o chamador abriu o dispositivo com o sinalizador FILE_FLAG_OVERLAPPED e lpOverlapped for NULL, a função falhará de maneiras imprevisíveis.
Se o chamador abriu o dispositivo sem especificar o sinalizador FILE_FLAG_OVERLAPPED, o sistema ignorará o valor em lpOverlapped e a função DeviceIoControl não retornará até que a operação seja concluída ou até que ocorra um erro.
Código principal
Buffer de entrada
TBD
Buffer de saída
TBD
Comprimento do buffer de saída
TBD
Buffer de entrada/saída
TBD
Comprimento do buffer de entrada/saída
TBD
Bloco de status
Se a operação for bem-sucedida, DeviceIoControl retornará um valor diferente de zero.
Se a operação falhar, DeviceIoControl retornará zero. Para obter informações de erro estendidas, chame GetLastError.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | sffdisk.h (inclua Sffdisk.h) |