阅读:1562回复:5
关于和FILEDISK的通讯
HI:
我想在应用程序传递一串数据给虚拟硬盘的驱动程序,虚拟硬盘把这串数据作为密钥,不知如何实现? |
|
最新喜欢:![]() |
沙发#
发布于:2003-06-10 13:10
DeviceIoControl
The DeviceIoControl function sends a control code directly to a specified device driver, causing the corresponding device to perform the corresponding operation. BOOL DeviceIoControl( HANDLE hDevice, // handle to device DWORD dwIoControlCode, // operation LPVOID lpInBuffer, // input data buffer DWORD nInBufferSize, // size of input data buffer LPVOID lpOutBuffer, // output data buffer DWORD nOutBufferSize, // size of output data buffer LPDWORD lpBytesReturned, // byte count LPOVERLAPPED lpOverlapped // overlapped information ); 这种问题还用问吗? |
|
板凳#
发布于:2003-06-11 09:06
else:
我是知道用DeviceIoControl(),但是我不知道HANDLE是什么。在FILEDISK的驱动中他的HANDLE怎么得到。想用CreatFile(),但是不知道他的DEVICENAME,DEVICENAME是他的盘符名吗? 还有在驱动中我想保存从应用层传入的数据,是不是要设全局变量! else,你有我的email,能否给我举例说明一下。我是个新手!不胜感激! |
|
地板#
发布于:2003-06-11 09:49
Device = CreateFile(
VolumeName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, NULL ); if (Device == INVALID_HANDLE_VALUE) { PrintLastError(&VolumeName[4]); DefineDosDevice(DDD_REMOVE_DEFINITION, &VolumeName[4], NULL); return -1; } if (!DeviceIoControl( Device, IOCTL_FILE_DISK_OPEN_FILE, OpenFileInformation, sizeof(OPEN_FILE_INFORMATION) + OpenFileInformation->FileNameLength - 1, NULL, 0, &BytesReturned, NULL )) { PrintLastError(\"FileDisk:\"); DefineDosDevice(DDD_REMOVE_DEFINITION, &VolumeName[4], NULL); return -1; } 你按照这样作就可以了,可以用全局变量保存数据,如果这个数据会在不同的线程里面改变,你就要用一个锁 |
|
地下室#
发布于:2003-06-11 20:17
Else:
我也在做这方面的东西!在CreatFile()中,VolumName是盘符名称啊,他可以做设备名吗?他能打开虚拟硬盘的驱动吗? 即使用盘符做设备名可以,那虚拟硬盘的盘符不就固定了吗?ELSE,能否说的详细一点! |
|
|
5楼#
发布于:2003-06-12 10:59
VolumName是一个到\\\\Device\\\\FileDisk符号连接当然可以打开了。
如果想不固定盘符,你在驱动里面创建一个符号连接就可以了 |
|