首页
社区
课程
招聘
[求助]驱动缓冲区写入操作求助
发表于: 2012-9-27 18:06 3482

[求助]驱动缓冲区写入操作求助

2012-9-27 18:06
3482
NTSTATUS FILEWRITE_Write(
        IN PDEVICE_OBJECT                DeviceObject,
        IN PIRP                                        Irp
        )
{
        KdPrint(("FILEWRITE_Write\n"));
        NTSTATUS status=STATUS_SUCCESS;
        PIO_STACK_LOCATION stack=IoGetCurrentIrpStackLocation(Irp);
        PDEVICE_EXTENSION pDevExt=(PDEVICE_EXTENSION)DeviceObject->DeviceExtension;
        ULONG ulWriteLen=stack->Parameters.Write.Length;
        ULONG ulWriteOffset=stack->Parameters.Write.ByteOffset.QuadPart;

        KdPrint(("WriteLength:%d,WriteOffset:%d\n",ulWriteLen,ulWriteOffset));
        __try
        {
                KdPrint(("Enter try\n"));
                pDevExt->buffer=(PUCHAR)ExAllocatePoolWithTag(PagedPool,32,'t');
                ProbeForWrite(pDevExt->buffer,4,10);
                memcpy(pDevExt->buffer+ulWriteOffset,Irp->AssociatedIrp.SystemBuffer,ulWriteLen);
        }
        __except(EXCEPTION_EXECUTE_HANDLER)
        {
                KdPrint(("Write Faild\n"));
                status=STATUS_UNSUCCESSFUL;
        }

        Irp->IoStatus.Status=status;
        Irp->IoStatus.Information=ulWriteLen;
        IoCompleteRequest(Irp,IO_NO_INCREMENT);
        KdPrint(("FILEWRITE_Write out\n"));
        return status;
}
问题总出在ExAllocatePoolWithTag这个函数上 折腾了很久 都解决不了 求助各位大牛啊

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 796
活跃值: (370)
能力值: ( LV9,RANK:380 )
在线值:
发帖
回帖
粉丝
2
什么问题你也不描述清楚~~上代码吧
2012-9-27 20:18
0
雪    币: 107
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
是蓝屏还是 函数提示失败?

不过这个函数 分配内存 标记要四位 我看你的似乎不像
  pDevExt->buffer=(PUCHAR)ExAllocatePoolWithTag(PagedPool,32,'t');
   pDevExt->buffer=(PUCHAR)ExAllocatePoolWithTag(PagedPool,32,'123t');
你描述问题的能力真是。。。。。
好比看病 就说是胃部不适  连是疼是痒还是呕吐 都不说咋看病呢?
什么错误不说 怎么求助?
2012-9-28 11:58
0
游客
登录 | 注册 方可回帖
返回
//