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

📄 imagefile.cpp

📁 Programming the Microsoft Windows driver model.2nd 随书光盘。内有很多作者送的实用工具和随书源码。WDM编程
💻 CPP
字号:
// ImageFile.cpp -- Implemention of CImageFile class

// Copyright (C) 2000 by Walter Oney

// All rights reserved



#include "stdafx.h"

#include "ImageFile.h"

													  

///////////////////////////////////////////////////////////////////////////////



CImageFile::CImageFile(LPCTSTR filename) : CMappedFile(filename)

	{							// CImageFile::CImageFile

	}							// CImageFile::CImageFile



CImageFile::~CImageFile()

	{							// CImageFile::~CImageFile

	}							// CImageFile::~CImageFile

													  

///////////////////////////////////////////////////////////////////////////////



PIMAGE_EXPORT_DIRECTORY CImageFile::GetExportDirectory()

	{							// CImageFile::GetExportDirectory

	PIMAGE_DATA_DIRECTORY dir = &m_hdr->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT];

	if (dir->VirtualAddress)

		return (PIMAGE_EXPORT_DIRECTORY) OffsetPointer(dir->VirtualAddress);

	else

		return NULL;

	}							// CImageFile::GetExportDirectory

													  

///////////////////////////////////////////////////////////////////////////////



PIMAGE_IMPORT_DESCRIPTOR CImageFile::GetImportDescriptor()

	{							// CImageFile::GetImportDescriptor

	PIMAGE_DATA_DIRECTORY dir = &m_hdr->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT];

	if (dir->VirtualAddress)

		return (PIMAGE_IMPORT_DESCRIPTOR) OffsetPointer(dir->VirtualAddress);

	else

		return NULL;

	}							// CImageFile::GetImportDescriptor

													  

///////////////////////////////////////////////////////////////////////////////



BOOL CImageFile::Open()

	{							// CImageFile::Open

	if (!CMappedFile::Open())

		return FALSE;

	

	// Locate the PE header



	PIMAGE_DOS_HEADER exehdr = (PIMAGE_DOS_HEADER) m_data;

	if (exehdr->e_magic != IMAGE_DOS_SIGNATURE || exehdr->e_lfarlc <= FIELD_OFFSET(IMAGE_DOS_HEADER, e_lfanew))

		{						// invalid EXE

		Close();

		return FALSE;

		}						// invalid EXE



	m_hdroff = exehdr->e_lfanew;

	m_hdr = (PIMAGE_NT_HEADERS) OffsetPointer(m_hdroff);

	if (m_hdr->Signature != IMAGE_NT_SIGNATURE)

		{						// not a PE module

		Close();

		return FALSE;

		}						// not a PE module



	return TRUE;

	}							// CImageFile::Open

⌨️ 快捷键说明

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