IOCTL_SFFDISK_QUERY_DEVICE_PROTOCOL IOCTL (sffdisk.h)
使用者模式應用程式使用此 IOCTL 來擷取通訊協定值,將卡片識別為 SD 卡或 MMC 記憶卡。 如需此命令的描述,請參閱 Secure Digital I/O (SDIO) 規格。
若要執行這項作業,請使用下列參數呼叫 DeviceIoControl 函式(如 Microsoft Windows SDK 檔中所述)。
bRet = DeviceIoControl (
(HANDLE) hDevice,
(DWORD) dwIoControlCode,
(PUCHAR) lpInBuffer,
(DWORD) nInBufferSize,
(PUCHAR) lpOutBuffer,
(DWORD) nOutBufferSize,
(LPDWORD) lpBytesReturned,
(LPOVERLAPPED) lpOverlapped
);
參數
- hDevice
- SD 堆疊中磁碟區的句柄。
- dwIoControlCode
- 包含作業的控制件程式代碼。 這個值會識別要執行的特定作業,以及要執行它所在的裝置類型。 針對此作業使用IOCTL_SFFDISK_QUERY_DEVICE_PROTOCOL。
- lpInBuffer
- 未搭配此 IOCTL 使用。 呼叫端應該傳入 NULL。
- nInBufferSize
- 未搭配此 IOCTL 使用。 呼叫端應該傳入值為 0。
- lpOutBuffer
- 使用者提供的緩衝區中 SFFDISK_QUERY_DEVICE_PROTOCOL_DATA 結構的指標,其中包含結果數據。 SFFDISK_QUERY_DEVICE_PROTOCOL_DATA結構的 ProtocolGUID 成員包含 GUID,可識別卡片為 SD 記憶卡或 MMC 記憶卡。 如果作業失敗並 GetLastError 傳回錯誤碼STATUS_BUFFER_TOO_SMALL,則輸出緩衝區不夠大,無法保存結果數據。
- 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 必須指向有效的重疊結構。 在此情況下,系統會執行 deviceIoControl , 做為重疊的異步作。 如果呼叫端以 FILE_FLAG_OVERLAPPED 旗標開啟裝置,且 lpOverlappedNULL,則函式會以無法預測的方式失敗。
如果呼叫端在未指定FILE_FLAG_OVERLAPPED旗標的情況下開啟裝置,系統會忽略 lpOverlapped中的值,而且 DeviceIoControl 函式不會傳回,直到作業完成或發生錯誤為止。
主要程序代碼
輸入緩衝區
待定
輸出緩衝區
待定
輸出緩衝區長度
待定
輸入/輸出緩衝區
待定
輸入/輸出緩衝區長度
待定
狀態區塊
如果作業成功,DeviceIoControl 傳回非零值。
如果作業失敗,DeviceIoControl 會傳回零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
要求
要求 | 價值 |
---|---|
標頭 | sffdisk.h (包括 Sffdisk.h) |