資源簡介
filedisk-21是最新版本的經典windows磁盤驅動例子,學習必看。將一個(或多個)文件映射為物理磁盤或光驅。包括了驅動部分代碼和應用部分代碼。這個版本支持了映射稀疏文件,稀疏文件大家都知道的吧?--windows的天才設計,效果上實現(xiàn)了磁盤映射文件占用空間的按需變大...
注意:需要在vs2015和wdk10編譯代碼。
注意:需要在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個文件信息
評論
共有 條評論