SSブログ

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 にはいかない。うっかりすると間違い安いミスと思う。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

トラックバック 0

MS Hands-Free Profil..SCO sample applicati.. ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。