Compartilhar via


IOCTL_SFFDISK_QUERY_DEVICE_PROTOCOL IOCTL (sffdisk.h)

Os aplicativos no 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 de E/S Digital Seguro (SDIO).

Para executar essa operação, chame a função DeviceIoControl (descrita na documentação do 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 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_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 de 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 ProtocolGUID membro 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 foi 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 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
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

IRP_MJ_DEVICE_CONTROL

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)