PAGE_FAULT_IN_NONPAGED_AREA [VGC-RM95S]
デバッグ中に PAGE_FAULT_IN_NONPAGED_AREA が発生する一例をあげる。
【user-land】
DeviceIoControl(hDevice,
0x00074098,
replyData_2,
replyLeng_2,
voice_buf,
IRPLEN,
&voice_len, NULL);
voice_buf を 16KB アローケーションしておいて IRPLEN = 0x100 を指定する。
【kernel-land】
WdfRequestRetrieveOutputBuffer( // recv voice
Request,
rx_len,
&pRecv,
&iRet
);
ここで pRecv から 0x100 を超えるデータをコピーすると BSOD になる。 Mutex, SpinLock のかけ方によりエラーの種別は異なって表示される。当然のことに見えるが voice_buf が十分な連続領域であるという情報は kernel-land にはいかない。うっかりすると間違い安いミスと思う。
2011-12-01 20:58
nice!(0)
コメント(0)
トラックバック(0)
コメント 0