mmfile.cpp

来自「Windows 图形编程 书籍」· C++ 代码 · 共 61 行

CPP
61
字号
//-----------------------------------------------------------------------------------//
//              Windows Graphics Programming: Win32 GDI and DirectDraw               //
//                             ISBN  0-13-086985-6                                   //
//                                                                                   //
//  Written            by  Yuan, Feng                             www.fengyuan.com   //
//  Copyright (c) 2000 by  Hewlett-Packard Company                www.hp.com         //
//  Published          by  Prentice Hall PTR, Prentice-Hall, Inc. www.phptr.com      //
//                                                                                   //
//  FileName   : mmfile.cpp 					                                     //
//  Description: Memory-mapped file                                                  //
//  Version    : 1.00.000, May 31, 2000                                              //
//-----------------------------------------------------------------------------------//

#define STRICT
#define WIN32_LEAN_AND_MEAN

#include <windows.h>
#include "mmfile.h"

bool KMemoryMappedFile::Open(LPCTSTR szFileName)
{
	m_hFile = CreateFile(szFileName, GENERIC_READ, 
        FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

	if ( m_hFile == INVALID_HANDLE_VALUE )
		return false;

	m_hMapping = CreateFileMapping(m_hFile, NULL, PAGE_READONLY, 0, 0, NULL);

	if ( m_hMapping )
    {
		m_View = (const unsigned char *) MapViewOfFile(m_hMapping, FILE_MAP_READ, 0, 0, 0);

        return m_View != NULL;
    }
    else
        return false;
}


KMemoryMappedFile::~KMemoryMappedFile()
{
	if ( m_View )
	{
		UnmapViewOfFile(m_View);
		m_View = NULL;
	}

	if ( m_hMapping )
	{
		CloseHandle(m_hMapping);
		m_hMapping = NULL;
	}

	if ( m_hFile!=INVALID_HANDLE_VALUE )
	{
		CloseHandle(m_hFile);
		m_hFile = INVALID_HANDLE_VALUE;
	}
}

⌨️ 快捷键说明

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