共用方式為


IOCTL_SFFDISK_DEVICE_COMMAND IOCTL (sffdisk.h)

使用者模式應用程式使用此 IOCTL 將 Secure Digital (SD) 記憶卡命令傳送至 SD 記憶卡。 如需這些命令的描述,請參閱 SD 記憶體卡第 1 部分實體層規格,以及 SD 記憶體卡第 3 部分安全性 規格。

呼叫端必須填入 SFFDISK_DEVICE_COMMAND_DATA 結構,並將它當做參數傳遞給呼叫。

若要執行這項作業,請使用下列參數呼叫 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_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 參數。 如果 lpOverlappedNULL (重疊 I/O),呼叫者可以將 NULL 指派給 lpBytesReturned 參數。

如果這是重疊的作業,您可以呼叫 getOverlappedResult 函式 來擷取傳回的位元組數目。 如果 hDevice 與 I/O 完成埠相關聯,您可以 呼叫 getQueuedCompletionStatus 函式來取得傳回的位元元數目。 如需 getOverlappedResultGetQueuedCompletionStatus 函式的說明,請參閱 Windows SDK 檔。

lpOverlapped
重迭結構的指標,如 Windows SDK 檔中所述。

如果呼叫端以FILE_FLAG_OVERLAPPED旗標開啟裝置,lpOverlapped 必須指向有效的重疊結構。 在此情況下,系統會執行 deviceIoControl 做為重疊的異步作。 如果呼叫端以 FILE_FLAG_OVERLAPPED 旗標開啟裝置,且 lpOverlappedNULL,則函式會以無法預測的方式失敗。

如果呼叫端在未指定FILE_FLAG_OVERLAPPED旗標的情況下開啟裝置,系統會忽略 lpOverlapped中的值,而且 DeviceIoControl 函式不會傳回,直到作業完成或發生錯誤為止。

主要程序代碼

IRP_MJ_DEVICE_CONTROL

狀態區塊

如果作業成功,DeviceIoControl 傳回非零值。

如果作業失敗,DeviceIoControl 會傳回零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError

要求

要求 價值
標頭 sffdisk.h (包括 Sffdisk.h)