?? ramdisk.cpp
字號:
#include <windows.h>
#include <stdio.h>
#include <vector>
#include <conio.h>
#include "VDSDKDll.h"
#define DISK_SIZE 16
std::vector<char> g_memory;
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 1;
}
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);
memcpy(ReadBuffer
,&g_memory[0] + ReadOffset,
ReadSize);
*BytesRead = ReadSize;
return TRUE;
}
// write callback handler
BOOL _stdcall OnWriteCallback
(
DRIVE_HANDLE h,
ULONGLONG WriteOffset,
ULONG WriteSize,
const void* WriteBuffer,
ULONG *BytesWritten
)
{
printf("OnWriteCallback: size=%X\n",WriteSize);
memcpy(&g_memory[0] + WriteOffset,
WriteBuffer,
WriteSize);
*BytesWritten = WriteSize;
return TRUE;
}
int CreateVirtualDisk()
{
printf("Creating drive...\n");
// prepare memory buffer
g_memory.resize(DISK_SIZE * 1024 * 1024);
// 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();
// dismount disk
if(!DestroyVirtualDrive(g_hDrive,FALSE))
{
printf("Dismount failed. Forcing dismount operation...\n");
// force dismount...
DestroyVirtualDrive(g_hDrive,TRUE);
}
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -