Freigeben über


IOCTL_SFFDISK_DEVICE_COMMAND IOCTL (sffdisk.h)

Benutzermodusanwendungen verwenden diese IOCTL, um Secure Digital (SD)-Kartenbefehle an eine SD-Karte zu senden. Eine Beschreibung dieser Befehle finden Sie unter SD-Speicherkarte Teil 1 Physische Layer Spezifikation, und die SD Memory Card Part 3 Security Spezifikation.

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.To perform this operation, call the DeviceIoControl function (described in the Microsoft Windows SDK documentation) with the following parameters.

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

Parameter

hDevice-
Der Handle zu einem Volume im SD-Stapel.
dwIoControlCode-
Der Steuerelementcode für den Vorgang. Dieser Wert gibt den spezifischen Vorgang an, der ausgeführt werden soll, und den Typ des Geräts, auf dem sie ausgeführt werden soll. Verwenden Sie IOCTL_SFFDISK_DEVICE_COMMAND für diesen Vorgang.
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 Parameter speichern, die dem Befehl direkt nach der SFFDISK_DEVICE_COMMAND_DATA-Struktur zugeordnet sind.
nInBufferSize
Gibt die Größe in Byte des Eingabepuffers an, auf den der lpInBuffer-Parameter verweist. Die Größe des Eingabepuffers sollte die Summe Größe(SFFDISK_DEVICE_COMMAND_DATA) und die Größe der befehlsparameter sein, die darauf folgen.
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 den der lpOutBuffer-Parameter verweist.
lpBytesReturned
Ein Zeiger auf eine Variable, die die Größe der im Puffer gespeicherten Ergebnisdaten in Bytes empfängt, auf die durch lpOutBufferverwiesen wird.

Wenn der Ausgabepuffer zu klein ist, um die Rückgabedaten aufzunehmen, enthält er einen Wert von Null für die Ausgabe, schlägt der Aufruf fehl, und GetLastError den Fehlercode ERROR_INSUFFICIENT_BUFFER zurückgibt. Falls.

Wenn lpOverlapped-NULL- (nicht überfällige E/A) ist, kann der Aufrufer keine NULL-lpBytesReturned Parameter für eingaben zuweisen. Wenn lpOverlapped- nicht NULL- (überlappende E/A) ist, kann der Aufrufer dem parameter lpBytesReturned eine NULL- 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-Abschlussport 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 Windows SDK-Dokumentation.

lpOverlapped-
Ein Zeiger auf eine ÜBERLAPPENDE Struktur, wie in der Windows SDK-Dokumentation 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 der FILE_FLAG_OVERLAPPED-Kennzeichnung geöffnet hat und lpOverlapped-NULL-ist, schlägt die Funktion auf unvorhersehbare Weise fehl.

Wenn der Aufrufer das Gerät ohne Angabe des FILE_FLAG_OVERLAPPED Flags geöffnet hat, 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 ungleich Null zurück.

Wenn der Vorgang fehlschlägt, gibt DeviceIoControl Null zurück. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.

Anforderungen

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