IOCTL_SFFDISK_DEVICE_PASSWORD IOCTL (sffdisk.h)
ユーザー モード アプリケーションでは、この IOCTL を使用して、カードでのパスワードの設定、カードのリセット、カードのロックとロック解除など、Secure Digital (SD) カードに対する基本的な操作を実行します。 このコマンドの説明については、 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_DEVICE_PASSWORDを使用します。
- lpInBuffer
- 入力バッファーへのポインター。 呼び出し元は 、SFFDISK_DEVICE_PASSWORD_DATA 構造体を初期化し、バッファーの先頭に格納する必要があります。 SFFDISK_DEVICE_PASSWORD_DATA構造体の直後に、呼び出し元は古いパスワードと新しいパスワードの NULL で終わる文字列を渡す必要があります。 現在の (古い) パスワードが最初で、その直後に新しいパスワードが続きます。
- nInBufferSize
- lpInBuffer パラメーターが指す入力バッファーのサイズをバイト単位で示します。 入力バッファーのサイズは、 sizeof(SFFDISK_DEVICE_PASSWORD_DATA) と、それに続くパスワード情報のサイズ (バイト単位) の合計である必要があります。
- lpOutBuffer
- 操作の結果を含む出力バッファーへのポインター。 操作が失敗し、 GetLastError が エラー コード STATUS_BUFFER_TOO_SMALLを返した場合、出力バッファーは結果データを保持するのに十分な大きさではありません。
- nOutBufferSize
- lpOutBuffer パラメーターが指す出力バッファーのサイズをバイト単位で格納します。
- lpBytesReturned
-
lpOutBuffer が指すバッファーに格納されている結果データのサイズをバイト単位で受け取る変数へのポインター。
出力バッファーが小さすぎて戻りデータを保持できない場合は、出力時に 0 の値が含まれます。呼び出しは失敗し、 GetLastError はエラー コードERROR_INSUFFICIENT_BUFFERを返します。 ケース。
lpOverlapped が NULL (非overlapped I/O) の場合、呼び出し元は入力時に lpBytesReturned パラメーターに NULL を割り当てることができません。 lpOverlapped が NULL (重複した I/O) でない場合、呼び出し元は lpBytesReturned パラメーターに NULL を割り当てることができます。
重複する操作の場合は、 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 関数は戻りません。
メジャー コード
ステータス ブロック
操作が成功した場合、 DeviceIoControl は 0 以外の値を返します。
操作が失敗した場合、 DeviceIoControl は 0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
要件
要件 | 値 |
---|---|
Header | sffdisk.h (Sffdisk.h を含む) |