windows的磁盘操作之二——初始化磁盘

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 09:35 点击:

上一节中我们介绍了一些基本概念和主要的API,本节开始我们将列举并分析一些实例。本文中的所有代码我都在vs2008下测试过,读者只需要替换少量的宏定义即可编译执行。
 
面对一块新的磁盘,我们首先要做的就是对其初始化。在系统中通过windows的磁盘管理完成这一点非常容易,但在程序中实现略微复杂。本节的示例代码对一块新硬盘初始化,并在上面创建分区。
代码如下:
 
/******************************************************************************
* Function: initialize the disk and create partitions
* input: disk, disk name
*        parNum, partition number
* output: N/A
* return: Succeed, 0
*         Fail, -1
******************************************************************************/
DWORD CreateDisk(DWORD disk, WORD partNum)
{
    HANDLE hDevice;               // handle to the drive to be examined
    BOOL result;                  // results flag
    DWORD readed;                 // discard results
    DWORD ret;
    WORD i;
    CHAR diskPath[DISK_PATH_LEN];
    DISK_GEOMETRY pdg;
    DWORD sectorSize;
    DWORD signature;
    LARGE_INTEGER diskSize;
    LARGE_INTEGER partSize;
    BYTE actualPartNum;
  
    DWORD layoutStructSize;
    DRIVE_LAYOUT_INFORMATION_EX *dl;
    CREATE_DISK newDisk;
 
    sprintf(diskPath, "\\\\.\\PhysicalDrive%d", disk);
 
    actualPartNum = 4;
    if (partNum > actualPartNum)
    {
        return (WORD)-1;
    }
  
    hDevice = CreateFile(
                diskPath,
                GENERIC_READ|GENERIC_WRITE,
                FILE_SHARE_READ|FILE_SHARE_WRITE,
                NULL,           //default security attributes 
                OPEN_EXISTING, // disposition 
                0,              // file attributes 
                NULL
                );
    if (hDevice == INVALID_HANDLE_VALUE) // cannot open the drive
    {
        fprintf(stderr, "CreateFile() Error: %ld\n", GetLastError());
        return DWORD(-1);
    }
  
    // Create primary partition MBR
    newDisk.PartitionStyle = PARTITION_STYLE_MBR;
    signature = (DWORD)time(NULL);     //get signature from current time
  

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • dos命令原来也能这样用?允许查找未知子目录指定文件
    •  windows的磁盘操作之八——格式化分区的思考
    • windows篇-第三章 安装和配置DNS服务器
    • windows篇-第二章 安装和配置Web服务器
    • windows篇-第一章 windows server 2008安装和简单配置
    •  windows server 2003断开远程之后自动注销用户
    • Windows服务器下用IIS Rewrite组件为IIS设置伪静态方法
    • Windows 2008 R2 SP1部署WSUS 3.0 SP2
    • Windows 7秘籍揭秘:用“手”写公式

    快速直达

    操作系统导航

    LinuxWindows虚拟机
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1