⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vdiskraw.cpp

📁 Virtual Disk Driver
💻 CPP
字号:
/*	VDiskRaw.cpp	Multiple file flat image class	Copyright (C) 2003 Ken Kato*/#include "vdkbase.h"#include "vdkutil.h"#include "VDiskRaw.h"#include "VDiskExtRaw.h"#include "VDiskUtil.h"#include "VDiskFile.h"////	Initialize instance from a descriptor file//VDKSTAT VDiskRaw::Initialize(PCHAR pPath){	VDiskFile file;	CHAR	buf[MAX_PATH + 40];	PCHAR	current;	VDKSTAT	ret;	//	//	parameter check	//	if (!pPath || !*pPath) {		return VDK_PARAM;	}	//	//	store path	//	if ((ret = StorePath(pPath)) != VDK_OK) {		return ret;	}	//	//	open file	//	if ((ret = file.Open(pPath)) != VDK_OK) {		return ret;	}	//	//	initialize members	//	m_nCapacity		= 0;	while ((ret = file.ReadText(buf, sizeof(buf), NULL)) == VDK_OK) {		//		//	replace tabs with blanks		//		current = buf;		while (*current) {			if (*current == '\t') {				*current = ' ';			}			current++;		}		//		//	remove trailing blanks		//		while (current > buf && *(--current) == ' ') {			*current = '\0';		}		//		//	skip leading blanks		//		current = buf;		while (*current == ' ') {			current++;		}		//		//	blank or comment line?		//		if (*current && *current != '#') {			VDiskExtRaw *ext;			HANDLE	hFile;			//	search the target file			ret = VDiskSearchFile(&hFile, current, m_pPath);			if (ret != VDK_OK) {				return ret;			}			//	create an extent object			ext = new VDiskExtRaw;			if (ext == NULL) {				VdkCloseFile(hFile);				return VdkLastError();			}			ret = AddExtent(ext);			if (ret != VDK_OK) {				VdkCloseFile(hFile);				delete ext;				return ret;			}			//	initialize the extent object			ret = ext->SetPath(current);			if (ret != VDK_OK) {				VdkCloseFile(hFile);				return ret;			}			ret = ext->Load(hFile);			VdkCloseFile(hFile);			if (ret != VDK_OK) {				return ret;			}		}	}	file.Close();	if (ret == VDK_EOF) {		ret = Check();	}	return ret;}////	Initialize as a child disk//VDKSTAT VDiskRaw::InitChild(	ULONG		flags,	PCHAR		pPath,	ULONG		version,	VDisk		*parent){	UNREFERENCED_PARAMETER(flags);	UNREFERENCED_PARAMETER(pPath);	UNREFERENCED_PARAMETER(version);	UNREFERENCED_PARAMETER(parent);	//	//	Raw Disk cannot be a child	//	return VDK_FUNCTION;}////	Check paramters//VDKSTAT VDiskRaw::Check(){	ULONG idx;	VDKSTAT ret;	//	//	At least one extent must be present	//	if (!m_nExtents) {		CHAR path[MAX_PATH];		PVOID param = path;		FullPath(path);		VDiskCallBack(VDISK_CB_EMPTY_IMAGE, &param);		return VDK_DATA;	}	//	//	Check each extent file	//	m_nCapacity = 0;	for (idx = 0; idx < m_nExtents; idx++) {		ret = m_ppExtents[idx]->Check();		if (ret != VDK_OK) {			return ret;		}		if (m_ppExtents[idx]->IsModified()) {			SetFlag(VDISK_FLAG_DIRTY);		}		m_nCapacity += m_ppExtents[idx]->GetCapacity();	}	return VDK_OK;}////	Create a new image -- currently not supported//VDKSTAT VDiskRaw::Create(ULONG flags){	UNREFERENCED_PARAMETER(flags);	return VDK_FUNCTION;}////	Create a new extent object for this instance//VDiskExt *VDiskRaw::NewExtent(){	return new VDiskExtRaw;}////	Get path for each extent files//void VDiskRaw::GetExtentPath(	PCHAR pPath, ULONG nSeq){	sprintf(pPath, "%s" PATH_SEPARATOR_STR "%s%lu.%s",		m_pPath, m_pBody, nSeq + 1, m_pExtension);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -