Freigeben über


IOCTL_SFFDISK_DEVICE_COMMAND IOCTL (sffdisk.h)

Benutzermodusanwendungen verwenden diese IOCTL, um Secure Digital (SD) Karte-Befehle an eine SD-Karte zu senden. Eine Beschreibung dieser Befehle finden Sie unter Sd Memory Card Part 1 Physical Layer Specification und SD Memory Card Part 3 Security Specification.For a description of these commands, see the SD Memory Card Part 1 Physical Layer Specification, and the SD Memory Card Part 3 Security specification.

Der Aufrufer muss eine SFFDISK_DEVICE_COMMAND_DATA-Struktur ausfüllen und als Parameter an den Aufruf übergeben.

Rufen Sie zum Ausführen dieses Vorgangs die DeviceIoControl-Funktion (in der Microsoft Windows SDK Dokumentation beschrieben) mit den folgenden Parametern auf.

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

Parameter

hGeräte
Das Handle für ein Volume im SD-Stapel.
dwIoControlCode
Der Steuerungscode für den Vorgang. Dieser Wert gibt den spezifischen Vorgang an, der ausgeführt werden soll, und den Typ des Geräts, auf dem er ausgeführt werden soll. Verwenden Sie für diesen Vorgang IOCTL_SFFDISK_DEVICE_COMMAND.
lpInBuffer
Ein Zeiger auf den Eingabepuffer. Der Aufrufer muss eine SFFDISK_DEVICE_COMMAND_DATA-Struktur initialisieren und am Anfang des Puffers speichern. Der Aufrufer sollte die dem Befehl zugeordneten Parameter direkt nach der SFFDISK_DEVICE_COMMAND_DATA Struktur speichern.
nInBufferSize
Gibt die Größe des Eingabepuffers in Bytes an, auf den der lpInBuffer-Parameter verweist. Die Größe des Eingabepuffers sollte die Summe von sizeof(SFFDISK_DEVICE_COMMAND_DATA) und die Größe der folgenden Befehlsparameter sein.
lpOutBuffer
Ein Zeiger auf den Ausgabepuffer, der die Ergebnisse des Vorgangs enthält. Wenn der Vorgang fehlschlägt und GetLastError den Fehlercode ERROR_INSUFFICIENT_BUFFER zurückgibt, war der Ausgabepuffer nicht groß genug, um die Ergebnisdaten aufzunehmen.
nOutBufferSize
Die Größe des Ausgabepuffers in Bytes, auf die der lpOutBuffer-Parameter verweist.
lpBytesReturned
Ein Zeiger auf eine Variable, die die Größe der Ergebnisdaten in Bytes empfängt, die im Puffer gespeichert sind, auf den lpOutBuffer verweist.

Wenn der Ausgabepuffer zu klein ist, um die Rückgabedaten zu speichern, enthält er den Wert null für die Ausgabe, der Aufruf schlägt fehl, und GetLastError gibt den Fehlercode ERROR_INSUFFICIENT_BUFFER zurück. Für den Fall.

Wenn lpOverlappedNULL ist (nicht überlappende E/A), kann der Aufrufer bei der Eingabe keinen NULL-Parameterdem lpBytesReturned-Parameter zuweisen. Wenn lpOverlapped nicht NULL (überlappende E/A) ist, kann der Aufrufer dem parameter lpBytesReturned einen NULL-Wert zuweisen.

Wenn es sich um einen überlappenden Vorgang handelt, können Sie die Anzahl der zurückgegebenen Bytes abrufen, indem Sie die GetOverlappedResult-Funktion aufrufen. Wenn hDevice einem E/A-Vervollständigungsport zugeordnet ist, können Sie die Anzahl der zurückgegebenen Bytes abrufen, indem Sie die GetQueuedCompletionStatus-Funktion aufrufen. Eine Beschreibung der Funktionen GetOverlappedResult und GetQueuedCompletionStatus finden Sie in der Dokumentation zum Windows SDK.

lpOverlapped
Ein Zeiger auf eine ÜBERLAPPENDE Struktur, wie in der Dokumentation zum Windows SDK beschrieben.

Wenn der Aufrufer das Gerät mit dem flag FILE_FLAG_OVERLAPPED geöffnet hat, muss lpOverlapped auf eine gültige OVERLAPPED-Struktur verweisen. In diesem Fall führt das System DeviceIoControl als überlappenden, asynchronen Vorgang aus. Wenn der Aufrufer das Gerät mit dem flag FILE_FLAG_OVERLAPPED geöffnet hat und lpOverlappedNULL ist, schlägt die Funktion auf unvorhersehbare Weise fehl.

Wenn der Aufrufer das Gerät geöffnet hat, ohne das Flag FILE_FLAG_OVERLAPPED anzugeben, ignoriert das System den Wert in lpOverlapped, und die DeviceIoControl-Funktion wird erst zurückgegeben, wenn der Vorgang abgeschlossen wurde oder bis ein Fehler auftritt.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Statusblock

Wenn der Vorgang erfolgreich ist, gibt DeviceIoControl einen wert ohne Zero zurück.

Wenn der Vorgang fehlschlägt, gibt DeviceIoControl null zurück. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Anforderungen

Anforderung Wert
Header sffdisk.h (include Sffdisk.h)