还有另外一个问题,我写了 一个usb的驱动,偶尔会在插拔cable的时候引起蓝屏幕问题。。。从故障记录文件memory.dmp的信息上看,最后一行的记录
Probably caused by : hardware ( CyUsb!KUsbLowerDevice::DeActivateConfiguration+17 )
推测属于驱动中下面这个函数的m_Lower.DeActivateConfiguration();代码行造成的,但是我用的是driverstudio的框架,,这个函数有问题的话,,怎么办呢?
如何避免这个问题呢?
下面为函数原代码。。
VOID CypressRWDevice::Invalidate()
{
NTSTATUS status = STATUS_SUCCESS;
//if(m_bDeviceStart)
{
status = m_Lower.DeActivateConfiguration();
if (!NT_SUCCESS(status))
{
m_bDeviceStop = false;
T.Trace(TraceWarning, __FUNCTION__" DeActivateConfiguration failed, STATUS %x\n", status);
}
}
if(m_bDeviceStop) //m_bDeviceStart
{
m_Lower.ReleaseResources();
m_bDeviceStop = false;
}
}
如果是这个函数的问题,那就不要用它了,自己参考这个函数写段代码代替它。
DriverStudio早已停止更新了,有问题都得自己想办法解决,最好还是不要用了。
你应该看下蓝屏时候的错误代码,然后在bug checks中找到对应的说明,就能确定你的蓝屏的原因了,一般是访问内存出错,或者是访问的内存指针为空,或者在高的中断级别上访问分页内存
不要再用这个 driverstudio 框架了,遇到问题不好找哈...
问题解决了哦,,其实也说不好是那边的问题,,我把Driver Studio生成的框架代码中部分代码的位置做了一些调整,,后来试验了三个月的应用,,没有再发现该问题了,完全是试验出来的,,详细的原因不再此讲述。