Condividi tramite


IOCTL_SFFDISK_DEVICE_PASSWORD IOCTL (sffdisk.h)

Le applicazioni in modalità utente usano questo IOCTL per eseguire operazioni di base su una scheda Secure Digital (SD), ad esempio l'impostazione della password sulla scheda, la reimpostazione della scheda o il blocco e lo sblocco della scheda. 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
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_DEVICE_PASSWORD per questa operazione.
lpInBuffer
Puntatore al buffer di input. Il chiamante deve inizializzare una struttura SFFDISK_DEVICE_PASSWORD_DATA e archiviarla all'inizio del buffer. Subito dopo la struttura SFFDISK_DEVICE_PASSWORD_DATA, il chiamante deve passare stringhe con terminazione NULL per la vecchia e la nuova password. La password corrente (precedente) è prima e viene immediatamente seguita dalla nuova password.
nInBufferSize
Indica le dimensioni in byte del buffer di input a cui punta il parametro lpInBuffer. Le dimensioni del buffer di input devono essere la somma di sizeof(SFFDISK_DEVICE_PASSWORD_DATA) e le dimensioni, in byte, delle informazioni sulla password che lo seguono.
lpOutBuffer
Puntatore al buffer di output che contiene i risultati dell'operazione. 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

IRP_MJ_DEVICE_CONTROL

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)