资源简介

filedisk-21是最新版本的经典windows磁盘驱动例子,学习必看。将一个(或多个)文件映射为物理磁盘或光驱。包括了驱动部分代码和应用部分代码。这个版本支持了映射稀疏文件,稀疏文件大家都知道的吧?--windows的天才设计,效果上实现了磁盘映射文件占用空间的按需变大...
注意:需要在vs2015和wdk10编译代码。

资源截图

代码片段和文件信息

/*
    This is a virtual disk driver for Windows that uses one or more files to
    emulate physical disks.
    Copyright (C) 1999-2015 Bo Brant閚.
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License or
    (at your option) any later version.
    This program is distributed in the hope that it will be useful
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    along with this program; if not write to the Free Software
    Foundation Inc. 59 Temple Place Suite 330 Boston MA  02111-1307  USA
*/

#include 
#include 
#include 
#include 
#include 
#include “filedisk.h“

#ifndef _PREFAST_
#pragma warning(disable:4068)
#endif // _PREFAST_

#pragma prefast( disable: 28719 “this warning only applies to drivers not applications“ )

int FileDiskSyntax(void)
{
    fprintf(stderr “syntax:\n“);
    fprintf(stderr “filedisk /mount    [size[k|M|G] | /ro | /cd] \n“);
    fprintf(stderr “filedisk /umount \n“);
    fprintf(stderr “filedisk /status \n“);
    fprintf(stderr “\n“);
    fprintf(stderr “filename formats:\n“);
    fprintf(stderr “  c:\\path\\filedisk.img\n“);
    fprintf(stderr “  \\Device\\Harddisk0\\Partition1\\path\\filedisk.img\n“);
    fprintf(stderr “  \\\\server\\share\\path\\filedisk.img\n“);
    fprintf(stderr “\n“);
    fprintf(stderr “example:\n“);
    fprintf(stderr “filedisk /mount  0 c:\\tmp\\filedisk.img 8M f:\n“);
    fprintf(stderr “filedisk /mount  1 c:\\tmp\\cdimage.iso /cd i:\n“);
    fprintf(stderr “filedisk /umount f:\n“);
    fprintf(stderr “filedisk /umount i:\n“);

    return -1;
}

void PrintLastError(char* Prefix)
{
    LPVOID lpMsgBuf;

    FormatMessage( 
        FORMAT_MESSAGE_ALLOCATE_BUFFER |
        FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS
        NULL
        GetLastError()
        0
        (LPTSTR) &lpMsgBuf
        0
        NULL
        );

    fprintf(stderr “%s %s“ Prefix (LPTSTR) lpMsgBuf);

    LocalFree(lpMsgBuf);
}

int
FileDiskMount(
    int                     DeviceNumber
    POPEN_FILE_INFORMATION  OpenFileInformation
    BOOLEAN                 CdImage

{
    char    VolumeName[] = “\\\\.\\ :“;
    char    DriveName[] = “ :\\“;
    char    DeviceName[255];
    HANDLE  Device;
    DWORD   BytesReturned;

    VolumeName[4] = OpenFileInformation->DriveLetter;
    DriveName[0] = OpenFileInformation->DriveLetter;

    Device = CreateFile(
        VolumeName
        GENERIC_READ | GENERIC_WRITE
        FILE

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      18332  1999-09-16 20:44  filedisk-21\COPYING.TXT

     文件         16  2015-09-22 13:01  filedisk-21\DIRS

     文件         12  2015-09-22 13:02  filedisk-21\exe\DIRS

     文件       1301  2015-12-16 13:18  filedisk-21\exe\filedisk.sln

     文件      12288  2015-12-16 18:32  filedisk-21\exe\obj\amd64\filedisk.exe

    .CA....    551936  2015-12-16 18:32  filedisk-21\exe\obj\amd64\filedisk.pdb

     文件      11776  2015-12-16 18:32  filedisk-21\exe\obj\i386\filedisk.exe

    .CA....    568320  2015-12-16 18:32  filedisk-21\exe\obj\i386\filedisk.pdb

     文件      31744  2015-12-16 18:32  filedisk-21\exe\obj\ia64\filedisk.exe

    .CA....    592896  2015-12-16 18:32  filedisk-21\exe\obj\ia64\filedisk.pdb

     文件      11966  2015-09-22 23:49  filedisk-21\exe\src\filedisk.c

     文件       2561  2015-12-16 18:21  filedisk-21\exe\src\filedisk.rc

     文件       7959  2015-12-16 13:17  filedisk-21\exe\src\filedisk.vcxproj

     文件       1235  2015-12-16 13:13  filedisk-21\exe\src\filedisk.vcxproj.filters

     文件        267  1996-01-21 10:30  filedisk-21\exe\src\MAKEFILE

     文件        186  2015-12-16 18:29  filedisk-21\exe\src\Sources

     文件        356  2008-08-16 14:40  filedisk-21\filedisk.reg

     文件        408  2009-10-14 15:26  filedisk-21\install.txt

     文件       3942  2015-12-16 18:24  filedisk-21\readme.txt

     文件         12  2015-09-22 13:02  filedisk-21\sys\DIRS

     文件       2645  2015-12-16 13:07  filedisk-21\sys\filedisk.sln

     文件       1920  2015-12-12 16:37  filedisk-21\sys\inc\filedisk.h

    .CA....    281600  2015-12-16 18:32  filedisk-21\sys\obj\chk\amd64\filedisk.pdb

     文件      31744  2015-12-16 18:32  filedisk-21\sys\obj\chk\amd64\filedisk.sys

    .CA....    281600  2015-12-16 18:31  filedisk-21\sys\obj\chk\i386\filedisk.pdb

     文件      22656  2015-12-16 18:31  filedisk-21\sys\obj\chk\i386\filedisk.sys

    .CA....    322560  2015-12-16 18:32  filedisk-21\sys\obj\chk\ia64\filedisk.pdb

     文件      79872  2015-12-16 18:32  filedisk-21\sys\obj\chk\ia64\filedisk.sys

    .CA....    273408  2015-12-16 18:32  filedisk-21\sys\obj\fre\amd64\filedisk.pdb

     文件      23552  2015-12-16 18:32  filedisk-21\sys\obj\fre\amd64\filedisk.sys

............此处省略34个文件信息

评论

共有 条评论