zoukankan      html  css  js  c++  java
  • WinCE 文件系统分区的卸载 加载

    学习文章:

    http://blog.sina.com.cn/s/blog_5f0215c70100d3j7.html  

    WINCE与WM的差异(1)-查询文件系统目录结构

    MSDN :http://msdn.microsoft.com/zh-cn/office/ee490204  Storage Manager Functions (Windows Embedded Compact 7)

    (msdn,我用的太悲剧了,每次都不能快速的在目录索引下找到WinCE的目录,但偶尔翻的翻的就不知道怎么翻到WinCE的目录了,7也是。。。)

    	HANDLE h_store;
    	STOREINFO StoreInfo;
    	StoreInfo.cbSize = sizeof(STOREINFO);
    	h_store = FindFirstStore(&StoreInfo);
    	if (h_store !=INVALID_HANDLE_VALUE)
    	{
    		printf("查找Store成功 \n");
    		printf("szDeviceName =%ls\n", StoreInfo.szDeviceName);
    		printf("szStoreName =%ls\n", StoreInfo.szStoreName);
    		printf("dwDeviceClass =%d\n", StoreInfo.dwDeviceClass);
    		printf("dwDeviceType =%d\n", StoreInfo.dwDeviceType);
    		printf("dwDeviceFlags =%d\n", StoreInfo.dwDeviceFlags);
    		printf("dwPartitionCount =%d\n", StoreInfo.dwPartitionCount);
    		printf("dwMountCount =%d\n", StoreInfo.dwMountCount);
    		/*	szDeviceName =DSK1:
    			szStoreName =EMULATOR SHARED FOLDER FS
    			dwDeviceClass =2
    			dwDeviceType =536870912
    			dwDeviceFlags =1
    			dwPartitionCount =1
    			dwMountCount =1*/
    		HANDLE h_openStore;
    		h_openStore = OpenStore(L"DSK1:");
    		HANDLE h_part;
    		PARTINFO PartInfo;
    		PartInfo.cbSize = sizeof(PARTINFO);
    		h_part = FindFirstPartition(h_openStore,&PartInfo);
    		//FindFirstPartition第一个参数是OpenStore的返回值,不能用FindFirstStore的返回值
    		if (h_part !=INVALID_HANDLE_VALUE)
    		{
    			printf("查找第一个Store分区成功\n");
    			do 
    			{
    				
    				printf("szPartitionName =%ls\n", PartInfo.szPartitionName);
    				printf("szFileSys =%ls\n", PartInfo.szFileSys);
    				printf("szVolumeName =%d\n", PartInfo.szVolumeName);
    
    			} while (FindNextPartition(h_part,&PartInfo));
    
    			/*szPartitionName =PART00
    			szFileSys =VCEFSD.dll
    			szVolumeName =324996*/
    		}
    		else
    		{
    			printf("查找第一个Store分区失败\n");
    		}
    
    		FindClosePartition(h_part);
    
    	}
    
    	if(FindNextStore(h_store,&StoreInfo))
    	{
    		printf("不止唯一Store\n");
    	}
    	else
    	{
    		printf("只有一个Store\n");
    	}
    	FindCloseStore(h_store);

      

    输出的是模拟器的信息

    还没结束,今天没时间测试了,也没机器,

    工作的机器放资源的分区是隐藏的,每次放资源或程序的时候感觉忒麻烦。。尤其是心情烦躁的时候。

    目标:做一个程序,一点击就修改注册表键值 ,将对应分区注册表隐藏设置为显示,然后卸载分区,再加载分区,应该会方便。

    明天继续

    ---------------------------------------------------------------------------------------------------------------------------------

    //将要显示的分区的注册表隐藏设置为假。

    void CPartitionControlDlg::ChangeRegKeyValue()
    {
    	HKEY	hOpenKey;
    	DWORD   dwKeyValueType = 0;
    	DWORD	dwKeyValue;
    	DWORD   dwKeyValueLength = sizeof(DWORD);
    	if(ERROR_SUCCESS == RegOpenKeyEx( HKEY_LOCAL_MACHINE, L"System\\StorageManager\\Profiles\\Nand\\NANDFATFS",0, 0, &hOpenKey ))
    	{
    		long lResult = 0;
    		lResult = RegQueryValueExW( hOpenKey, L"MountHidden", 0, &dwKeyValueType,(BYTE*)&dwKeyValue, &dwKeyValueLength);
    		if(lResult ==ERROR_SUCCESS)
    		{
    			printf("读取注册表成功,achKey = %d\n",dwKeyValue);
    			dwKeyValue = 0;
    			RegSetValueExW(hOpenKey,L"MountHidden",0,dwKeyValueType,(BYTE*)&dwKeyValue,dwKeyValueLength);
    			
    		}
    		else
    		{
    			printf("读取失败 :lResult = %d\n",lResult);
    		}
    		
    			//RegSetValueEx(hKey, TEXT("Screen"), 0, dwType, (LPBYTE)&dwData, dwDataLen);
    		RegCloseKey( hOpenKey );
    	}
    
    }
    

      

    //卸载、加载指定分区

    void CPartitionControlDlg::OnBnClickedButton2()
    {
    	// TODO: Add your control notification handler code here
    
    	ChangeRegKeyValue();
    
    	HANDLE h_openStore;
    	h_openStore = OpenStore(L"DSK1:");
    	HANDLE h_NandPart;
    	PARTINFO PartInfo;
    	PartInfo.cbSize = sizeof(PARTINFO);
    	h_NandPart = OpenPartition(h_openStore,L"Part01");
    
    	if (DismountPartition(h_NandPart))
    	{
    		printf("NAND分区卸载成功\n");
    	}
    	else
    	{
    		printf("NAND分区卸载失败\n");
    		MessageBox(L"显示NAND失败");
    		CloseHandle(h_NandPart);
    		CloseHandle(h_openStore);
    		return;
    	}
    	if (MountPartition(h_NandPart))
    	{
    		printf("NAND分区加载成功\n");
    	}
    	else
    	{
    		printf("NAND分区加载失败\n");
    		MessageBox(L"显示NAND失败");
    		CloseHandle(h_NandPart);
    		CloseHandle(h_openStore);
    		return;
    	}
    
    	CloseHandle(h_NandPart);
    	CloseHandle(h_openStore);
    	MessageBox(L"显示NAND成功");
    
    }
    

      



  • 相关阅读:
    Pyspider实例之抓取数据并保存到MySQL的数据库
    pyspider中内容选择器常用方法汇总
    pyspider用PyQuery解析页面数据
    CasperJs 入门介绍
    移动应用抓包调试利器Charles
    GO语言文件的创建与打开实例分析
    Golang之实现一个负载均衡算法(随机,轮询)
    重新认识一个强大的 Gson
    关于Java的File.separator
    centos重启redis后,数据丢失
  • 原文地址:https://www.cnblogs.com/ezhong/p/2171453.html
Copyright © 2011-2022 走看看