Chinaunix首页 | 论坛 | 博客
  • 博客访问: 335319
  • 博文数量: 102
  • 博客积分: 3140
  • 博客等级: 中校
  • 技术积分: 680
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-28 11:44
个人简介

开阔未来

文章分类

全部博文(102)

文章存档

2015年(10)

2014年(1)

2013年(1)

2012年(4)

2011年(8)

2010年(24)

2009年(51)

2008年(3)

我的朋友

分类: WINDOWS

2009-01-25 22:42:38

嵌入式系统可能支持多种文件系统,其中包括windows文件系统如fat, ntfs等。本文主要是将自己开发一个简单的只读FAT文件系统的经验与大家share.
 
本方法假设文件系统算法已经开发结束,然后设计文件系统模拟程序(本例中FileMonitor),此模拟程序将文件系统格式化到一个文件上。此文件通过filedisk程序(此程序是通用程序可以从网络下载)将此文件系统mount到windows路径下i盘,然后通过perl程序调用windows WMI 测试系统格式化是否满足windows操作系统。此方法由于是通过windos WMI测试,与windows兼容性完美。perl程序如下
 
#perl
#完成 WMI支持的验证
use Win32::OLE('in');
use constant wbemFlagReturnImmediately => 0x10;
use constant wbemFlagForwardOnly => 0x20;
$computer = ".";
$objWMIService = Win32::OLE->GetObject
    ("winmgmts:\\\\$computer\\root\\CIMV2") or die "WMI connection failed.\n";
   
$i = 0;  
#定义测试文件系统的大小,此例子 为从100M-1G 大小的文件系统, 步调为100M, 可以自己定义
for( $i=100; $i<1000; $i+=100)
{
 print "Test time $i\n\n\n";
 system("filedisk /umount i:");
 $j = $i*2;
 #模拟程序将文件系统格式化到一个文件上
 if ( system("FileMonitor e:\\temp\\filedisk.img $j") )
 {
  print "create drive file failed!\n";
  exit 0;
 }
 
 #filedisk程序将此文件系统mount到windows路径下i盘
 if ( system("filedisk /mount 0 e:\\temp\\filedisk.img $ik i:") )
 {
  print "create I: failed!\n";
  exit 0;
 }
 $colItems = $objWMIService->Get("Win32_LogicalDisk.DeviceID='I:'");
 
 if (!$colItems)
 {
  print "Drive is not exist\n";
  exit 0;
 }
#打印文件系统信息
 print "DriveID($colItems->{DeviceID}) $colItems->{FileSystem} size = : $colItems-Size}\n";
 print "Check...\n";
 
#验证文件系统
 $errReturn = $colItems->ChkDsk(0);
 
 if( $errReturn != 0)
 {
  print "Error code $errReturn\n";
  exit 0;
 }
 else
 {
  print "Sucess\n";
 }
 system("filedisk /umount i:");
}
#
阅读(1026) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~