Compartilhar via


IOCTL_SFFDISK_DEVICE_PASSWORD IOCTL (sffdisk.h)

Os aplicativos de modo de usuário usam esse IOCTL para executar operações básicas em um cartão SD (Secure Digital), como definir a senha no cartão, redefinir o cartão ou bloquear e desbloquear o cartão. 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
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_PASSWORD para esta operação.
lpInBuffer
Ponteiro para o buffer de entrada. O chamador deve inicializar uma estrutura de SFFDISK_DEVICE_PASSWORD_DATA e armazená-la no início do buffer. Imediatamente após a estrutura de SFFDISK_DEVICE_PASSWORD_DATA, o chamador deve passar cadeias de caracteres terminadas NULL para o antigo e a nova senha. A senha atual (antiga) é a primeira e é seguida imediatamente pela nova senha.
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_PASSWORD_DATA) e o tamanho, em bytes, das informações de senha que o seguem.
lpOutBuffer
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 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

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)