aidamin
驱动小牛
驱动小牛
  • 注册日期2004-02-13
  • 最后登录2009-06-15
  • 粉丝0
  • 关注0
  • 积分964分
  • 威望98点
  • 贡献值0点
  • 好评度90点
  • 原创分0分
  • 专家分0分
阅读:1408回复:2

应用程序如何将密钥传给filedisk

楼主#
更多 发布于:2004-05-29 15:44
大家好!
我在试filedisk,已在驱动程序的读写中加上了加解密代码段,如用一个固定的密钥进行加解密,一切正常。但是,我想将密钥由应用程序中传递进去,因此改动了filedisk的几处代码试图传密钥。驱动程序编译通过,但是,应用程序运行时却报“系统找不到指定的路径”,不知是什么原因,请高手指点一下迷津,不胜感激!!

我修改的过程:
1.将filedisk.c中的结构增加一项
typedef struct _DEVICE_EXTENSION {
    BOOLEAN                     media_in_device;
    HANDLE                      file_handle;
    ANSI_STRING                 file_name;
    LARGE_INTEGER               file_size;
    BOOLEAN                     read_only;
    PSECURITY_CLIENT_CONTEXT    security_client_context;
    LIST_ENTRY                  list_head;
    KSPIN_LOCK                  list_lock;
    KEVENT                      request_event;
    PVOID                       thread_pointer;
    BOOLEAN                     terminate_thread;
    ULONG                       filekey;//密钥
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;

2.在FileDiskOpenFile (
    IN PDEVICE_OBJECT   DeviceObject,
    IN PIRP             Irp
    )
函数中的RtlCopyMemory行之前增加一行以获得密钥:
device_extension->filekey = open_file_information->FileKey;
3.在应用程序和驱动程序filedisk.h中的结构中增加一项
typedef struct _OPEN_FILE_INFORMATION {
    LARGE_INTEGER   FileSize;
    BOOLEAN         ReadOnly;
    USHORT          FileNameLength;
    UCHAR           FileName[1];
    ULONG           FileKey; //密钥
} OPEN_FILE_INFORMATION, *POPEN_FILE_INFORMATION;
4.在应用程序的FileDiskMount行之前,给密钥赋值
       OpenFileInformation->FileKey=0xabcd7890;//密钥赋值
       int ret;
       ret=FilediskMount(DeviceNumber, OpenFileInformation, DriveLetter, CdImage);

经过以上4步,驱动程序应当可以得到传进去的密钥了,但当我新建一个虚盘时,为什么还报系统找不到指定的路径呢?


[color=red] QQ 18918737[/color]
aidamin
驱动小牛
驱动小牛
  • 注册日期2004-02-13
  • 最后登录2009-06-15
  • 粉丝0
  • 关注0
  • 积分964分
  • 威望98点
  • 贡献值0点
  • 好评度90点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-30 21:31
没有高手知道吗
[color=red] QQ 18918737[/color]
limeng1975
驱动牛犊
驱动牛犊
  • 注册日期2004-03-08
  • 最后登录2013-04-11
  • 粉丝0
  • 关注0
  • 积分51分
  • 威望6点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-31 08:34
你自己定义一个IOCTL,然后再有应用程序调用DEVICEIOCONTROL发送密钥就可以了
游客

返回顶部