Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Print Search
帖子排序:    
   2010-04-22, 12:45 下午
jsls 离线,最后访问时间: 2010/5/29 2:57:08 静水流深

发帖数前500位
注册: 2010-01-18
发 贴: 4
请问张老师,内存虚拟磁盘加密失败,能否指点? 谢谢!《寒江独钓》ramdisk例子(WDK7600,storage里的源码),
Reply Quote

1. WDK7600里的ramdisk示例只实现1M的虚拟内存,改了ramdisk.inx和ramdisk.h里的内存设置,比如32M,还是不行。

2. 想实现加密存储,为了查看效果,先试图在写文件时加密,修改ramdisk.c中的RamDiskEvtIoWrite函数,但加载后蓝屏。

VOID
RamDiskEvtIoWrite(
    IN WDFQUEUE Queue,
    IN WDFREQUEST Request,
    IN size_t Length
    )
{
    PDEVICE_EXTENSION      devExt = QueueGetExtension(Queue)->DeviceExtension;
    NTSTATUS               Status = STATUS_INVALID_PARAMETER;
    WDF_REQUEST_PARAMETERS Parameters;
    LARGE_INTEGER          ByteOffset;
    WDFMEMORY              hMemory;
 //时间2010年4月21日12:52:03
 PVOID buf_XOR_13=0;
 unsigned char *p_Byte=0;
 unsigned int count=0;

    __analysis_assume(Length > 0);

    WDF_REQUEST_PARAMETERS_INIT(&Parameters);
    WdfRequestGetParameters(Request, &Parameters);

    ByteOffset.QuadPart = Parameters.Parameters.Write.DeviceOffset;

    if (RamDiskCheckParameters(devExt, ByteOffset, Length)) {

        Status = WdfRequestRetrieveInputMemory(Request, &hMemory);
        if(NT_SUCCESS(Status)){
   //时间 2010年4月21日12:44:25
   //写入时加密,异或0x13H

            //Status = WdfMemoryCopyToBuffer(hMemory, // Source
            //                        0,              // offset in Source memory where the copy has to start
            //                        devExt->DiskImage + ByteOffset.LowPart, // destination
            //                        Length);
            buf_XOR_13=ExAllocatePoolWithTag(NonPagedPool,
                     Length,
                     RAMDISK_TAG);
   Status = WdfMemoryCopyToBuffer(hMemory, // Source
                                    0,              // offset in Source memory where the copy has to start
                                    buf_XOR_13, // destination
                                    Length);
   p_Byte=(unsigned char*)buf_XOR_13;
   //怀疑真正写的长度很小,故Length改为3
   for(count=0;count<3;count++)
   { *p_Byte = (*p_Byte) ^ 0x13;
    p_Byte++;
   }
   Status = WdfMemoryCopyToBuffer((WDFMEMORY)buf_XOR_13, // Source
                                    0,              // offset in Source memory where the copy has to start
                                    devExt->DiskImage + ByteOffset.LowPart, // destination
                                    Length);
   //释放内存
   ExFreePool(buf_XOR_13);
   
        }

    }

    WdfRequestCompleteWithInformation(Request, Status, (ULONG_PTR)Length);
}


IP 地址: 已记录   报告
   2010-04-22, 13:12 下午
WANGyu 离线,最后访问时间: 2012/9/10 3:34:00 王宇

发帖数前10位
男
注册: 2007-05-08
发 贴: 306
Re: 请问张老师,内存虚拟磁盘加密失败,能否指点? 谢谢!《寒江独钓》ramdisk例子(WDK7600,storage里的源码),
Reply Quote
楼主的 ID 让我想起了 Rhett 感慨一下...

请问蓝在哪里?

再感慨一下...
IP 地址: 已记录   报告
   2010-04-22, 14:05 下午
louyihua 离线,最后访问时间: 2014/11/22 12:40:40 SuperMouse

发帖数前150位
注册: 2008-10-31
发 贴: 8
Re: 请问张老师,内存虚拟磁盘加密失败,能否指点? 谢谢!《寒江独钓》ramdisk例子(WDK7600,storage里的源码),
Reply Quote
Status = WdfMemoryCopyToBuffer((WDFMEMORY)buf_XOR_13, // Source
0, // offset in Source memory where the copy has to start
devExt->DiskImage + ByteOffset.LowPart, // destination
Length);

这里对吗?没玩过WdfMemoryXXX,但是感觉WDFMEMORY类型的对象应该不是一个纯指针吧……你把一个BYTE*强制转换成WDMEMORY,好像不对诶。况且这里直接RtlCopyMemory不就行了么……
IP 地址: 已记录   报告
   2010-04-22, 19:41 下午
nightxie 离线,最后访问时间: 2010/4/3 8:32:07 nightxie

发帖数前25位
注册: 2008-06-09
发 贴: 43
Re: 请问张老师,内存虚拟磁盘加密失败,能否指点? 谢谢!《寒江独钓》ramdisk例子(WDK7600,storage里的源码),
Reply Quote
Oh my GoD~
WDFMEMORY a handle to the new framework memory object not just a point to buffer.
IP 地址: 已记录   报告
   2010-04-23, 15:07 下午
jsls 离线,最后访问时间: 2010/5/29 2:57:08 静水流深

发帖数前500位
注册: 2010-01-18
发 贴: 4
Re: 请问张老师,内存虚拟磁盘加密失败,能否指点? 谢谢!《寒江独钓》ramdisk例子(WDK7600,storage里的源码),
Reply Quote

1. WDK7600里的ramdisk示例,能够在Vista下运行,但在Windows 7 下只成功过一次,后来重装了两三次Win7的虚拟机,总是不成功,显示【本地磁盘R:】0字节,不能读写

请问有谁在Windows 7 下试验成功了,相互切磋?


IP 地址: 已记录   报告
   2013-01-15, 17:55 下午
myranx 离线,最后访问时间: 2013/1/15 9:51:20 後生SHIN

无等级
注册: 2013-01-15
发 贴: 1
Re: 请问张老师,内存虚拟磁盘加密失败,能否指点? 谢谢!《寒江独钓》ramdisk例子(WDK7600,storage里的源码),
Reply Quote

请问一下第1个问题现在解决了么。。。我也碰到这个问题了啊


IP 地址: 已记录   报告
高端调试 » 驱动程序开发 » Windows驱动开发 » Re: 请问张老师,内存虚拟磁盘加密失败,能否指点? 谢谢!《寒江独钓》ramdisk例子(WDK7600,storage里的源码),

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.