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

📄 memmap_driver.cpp

📁 CE device driver exam
💻 CPP
字号:
// Test_Driver.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include <windows.h>
#include <ceddk.h>

#define MAP_MEM_ADDRESS 1
#define MAP_MEM_MAPPING 2


#ifdef _MANAGED
#pragma managed(push, off)
#endif

HANDLE g_hInstance;
PVOID pCommitedMemory=NULL;

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
BOOL WINAPI  
DllEntry(HANDLE hinstDLL, 
              DWORD dwReason, 
              LPVOID /* lpvReserved */)
{
    switch(dwReason)
    {
    case DLL_PROCESS_ATTACH:
        g_hInstance = hinstDLL;
        RETAILMSG(1,(TEXT("Memory Mapping Driver : DLL_PROCESS_ATTACH\n")));
        return TRUE;
    case DLL_PROCESS_DETACH:
        RETAILMSG(1,(TEXT("Memory Mapping Driver : DLL_PROCESS_DETACH\n")));
        break;
    }

    return TRUE;
}


//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
BOOL MEM_Close(DWORD hOpenContext)
{
    RETAILMSG(1,(TEXT("Memory Mapping Driver : MEM_Close \r\n")));
   
	return TRUE;
} 

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
BOOL MEM_Deinit(DWORD hDeviceContext)
{

	RETAILMSG(1,(TEXT("Memory Mapping Driver : MEM_Deinit :: Deinitialize Memory for Application \r\n")));

    return TRUE;
} 

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
DWORD MEM_Init(DWORD dwContext)
{
   
	RETAILMSG(1,(TEXT("Memory Mapping Driver : MEM_Init :: Initialize Memory for Application \r\n")));

    return 1;
} 


//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
DWORD MEM_Open(DWORD hDeviceContext, DWORD AccessCode, DWORD ShareMode)
{
 	
	RETAILMSG(1,(TEXT("Memory Mapping Driver : MEM_Open :: Opened driver for Application \r\n")));

    return 1;
} 

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
BOOL MEM_IOControl(DWORD hOpenContext, 
                   DWORD dwCode, 
                   PBYTE pBufIn, 
                   DWORD dwLenIn, 
                   PBYTE pBufOut, 
                   DWORD dwLenOut, 
                   PDWORD pdwActualOut)
{
	
	switch(dwCode)
	{

	case MAP_MEM_ADDRESS :

		pCommitedMemory = pBufIn;

		break;


	case MAP_MEM_MAPPING : 

		if (pCommitedMemory == NULL)
		{
			RETAILMSG(1,(TEXT("Memory Mapping Driver : MEM_IOControl :: MAP_MEM_ADDRESS ::: Invailde Patameter \r\n")));
			
			return FALSE;
		}
		
        if (!VirtualCopyEx((HANDLE)GetDirectCallerProcessId(), //Handle to the destination Process. 
			               (PVOID)pBufIn,                      //Pointer to the destination memory,
			               (HANDLE)GetCurrentProcessId(),      //Handle to the source process.
						   pCommitedMemory,                    //Pointer to commited memory. 
						   dwLenIn,                            // size of region in byte
						   PAGE_PHYSICAL | PAGE_READWRITE | PAGE_NOCACHE))  //protect
        {
			RETAILMSG(1,(TEXT("Memory Mapping Driver : MEM_IOControl :: MAP_MEM_ADDRESS ::: VirtualCopyEx failed for Application !\r\n")));
        
			return FALSE;
        }   

		break;
	}
	
	return TRUE;
} 

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void MEM_PowerDown(DWORD hDeviceContext)
{
    RETAILMSG(1,(TEXT("Memory Mapping Driver : MEM_PowerDown \r\n")));
} 

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
void MEM_PowerUp(DWORD hDeviceContext)
{
    RETAILMSG(1,(TEXT("Memory Mapping Driver : MEM_PowerUp \r\n")));
} 

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
DWORD MEM_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count)
{

	RETAILMSG(1,(TEXT("Memory Mapping Driver : MEM_Read \r\n")));
  
	return 1;
} 

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
DWORD MEM_Seek(DWORD hOpenContext, long Amount, DWORD Type)
{
    RETAILMSG(1,(TEXT("Memory Mapping Driver : MEM_Seek \r\n")));
  
	return 1;
} 

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
DWORD MEM_Write(DWORD hOpenContext, LPCVOID pSourceBytes, DWORD NumberOfBytes)
{
 
	RETAILMSG(1,(TEXT("Memory Mapping Driver : MEM_Write \r\n")));
   
	return 1;
}


#ifdef _MANAGED
#pragma managed(pop)
#endif

⌨️ 快捷键说明

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