次の方法で共有


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 メンバーには、カードを SD カードまたは MMC カードとして識別する GUID が含まれています。 操作が失敗し、GetLastError STATUS_BUFFER_TOO_SMALLエラー コードが返 場合、出力バッファーは結果データを保持するのに十分な大きさではありません。
nOutBufferSize する
lpOutBuffer パラメーターが指す出力バッファーのサイズ (バイト単位) を格納します。
lpBytesReturned
lpOutBuffer が指すバッファーに格納されている結果データのサイズ (バイト単位) を受け取る変数へのポインター。

出力バッファーが小さすぎて戻りデータを保持できない場合は、出力時に 0 の値が含まれます。呼び出しは失敗し、GetLastError はエラー コード ERROR_INSUFFICIENT_BUFFERを返します。 大文字と小文字を区別します。

lpOverlapped NULL (オーバーラップされていない I/O) 場合、呼び出し元は、入力時に lpBytesReturned パラメーターNULL を割り当てることができません。 lpOverlapped NULL (重複 I/O) しない場合、呼び出し元は、NULLlpBytesReturned パラメーターに割り当てることができます。

これが重複する操作の場合は、GetOverlappedResult 関数を呼び出すことによって返されるバイト数を取得できます。 hDevice I/O 完了ポートに関連付けられている場合は、GetQueuedCompletionStatus 関数を呼び出すことによって返されるバイト数を取得できます。 GetOverlappedResult および GetQueuedCompletionStatus 関数 の説明については、Windows SDK のドキュメントを参照してください。

lpOverlapped する
Windows SDK ドキュメントで説明されているように、OVERLAPPED 構造体へのポインター。

呼び出し元が FILE_FLAG_OVERLAPPED フラグを使用してデバイスを開いた場合、lpOverlapped は有効な OVERLAPPED 構造体を指している必要があります。 この場合、システムは、重複 非同期操作として DeviceIoControl を実行します。 呼び出し元がFILE_FLAG_OVERLAPPED フラグを使用してデバイスを開き、lpOverlapped が NULL 場合、関数は予期しない方法で失敗します。

呼び出し元がFILE_FLAG_OVERLAPPED フラグを指定せずにデバイスを開いた場合、システムは lpOverlapped 値を無視し、DeviceIoControl 関数は操作が完了するまで、またはエラーが発生するまで戻りません。

メジャー コード

IRP_MJ_DEVICE_CONTROL

入力バッファー

未定

出力バッファー

未定

出力バッファーの長さ

未定

入力/出力バッファー

未定

入力/出力バッファーの長さ

未定

状態ブロック

操作が成功すると、DeviceIoControl 0 以外の値が返されます。

操作が失敗した場合、DeviceIoControl は 0 を返します。 拡張エラー情報を取得するには、GetLastError 呼び出します。

必要条件

要件 価値
ヘッダー sffdisk.h (Sffdisk.h を含む)