IOCTL_SFFDISK_DEVICE_COMMAND IOCTL (sffdisk.h)
使用者模式應用程式會使用此 IOCTL 將 Secure Digital (SD) 卡片命令傳送至 SD 記憶卡。 如需這些命令的描述,請參閱 SD 記憶體卡第 1 部分實體層規格,以及 SD 記憶卡第 3 部分安全性 規格。
呼叫端必須填入 SFFDISK_DEVICE_COMMAND_DATA 結構,並將它當做參數傳遞至呼叫。
若要執行這項作業,請使用下列參數呼叫 Microsoft Windows SDK 檔中所述的DeviceIoControl函式) (。
bRet = DeviceIoControl (
(HANDLE) hDevice,
(DWORD) dwIoControlCode,
(PUCHAR) lpInBuffer,
(DWORD) nInBufferSize,
(PUCHAR) lpOutBuffer,
(DWORD) nOutBufferSize,
(LPDWORD) lpBytesReturned,
(LPOVERLAPPED) lpOverlapped
);
參數
- hDevice
- SD 堆疊中磁碟區的句柄。
- dwIoControlCode
- 作業的控制程序代碼。 這個值會識別要執行的特定作業,以及要在其中執行的裝置類型。 針對此作業使用IOCTL_SFFDISK_DEVICE_COMMAND。
- lpInBuffer
- 輸入緩衝區的指標。 呼叫端必須初始化 SFFDISK_DEVICE_COMMAND_DATA結構, 並將它儲存在緩衝區的開頭。 呼叫端應該將與 命令相關聯的參數儲存在SFFDISK_DEVICE_COMMAND_DATA 結構之後的位置。
- nInBufferSize
- 指出 lpInBuffer 參數所指向之輸入緩衝區位元組的大小。 輸入緩衝區的大小應該是 sizeof (SFFDISK_DEVICE_COMMAND_DATA) 和後面命令參數的大小總和。
- lpOutBuffer
- 輸出緩衝區的指標,其中包含作業的結果。 如果作業失敗,而且 GetLastError 會傳回錯誤碼ERROR_INSUFFICIENT_BUFFER,則輸出緩衝區不夠大,無法保存結果數據。
- nOutBufferSize
- lpOutBuffer 參數所指向之輸出緩衝區的大小,以位元組為單位。
- lpBytesReturned
-
變數的指標,可接收 lpOutBuffer 所指向之緩衝區中所儲存結果數據的大小,以位元組為單位。
如果輸出緩衝區太小而無法保存傳回數據,則會在輸出中包含零的值,呼叫將會失敗, 而 GetLastError 會傳回錯誤碼ERROR_INSUFFICIENT_BUFFER。 萬一。
如果 lpOverlapped 為 NULL (非重疊 I/O) ,呼叫端就無法在輸入上將 NULL 指派給 lpBytesReturned 參數。 如果 lpOverlapped 不是 NULL (重疊的 I/O) ,呼叫端可以將 NULL 指派給 lpBytesReturned 參數。
如果這是重疊的作業,您可以呼叫 GetOverlappedResult 函式來擷取傳回的位元組數目。 如果 hDevice 與 I/O 完成埠相關聯,您可以呼叫 GetQueuedCompletionStatus 函式來取得傳回的位元元組數目。 如需 GetOverlappedResult 和 GetQueuedCompletionStatus 函式的描述,請參閱 Windows SDK 檔。
- lpOverlapped
-
重迭結構的指標,如 Windows SDK 檔中所述。
如果呼叫端以FILE_FLAG_OVERLAPPED旗標開啟裝置, lpOverlapped 必須指向有效的 OVERLAPPED 結構。 在此情況下,系統會以重疊的異步操作方式執行 DeviceIoControl 。 如果呼叫端以FILE_FLAG_OVERLAPPED旗標開啟裝置,而 lpOverlapped 為 NULL,則函式會以無法預測的方式失敗。
如果呼叫端未指定FILE_FLAG_OVERLAPPED旗標,則系統會忽略 lpOverlapped 中的值,且 DeviceIoControl 函式不會在作業完成或發生錯誤之前傳回。
主要程序代碼
狀態區塊
如果作業成功, DeviceIoControl 會傳回非零值。
如果作業失敗, DeviceIoControl 會傳回零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
規格需求
需求 | 值 |
---|---|
標頭 | sffdisk.h (包含 Sffdisk.h) |