描述:
            我看了些别人写的简单的驱动程序的代码就学着自己写,我不知道为什么有问题,请大家指教
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);
解决方案1:
            在AddDevice里面创建设备后有没有设置 DO_BUFFERED_IO 标志?
Fdo->Flags |= DO_BUFFERED_IO;

