ストレージ・デバイスからデータを読み出します。
DRESULT disk_read ( BYTE pdrv, /* [IN] 物理ドライブ番号 */ BYTE* buff, /* [OUT] 読み出しバッファへのポインタ */ DWORD sector, /* [IN] 読み出し開始セクタ番号 */ UINT count /* [IN] 読み出すセクタ数 */ );
buffはBYTE型なので、指定されるアドレスは常にワード・アライメントされているとは限りません。非アライメント・アドレスへの転送は、直接転送において発生することがあります。もしも、ハードウェア上の制約でそのような転送が不可能なときは、この関数内で二段転送するなどして解決するか、または別の方法で対応しなければなりません。次にいくつかの対応方法を示します(いずれか一つでOK)。
一般的に、複数セクタの転送要求は、ストレージ・デバイスに対して可能な限りマルチ・セクタ転送しなければなりません。複数のシングル・セクタ読み出しに分解された場合、スループットが低下することがあります。