IOCTL_SFFDISK_DEVICE_PASSWORD IOCTL (sffdisk.h)

Las aplicaciones en modo de usuario usan este IOCTL para realizar operaciones básicas en una tarjeta Digital segura (SD), como establecer la contraseña en la tarjeta, restablecer la tarjeta o bloquear y desbloquear la tarjeta. Para obtener una descripción de este comando, consulte la especificación de E/S (SDIO) digital segura .

Para realizar esta operación, llame a la función DeviceIoControl (descrita en la documentación de Microsoft Windows SDK) mediante los parámetros siguientes.

bRet = DeviceIoControl (
    (HANDLE)  hDevice, 
    (DWORD)  dwIoControlCode, 
    (PUCHAR)  lpInBuffer,
    (DWORD)  nInBufferSize, 
    (PUCHAR)  lpOutBuffer,
    (DWORD)  nOutBufferSize, 
    (LPDWORD)  lpBytesReturned,
    (LPOVERLAPPED)  lpOverlapped 
  );

Parámetros

hDevice
Identificador de un volumen en la pila SD.
dwIoControlCode
Código de control para la operación. Este valor identifica la operación específica que se va a realizar y el tipo de dispositivo en el que se va a realizar. Use IOCTL_SFFDISK_DEVICE_PASSWORD para esta operación.
lpInBuffer
Puntero al búfer de entrada. El autor de la llamada debe inicializar una estructura SFFDISK_DEVICE_PASSWORD_DATA y almacenarla al principio del búfer. Inmediatamente después de la estructura de SFFDISK_DEVICE_PASSWORD_DATA, el autor de la llamada debe pasar cadenas terminadas en NULL para la contraseña antigua y la nueva. La contraseña actual (antigua) es la primera y va seguida inmediatamente de la nueva contraseña.
nInBufferSize
Indica el tamaño en bytes del búfer de entrada al que apunta el parámetro lpInBuffer . El tamaño del búfer de entrada debe ser la suma de sizeof(SFFDISK_DEVICE_PASSWORD_DATA) y el tamaño, en bytes, de la información de contraseña que la sigue.
lpOutBuffer
Puntero al búfer de salida que contiene los resultados de la operación. Si se produce un error en la operación y GetLastError devuelve el código de error STATUS_BUFFER_TOO_SMALL, el búfer de salida no era lo suficientemente grande como para contener los datos de resultados.
nOutBufferSize
Contiene el tamaño, en bytes, del búfer de salida al que apunta el parámetro lpOutBuffer .
lpBytesReturned
Puntero a una variable que recibe el tamaño, en bytes, de los datos de resultados almacenados en el búfer al que apunta lpOutBuffer.

Si el búfer de salida es demasiado pequeño para contener los datos devueltos, contendrá un valor de cero en la salida, se producirá un error en la llamada y GetLastError devolverá el código de error ERROR_INSUFFICIENT_BUFFER. En caso de que.

Si lpOverlapped es NULL (E/S no superpuesta), el autor de la llamada no puede asignar un parámetro NULL a lpBytesReturned en la entrada. Si lpOverlapped no es NULL (E/S superpuesta), el autor de la llamada puede asignar un valor NULL al parámetro lpBytesReturned .

Si se trata de una operación superpuesta, puede recuperar el número de bytes devueltos mediante una llamada a la función GetOverlappedResult . Si hDevice está asociado a un puerto de finalización de E/S, puede obtener el número de bytes devueltos llamando a la función GetQueuedCompletionStatus . Para obtener una descripción de las funciones GetOverlappedResult y GetQueuedCompletionStatus , consulte la documentación de Windows SDK.

lpOverlapped
Puntero a una estructura SUPERPUESTA, como se describe en la documentación de Windows SDK.

Si el autor de la llamada abrió el dispositivo con la marca FILE_FLAG_OVERLAPPED, lpOverlapped debe apuntar a una estructura SUPERPUESTA válida. En este caso, el sistema ejecuta DeviceIoControl como una operación asincrónica superpuesta. Si el autor de la llamada abrió el dispositivo con la marca FILE_FLAG_OVERLAPPED y lpOverlapped es NULL, la función produce un error de maneras impredecibles.

Si el autor de la llamada abrió el dispositivo sin especificar la marca FILE_FLAG_OVERLAPPED, el sistema omite el valor en lpOverlapped y la función DeviceIoControl no devuelve hasta que se haya completado la operación o hasta que se produzca un error.

Código principal

IRP_MJ_DEVICE_CONTROL

Bloque de estado

Si la operación se realiza correctamente, DeviceIoControl devuelve un valor distinto de cero.

Si se produce un error en la operación, DeviceIoControl devuelve cero. Para obtener información de error extendida, llame a GetLastError.

Requisitos

   
Header sffdisk.h (incluya Sffdisk.h)