IOCTL_SFFDISK_DEVICE_COMMAND IOCTL (sffdisk.h)
Os aplicativos no modo de usuário usam esse IOCTL para enviar comandos de cartão SD (Secure Digital) para um cartão SD. Para obter uma descrição desses comandos, consulte o de Especificação de Camada Física do Cartão de Memória do SD parte 1 e a especificação de de segurança do cartão de memória do SD Parte 3.
O chamador deve preencher uma estrutura SFFDISK_DEVICE_COMMAND_DATA e passá-la como um parâmetro para a chamada.
Para executar essa operação, chame a função DeviceIoControl (descrita na documentação do SDK do Microsoft Windows) com os seguintes parâmetros.
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
- O código de controle da 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_DEVICE_COMMAND para esta operação.
- lpInBuffer
- Um ponteiro para o buffer de entrada. O chamador deve inicializar uma estrutura SFFDISK_DEVICE_COMMAND_DATA e armazená-la no início do buffer. O chamador deve armazenar os parâmetros associados ao comando no local imediatamente após a estrutura SFFDISK_DEVICE_COMMAND_DATA.
- nInBufferSize
- Indica o tamanho em bytes do buffer de entrada apontado pelo parâmetro lpInBuffer. O tamanho do buffer de entrada deve ser a soma de tamanhos de(SFFDISK_DEVICE_COMMAND_DATA) e o tamanho dos parâmetros de comando que o seguem.
- lpOutBuffer
- Um ponteiro para o buffer de saída que contém os resultados da operação. Se a operação falhar e GetLastError retornará o código de erro ERROR_INSUFFICIENT_BUFFER, o buffer de saída não foi grande o suficiente para manter os dados de resultados.
- nOutBufferSize
- O tamanho, em bytes, do buffer de saída apontado pelo parâmetro lpOutBuffer.
- lpBytesReturned
-
Um ponteiro para uma variável que recebe o tamanho, em bytes, dos dados de resultados armazenados no buffer apontados por lpOutBuffer.
Se o buffer de saída for muito pequeno para manter os dados de retorno, ele conterá um valor zero na saída, a chamada falhará e GetLastError retornará o código de erro ERROR_INSUFFICIENT_BUFFER. Caso.
Se lpOverlapped for NULL (E/S não sobreposta), o chamador não poderá atribuir um NULL a parâmetro lpBytesReturned na entrada. Se lpOverlapped não estiver NULL (E/S sobreposta), o chamador poderá atribuir uma 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
-
Um 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 é NULL, a função falha de maneiras imprevisíveis.
Se o chamador abriu o dispositivo sem especificar o sinalizador de 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
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) |