需求是这样的(使用的是windows系统):
有一个底座,可以连接50个优盘,然后这个底座再跟电脑连接,我想把同样的数据拷贝到这
50个优盘里(期间不可以拔出部分优盘,一定要是50个的)
第一种情况:
当连接的优盘没有超过26个的时候,电脑上可以显示优盘的盘符的。可以进行数据的传送,一个一个的,更新26个优盘。
第二种情况:
当连接的优盘超过26个的时候,比如我插入了50个优盘,则电脑上只是显示26个盘符(只到字母Z)而已。其他的24个优盘的盘符则没有显示出来。这样的话,没有盘符,我就没有办法把数据拷贝到其他的24个优盘上,就只能拷贝到有显示盘符的26个优盘上。这样的话,就达不到目标了。 我之前做了测试,当我插入50个优盘的时候,其他的24个优盘,windows系统并没有为其分配盘符,只是分配了一个空的东东。 后来我又有一个想法,先把数据传到26个优盘上,然后使用程序代码将这26个盘符卸载掉,然后再更新其他的24个优盘,好像是不行。
总之是因为盘符不够,导致无法把数据传到其他的24个优盘里。想请教一下,这个问题该如何解决?请问哪个高手知道哪些文章介绍这方面的或者是网站介绍这方面的。
请提供一下思路或者想法。好可以上网查资料。
有一个底座,可以连接50个优盘,然后这个底座再跟电脑连接,我想把同样的数据拷贝到这
50个优盘里(期间不可以拔出部分优盘,一定要是50个的)
第一种情况:
当连接的优盘没有超过26个的时候,电脑上可以显示优盘的盘符的。可以进行数据的传送,一个一个的,更新26个优盘。
第二种情况:
当连接的优盘超过26个的时候,比如我插入了50个优盘,则电脑上只是显示26个盘符(只到字母Z)而已。其他的24个优盘的盘符则没有显示出来。这样的话,没有盘符,我就没有办法把数据拷贝到其他的24个优盘上,就只能拷贝到有显示盘符的26个优盘上。这样的话,就达不到目标了。 我之前做了测试,当我插入50个优盘的时候,其他的24个优盘,windows系统并没有为其分配盘符,只是分配了一个空的东东。 后来我又有一个想法,先把数据传到26个优盘上,然后使用程序代码将这26个盘符卸载掉,然后再更新其他的24个优盘,好像是不行。
总之是因为盘符不够,导致无法把数据传到其他的24个优盘里。想请教一下,这个问题该如何解决?请问哪个高手知道哪些文章介绍这方面的或者是网站介绍这方面的。
请提供一下思路或者想法。好可以上网查资料。
然后,再根据具体情况想办法解决。或者用3楼的方法,把所有的优盘分区都挂载到一个文件夹下面(如果可以的话),然后,向其子文件夹拷贝文件即可。
另外因为windows是即插即用的,所以我还不会挂载,以后学习一下……
按照3楼的说法,我把D盘设置为NTFS的。
然后手动为50个优盘设置挂载的目录。例如我把优盘G挂载在D盘的youpan目录上。
这样的话,我把文件拷贝到youpan目录上,就相当于拷贝到优盘G上。
即使再多的优盘也没有问题。
但是有一个问题,就是设置挂载目录时,我是手动设置的,而不是代码实现的。
如何手动设置,我是参考下面的文章的:
http://support.microsoft.com/kb/307889/zh-cn#top
目前的进展是这样的:
接下来要做的是代码实现上面的挂载功能。
继续加油中。
例如可以使用软件把某个盘的文件系统NIFS的。
看了整天的mldn,终于有了收获。所有的关于挂载点的代码都是
使用c++写的。c#是没有的,不过可以使用c#来调用C++写的代码。
部分代码如下: 1、设置挂载点
[DllImport("kernel32.dll")]
public static extern int SetVolumeMountPoint(string lpszVolumeMountPoint,string lpszVolumeName); 接下来是调用:
private void button2_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder(1024);
int i = GetVolumeNameForVolumeMountPoint(@"G:\", sb, sb.Capacity);
Console.WriteLine(i.ToString());
int result = SetVolumeMountPoint(@"d:\de\", sb.ToString());
Console.WriteLine(result.ToString());
}
成功后就可以使用de来访问G盘了。设置完挂载点之后可以使用下面的代码来查看
总共有哪些挂载点的。如下:
private void button3_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder(1024);
IntPtr result = FindFirstVolumeMountPoint(@"d:\\", sb, sb.Capacity);
Console.WriteLine(sb.ToString());
while (FindNextVolumeMountPoint(result, sb, sb.Capacity))
{
Console.WriteLine(sb.ToString());
}
//最后把result这个搜索句柄给关闭掉
FindVolumeMountPointClose(result);
}至于其他的可以参看这个地址:
http://msdn.microsoft.com/en-us/library/aa365735(VS.85).aspx 这个需求还是有些难的,由于老板说这个比较急,让我研究一下。
我觉得这也是一种锻炼,想看英文文档,查找资料。而且webservices是使用java写的,c#只是调用。
而访问磁盘管理的则是c++的,O(∩_∩)O哈哈~,我一下子要看三个ide工具进行调试。
继续加油中。