?? filedisk.cpp
字號:
#include <windows.h>
#include <stdio.h>
#include <vector>
#include <conio.h>
#include "VDSDKDll.h"
#define DISK_SIZE 16
HANDLE g_hFile = INVALID_HANDLE_VALUE;
DRIVE_HANDLE g_hDrive = INVALID_DRIVE_HANDLE;
int CreateVirtualDisk();
int main(int argc, char* argv[])
{
if(!InitializeVDSDK())
{
printf("Error: Can not initialize VDSDK\n");
return 11;
}
CreateVirtualDisk();
// Shutdown VDSDK
ShutdownVDSDK(TRUE);
return 0;
}
// ===========================================
// Virtual disk implementation
// ===========================================
// read callback handler
BOOL _stdcall OnReadCallback
(
DRIVE_HANDLE h,
ULONGLONG ReadOffset,
ULONG ReadSize,
void* ReadBuffer,
ULONG *BytesRead
)
{
printf("OnReadCallback: size=%X\n",ReadSize);
LARGE_INTEGER l;
DWORD dw;
l.QuadPart = ReadOffset;
SetFilePointer(g_hFile,l.LowPart,&l.HighPart,FILE_BEGIN);
BOOL result = ReadFile(g_hFile,ReadBuffer,ReadSize,&dw,NULL);
*BytesRead = dw;
return result;
}
// write callback handler
BOOL _stdcall OnWriteCallback
(
DRIVE_HANDLE h,
ULONGLONG WriteOffset,
ULONG WriteSize,
const void* WriteBuffer,
ULONG *BytesWritten
)
{
printf("OnWriteCallback: size=%X\n",WriteSize);
LARGE_INTEGER l;
DWORD dw;
l.QuadPart = WriteOffset;
SetFilePointer(g_hFile,l.LowPart,&l.HighPart,FILE_BEGIN);
BOOL result = WriteFile(g_hFile,WriteBuffer,WriteSize,&dw,NULL);
*BytesWritten = dw;
return result;
}
int CreateVirtualDisk()
{
printf("Creating drive...\n");
g_hFile = CreateFile("disk.dat",GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ,0,
OPEN_ALWAYS,FILE_FLAG_NO_BUFFERING | FILE_FLAG_RANDOM_ACCESS,0);
if(g_hFile == INVALID_HANDLE_VALUE)
{
printf("ERROR: can not create / open disk image file\n");
return 1;
}
// create virtual disk
g_hDrive = CreateVirtualDrive('Z',DISK_SIZE,
OnReadCallback,
OnWriteCallback);
if(g_hDrive == INVALID_DRIVE_HANDLE)
{
printf("ERROR: can not create virtual drive\n");
return 1;
}
printf("VirtualDrive created. Handle = %d\n",g_hDrive);
printf("Press any key to quit\n");
// wait until any key pressed
getch();
// force dismount disk
DestroyVirtualDrive(g_hDrive,TRUE);
CloseHandle(g_hFile);
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -