初学驱动编写遇到的问题
我看了些别人写的简单的驱动程序的代码就学着自己写,我不知道为什么有问题,请大家指教
NTSTATUS Read(IN PDEVICE_OBJECT DeviceObject, IN PIRP pIrp)
{
NTSTATUS ntStatus;
pIrp->IoStatus.Status=STATUS_SUCCESS;
IoGetCurrentIrpStackLocation(pIrp);
void *p=pIrp->AssociatedIrp.SystemBuffer;
void *s=ExAllocatePool( PagedPool, 8 );
RtlZeroMemory(s,8);
// if (p!=NULL)
RtlCopyMemory(p,s,8);
IoCompleteRequest( pIrp, IO_NO_INCREMENT );
return ntStatus = pIrp->IoStatus.Status;
}
我只想在让它给应用程序返回全零的值,但是在应用程序中用ReadFile却导致机器重起,后来我加上if (p!=NULL)就没事了,为什么p会是空指针呢?我看别人的都是这么写的呀.
以下是应用程序的代码
用CreateFile打开没有问题,
然后是char buf[8];
DWORD len=0;
ReadFile(handle,buf,8,&len,NULL);
NTSTATUS Read(IN PDEVICE_OBJECT DeviceObject, IN PIRP pIrp)
{
NTSTATUS ntStatus;
pIrp->IoStatus.Status=STATUS_SUCCESS;
IoGetCurrentIrpStackLocation(pIrp);
void *p=pIrp->AssociatedIrp.SystemBuffer;
void *s=ExAllocatePool( PagedPool, 8 );
RtlZeroMemory(s,8);
// if (p!=NULL)
RtlCopyMemory(p,s,8);
IoCompleteRequest( pIrp, IO_NO_INCREMENT );
return ntStatus = pIrp->IoStatus.Status;
}
我只想在让它给应用程序返回全零的值,但是在应用程序中用ReadFile却导致机器重起,后来我加上if (p!=NULL)就没事了,为什么p会是空指针呢?我看别人的都是这么写的呀.
以下是应用程序的代码
用CreateFile打开没有问题,
然后是char buf[8];
DWORD len=0;
ReadFile(handle,buf,8,&len,NULL);
...全文
相关推荐
2410、2440LCD的驱动编写,很详细,LCD驱动编写指南
2410、2440LCD的驱动编写,很详细,适合在2440或2410上移植BSP包中的LCD驱动的人阅读,适合初学着阅读。。 LCD驱动编写指南
mokoid源码 android驱动初学者学习用例
mokoid源码 android驱动初学者学习例程,有利于入门学习。
驱动开发minifiter文件监测很好的初学者实例
驱动开发minifiter文件监测很好的初学者实例
vb练习 课后作业 自己编写的 适用于初学者
vb练习 课后作业 自己编写的 适用于初学者 自己编写的程序 很实用的
驱动框架(供初学者)STD_DRV
可以供初学者看看的驱动框架(在vs2005中搭建的)


驱动开发/核心开发

