阅读:1408回复:2
应用程序如何将密钥传给filedisk
大家好!
我在试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步,驱动程序应当可以得到传进去的密钥了,但当我新建一个虚盘时,为什么还报系统找不到指定的路径呢? |
|
|
沙发#
发布于:2004-05-30 21:31
没有高手知道吗
|
|
|
板凳#
发布于:2004-05-31 08:34
你自己定义一个IOCTL,然后再有应用程序调用DEVICEIOCONTROL发送密钥就可以了
|
|