阅读:2291回复:12
DefineDosDevice函数能否虚拟网络文件夹为磁盘
用DefineDosDevice把文件夹虚拟为磁盘。在虚拟网络文件夹的时候出现的都是打叉的“网络磁盘“,而且打不开。
例如: 虚拟Candy主机的soft文件夹为虚拟盘j: DefineDosDevice(DDD_RAW_TARGET_PATH,"j:","\\??\\UNC\\\\Candy\\soft"); 请问DefineDosDevice到底可不可以虚拟网上文件夹为磁盘 [编辑 - 12/22/04 by jkgear] |
|
沙发#
发布于:2004-12-22 16:58
可以,没问题的.
|
|
|
板凳#
发布于:2004-12-22 17:16
虚拟Candy主机的soft文件夹为虚拟盘j:
“Candy主机的soft文件夹”是一个共享的可以被访问的目录? 这和直接映射网络驱动器有什么区别呢 [编辑 - 12/22/04 by snowStart] |
|
|
地板#
发布于:2004-12-22 19:09
用DefineDosDevice把文件夹虚拟为磁盘。在虚拟网络文件夹的时候出现的都是打叉的“网络磁盘“,而且打不开。
例如: 虚拟Candy主机的soft文件夹为虚拟盘j: DefineDosDevice(DDD_RAW_TARGET_PATH,"j:","\??\UNC\\Candy\soft"); DWORD dwError= GetLastError(); 你可以通过这个来查找错误 |
|
地下室#
发布于:2004-12-23 08:22
#include "stdafx.h"
#include <windows.h> #include <windows.h> int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow) { // 将驱动器C映射成UNC路径 char errortext[20]; if(!DefineDosDevice(DDD_RAW_TARGET_PATH,"R:","\\\\??\\\\UNC\\\\\\\\Candy\\\\soft")) { wsprintf(errortext,"Mapping driver failed: %d",GetLastError()); MessageBox(NULL,errortext,"error",MB_OK); } return 0; } 用以上代码测试: DefineDosDevice执行是成功的,返回值为1。 系统里出现了一个打着叉的“网络驱动器(R)”,不能打开 Candy主机的soft文件夹是共享的目录 在dos窗口下执行subst,显示了我的R盘映射的目录是 "R:\\: => UNC\\Candy\\soft" 为什么会这样呢,大侠帮帮忙 |
|
5楼#
发布于:2004-12-23 08:48
可能驱动还没有正确加载
|
|
|
6楼#
发布于:2004-12-23 09:52
可能驱动还没有正确加载 你说的是什么驱动呢,虚拟文件夹为磁盘单用DefineDosDevice就可以,不需要驱动呀 |
|
7楼#
发布于:2004-12-23 12:43
就是filedisk.sys文件可能没有成功加载
|
|
|
8楼#
发布于:2004-12-23 13:02
DefineDosDevice只是在MS-DOS名和设备对象名称直接建立一个关联。 比如调用:DefineDosDevice(DDD_RAW_TARGET_PATH,"R:","\\??\\YourDiskDevice")) 后,针对"R:"的CreateFile等操作都会被Io Manager定位到YourDiskDevice。从而触发mount操作。
你调用DefineDosDevice(DDD_RAW_TARGET_PATH,"R:","\\??\\UNC\\\\Candy\\soft")) 中第二个参数不是系统可以识别的设备对象,后果就。。。 :P |
|
9楼#
发布于:2004-12-23 13:16
就是filedisk.sys文件可能没有成功加载 用DefineDosDevice把文件夹虚拟成磁盘不需要.sys文件。 DefineDosDevice只是在MS-DOS名和设备对象名称直接建立一个关联。 比如调用:DefineDosDevice(DDD_RAW_TARGET_PATH,"R:","\??\YourDiskDevice")) 后,针对"R:"的CreateFile等操作都会被Io Manager定位到YourDiskDevice。从而触发mount操作。 Candy主机的soft文件夹是共享的,可以从我的电脑访问,你说的“第二个参数不是系统可以识别的设备对象”是指是否可以访问还是别的什么 |
|
10楼#
发布于:2004-12-23 18:10
虚拟Candy主机的soft文件夹为虚拟盘j:
“Candy主机的soft文件夹”是一个共享的可以被访问的目录 其实就是映射网络驱动器了 用这个函数更好使 WNetAddConnection2 如: TCHAR szUserName[32] = "Guest" TCHAR szPassword[32] = "7828", NETRESOURCE nr={0}; nr.dwType = RESOURCETYPE_ANY; nr.lpLocalName = "R:", nr.lpRemoteName = ="\\\\\\\\Candy\\\\soft"; WNetAddConnection2(&nr, szPassword, szUserName, FALSE); |
|
|
11楼#
发布于:2004-12-24 08:22
虚拟Candy主机的soft文件夹为虚拟盘j: thankyou,已经映射上了,程序如下: #define UNICODE #define _UNICODE #include "stdafx.h" #include <windows.h> #include <winnetwk.h> #include <tchar.h> #include <lm.h> #pragma comment (lib,"mpr") #pragma comment (lib,"netapi32") int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { TCHAR szUserName[32] = ""; TCHAR szPassword[32] = ""; NETRESOURCE nr={0}; nr.dwType = RESOURCETYPE_ANY; nr.lpLocalName = "R:"; nr.lpRemoteName ="\\\\\\\\Server\\\\Candy"; WNetAddConnection2(&nr, szPassword, szUserName, FALSE); return 0; } |
|
12楼#
发布于:2004-12-24 17:09
学习!
|
|