2006年06月11日

パラグラフ境界 (Paragraph Boundary)

デバイスからデータを読み書きする場合、CPUを介さないDMA(Direct Memory Access)の場合には、バッファのアドレスの下位4ビットが0から始まるようにしなければなりません。
このため、バッファを必要な量(BufferSize)より少し余分に確保し、次のように調整したアドレスからの値(pPBBuf)を使うようにします。(C++の場合)

BYTE* pBuffer = new BYTE [BufferSize + 0x0f];
BYTE* pPBBuf = (BYTE*)(((DWORD)pBuffer + 0x0f) & ~0x0f);

SRB_ExecSCSICmd 構造体の SRB_BufPointer メンバには、こうして調整したポインタ pPBBuf をセットします。

私は開発の初期段階で、これを知らなかったためエラーに悩まされました。いやもう凄かったこと。OSが落ちるわ落ちるわ。

posted by 七癖 at 16:13| Comment(0) | TrackBack(0) | Multimedia Commands | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。