亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mergedll.cpp

?? 通過并口控制I2C總線的動態庫源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// MergeDll.cpp : Defines the entry point for the application.
//
#define WIN32_LEAN_AND_MEAN
#pragma comment ( linker,"/ALIGN:4096" )
//#include <windows.h>
#include "stdafx.h"
#include "resource.h"
#include <lmerr.h>
#include <stdio.h>
#include "io.h"
#include <iostream>
#include <fstream>
using namespace std;

///////////////////////////////////////////////////////////////////////////
HMODULE hio;

PORTOUT PortOut;
PORTWORDOUT PortWordOut;
PORTDWORDOUT PortDWordOut;
PORTIN PortIn;
PORTWORDIN PortWordIn;
PORTDWORDIN PortDWordIn;
SETPORTBIT SetPortBit;
CLRPORTBIT ClrPortBit;
NOTPORTBIT NotPortBit;
GETPORTBIT GetPortBit;
RIGHTPORTSHIFT RightPortShift;
LEFTPORTSHIFT LeftPortShift;
ISDRIVERINSTALLED IsDriverInstalled;
///////////////////////////////////////////////////////////////////////////
BOOL IsNT();
LPVOID lpImageDll2;
DWORD LoadPbDllFromMemory(LPVOID lpRawDll, LPVOID lpImageDll);
DWORD GetProcAddressDirectly(PIMAGE_DOS_HEADER dosHeader, char * FuncName);
DWORD UnloadPbDllFromMemory(PIMAGE_DOS_HEADER dosHeader);
void SetupResource(PIMAGE_DOS_HEADER dosHeader);
void DumpResourceSection(PBYTE pImageBase, PIMAGE_NT_HEADERS pNTHeader);
void DisplayErrorText( DWORD dwLastError );

//////////////////////////////////////////////////////////////////////////
#define MakePtr( cast, ptr, addValue ) (cast)( (DWORD)(ptr)+(DWORD)(addValue))
#define GetImgDirEntryRVA( pNTHdr, IDE ) \
(pNTHdr->OptionalHeader.DataDirectory[IDE].VirtualAddress)

#define GetImgDirEntrySize( pNTHdr, IDE ) \
(pNTHdr->OptionalHeader.DataDirectory[IDE].Size)

PIMAGE_SECTION_HEADER GetEnclosingSectionHeader(DWORD rva, PIMAGE_NT_HEADERS pNTHeader);
LPVOID GetPtrFromRVA( DWORD rva, PIMAGE_NT_HEADERS pNTHeader, PBYTE imageBase );
PBYTE pImageBase;

//////////////////////////////////////////////////////////////////////////
//typedef char * (CALLBACK* LPFNDLLFUNC1)();
//LPFNDLLFUNC1 lpfnDllFunc1;

//int   remove(   char   *path   );   
//  int   rename(   char   *oldname,   char   *newname   ); 

typedef UINT (CALLBACK * LPENTRYPOINT) (HANDLE hInstance, DWORD Reason, LPVOID Reserved);
LPENTRYPOINT EntryPoint; // Function pointer

char * uReturnVal;

void UnloadIODLL() 
{
	//UnloadPbDllFromMemory((PIMAGE_DOS_HEADER)lpImageDll2);
	FreeLibrary(hio);
	remove(".\\IO.DLL");
}

int  LoadIODLL()//HINSTANCE hInstance)
{
	// TODO: Place code here.
	LPVOID sRawDll;
	HRSRC hRes;
	
	//HMODULE hLibrary;
	HGLOBAL hResourceLoaded;
	FILE *fok;
	HINSTANCE hInst = GetModuleHandle(".\\I2C.DLL");
	//char lib_name[MAX_PATH];
	//GetModuleFileName(hInstance, lib_name, MAX_PATH );
	//hLibrary = LoadLibrary(lib_name);
	//const char* pcDestPath="D:\IO.DLL";
		hRes = FindResource(hInst, MAKEINTRESOURCE(IDR_DATA1), RT_RCDATA);
		if (NULL != hRes)
		{
			hResourceLoaded = LoadResource(hInst, hRes);
			if (NULL != hResourceLoaded) 
			{	
				sRawDll = LockResource(hResourceLoaded);
				fok=fopen (".\\IO.DLL", "wb");
				fwrite ((const char*)sRawDll,sizeof(char),SizeofResource(hInst, hRes),fok);
				fclose(fok);
			}
		}
	

		hio = LoadLibrary("io");
		if (hio == NULL) return 1;
		// 取得要調用的函數的地址
		PortOut = (PORTOUT)GetProcAddress(hio, "PortOut");
		PortWordOut = (PORTWORDOUT)GetProcAddress(hio, "PortWordOut");
		PortDWordOut = (PORTDWORDOUT)GetProcAddress(hio, "PortDWordOut");
		PortIn = (PORTIN)GetProcAddress(hio, "PortIn");
		PortWordIn = (PORTWORDIN)GetProcAddress(hio, "PortWordIn");
		PortDWordIn = (PORTDWORDIN)GetProcAddress(hio, "PortDWordIn");
		SetPortBit = (SETPORTBIT)GetProcAddress(hio, "SetPortBit");
		ClrPortBit = (CLRPORTBIT)GetProcAddress(hio, "ClrPortBit");
		NotPortBit = (NOTPORTBIT)GetProcAddress(hio, "NotPortBit");
		GetPortBit = (GETPORTBIT)GetProcAddress(hio, "GetPortBit");
		RightPortShift = (RIGHTPORTSHIFT)GetProcAddress(hio, "RightPortShift");
		LeftPortShift = (LEFTPORTSHIFT)GetProcAddress(hio, "LeftPortShift");
		IsDriverInstalled = (ISDRIVERINSTALLED)GetProcAddress(hio, "IsDriverInstalled");
		
		//atexit(UnloadIODLL);
		if(PortOut==0)
		{
			MessageBox(NULL,"Could not get Function address!","",0);
			return 1;
		}
	return 0;
}

PIMAGE_SECTION_HEADER GetEnclosingSectionHeader(DWORD rva, PIMAGE_NT_HEADERS pNTHeader)
{
	PIMAGE_SECTION_HEADER section = IMAGE_FIRST_SECTION(pNTHeader);
	unsigned i;
	
	for ( i=0; i < pNTHeader->FileHeader.NumberOfSections; i++, section++ )
	{
		DWORD size = section->Misc.VirtualSize;
		if ( 0 == size ) size = section->SizeOfRawData;
		if ( (rva >= section->VirtualAddress) && (rva < (section->VirtualAddress + size))) return section;
	}
	return 0;
}

LPVOID GetPtrFromRVA( DWORD rva, PIMAGE_NT_HEADERS pNTHeader, PBYTE imageBase )
{
	PIMAGE_SECTION_HEADER pSectionHdr;
	INT delta;
	
	pSectionHdr = GetEnclosingSectionHeader( rva, pNTHeader );
	if ( !pSectionHdr ) return 0;
	
	delta = (INT)(pSectionHdr->VirtualAddress-pSectionHdr->PointerToRawData);
	return (PVOID) ( imageBase + rva - delta );
}

void DisplayErrorText( DWORD dwLastError ) // 標準的錯誤處理函數
{
	HMODULE hModule = NULL; // default to system source
	LPSTR MessageBuffer;
	DWORD dwBufferLength;
	
	DWORD dwFormatFlags = FORMAT_MESSAGE_ALLOCATE_BUFFER |
		FORMAT_MESSAGE_IGNORE_INSERTS |
		FORMAT_MESSAGE_FROM_SYSTEM ;
	
	if(dwLastError >= NERR_BASE && dwLastError <= MAX_NERR) 
	{
		hModule = LoadLibraryEx(
			TEXT("netmsg.dll"),
			NULL,
			LOAD_LIBRARY_AS_DATAFILE
			);
		
		if(hModule != NULL)
			dwFormatFlags |= FORMAT_MESSAGE_FROM_HMODULE;
	}
	
	if(dwBufferLength = FormatMessageA(
		dwFormatFlags,
		hModule, // module to get message from (NULL == system)
		dwLastError,
		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // default language
		(LPSTR) &MessageBuffer,
		0,
		NULL
		))
	{
		MessageBox(NULL,MessageBuffer,0,0);
		LocalFree(MessageBuffer);
	}
	if(hModule != NULL) FreeLibrary(hModule);
}

DWORD GetProcAddressDirectly(PIMAGE_DOS_HEADER dosHeader, char * FuncName)
{
	PIMAGE_NT_HEADERS pNTHeader;
	PIMAGE_EXPORT_DIRECTORY pExportDir;
	PWORD lpNameOrdinals;
	LPDWORD lpFunctions;
	DWORD * lpName;
	char * lpExpFuncName;
	DWORD i;
	DWORD j;
	char * lpFuncName;
	
	if(dosHeader->e_magic != IMAGE_DOS_SIGNATURE) return 0;
	
	pNTHeader = (PIMAGE_NT_HEADERS)((DWORD)dosHeader + dosHeader->e_lfanew);
	
	if (pNTHeader->Signature != IMAGE_NT_SIGNATURE) return 0;
	
	if ((pNTHeader->FileHeader.SizeOfOptionalHeader != sizeof(pNTHeader->OptionalHeader)) ||
		(pNTHeader->OptionalHeader.Magic != IMAGE_NT_OPTIONAL_HDR32_MAGIC))
		return 0;
	
	DWORD exportsStartRVA, exportsEndRVA;
	pImageBase = (PBYTE)dosHeader;
	
	// Make pointers to 32 and 64 bit versions of the header.
	pNTHeader = MakePtr( PIMAGE_NT_HEADERS, dosHeader,dosHeader->e_lfanew );
	
	exportsStartRVA = GetImgDirEntryRVA(pNTHeader,IMAGE_DIRECTORY_ENTRY_EXPORT);
	exportsEndRVA = exportsStartRVA +
		GetImgDirEntrySize(pNTHeader, IMAGE_DIRECTORY_ENTRY_EXPORT);
	
	// Get the IMAGE_SECTION_HEADER that contains the exports. This is
	// usually the .edata section, but doesn't have to be.
	PIMAGE_SECTION_HEADER header;
	header = GetEnclosingSectionHeader( exportsStartRVA, pNTHeader );
	if ( !header ) return 0;
	
	INT delta;
	delta = (INT)(header->VirtualAddress - header->PointerToRawData);
	pExportDir = (PIMAGE_EXPORT_DIRECTORY)GetPtrFromRVA(exportsStartRVA, pNTHeader, pImageBase);
	
	
	pExportDir =(PIMAGE_EXPORT_DIRECTORY) (pNTHeader->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress);
	
	if (pExportDir == 0)
	{
		MessageBox(NULL,"Error in GetProcAddressDirectly()",0,0);
		return 0;
	}
	
	pExportDir =(PIMAGE_EXPORT_DIRECTORY) ((DWORD)pExportDir + (DWORD)dosHeader);
	lpNameOrdinals =(PWORD)((DWORD)pExportDir->AddressOfNameOrdinals + (DWORD)dosHeader);
	lpName =(LPDWORD) (pExportDir->AddressOfNames + (DWORD)dosHeader);
	lpFunctions =(LPDWORD) (pExportDir->AddressOfFunctions + (DWORD)dosHeader);
	lpFuncName = FuncName;
	
	if(HIWORD(lpFuncName)!=0 )
	{
		for( i = 0;i<=pExportDir->NumberOfFunctions - 1;i++)
		{
			DWORD entryPointRVA = *lpFunctions;
			
			if ( entryPointRVA == 0 ) continue; // Skip over gaps in exported function
			
			for( j = 0;j<=pExportDir->NumberOfNames-1;j++)
			{
				if( lpNameOrdinals[j] == i)
				{
					lpExpFuncName = (char *) (lpName[j] + (DWORD)dosHeader);
					if(strcmp((char *)lpExpFuncName,(char *)FuncName)==0)
						return (DWORD) (lpFunctions[i] + (DWORD)dosHeader);
				}
			}
		}
	}
	else
	{
		for (i = 0 ;i<=pExportDir->NumberOfFunctions - 1;i++)
		{
			if (lpFuncName == (char *)(pExportDir->Base + i))
			{
				if (lpFunctions[i]) return (unsigned long) (lpFunctions[i] + dosHeader);
			}
		}
	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久伊人蜜桃av一区二区| 日本中文字幕一区二区视频| 一二三区精品福利视频| 男人的天堂久久精品| 成人av资源网站| 91精品国产乱码久久蜜臀| 国产精品久久久久一区二区三区| 午夜a成v人精品| 91在线丨porny丨国产| 精品国产乱码久久久久久免费 | 亚洲男人的天堂一区二区| 麻豆精品国产91久久久久久| 一本色道久久综合亚洲精品按摩| 久久综合国产精品| 日韩成人一区二区| 色欧美片视频在线观看在线视频| 久久精品欧美一区二区三区不卡| 麻豆91精品91久久久的内涵| 欧美日韩综合色| 综合色天天鬼久久鬼色| 国产精品一区二区在线看| 在线成人高清不卡| 亚洲一区二区三区在线播放| 99久久婷婷国产| 国产精品久久久一本精品| 国产成人精品免费| 中文字幕不卡三区| 成人污视频在线观看| 国产亚洲综合av| 国产精品18久久久久久久网站| 日韩午夜精品视频| 日韩电影在线免费看| 91精品国产综合久久久蜜臀粉嫩| 亚洲午夜精品久久久久久久久| 91麻豆精品在线观看| 日韩一区日韩二区| 99久久伊人精品| 亚洲色欲色欲www在线观看| 成人av电影观看| 亚洲人成网站色在线观看| jiyouzz国产精品久久| 国产精品久久久久影视| 91在线一区二区| 亚洲综合在线电影| 欧美性色欧美a在线播放| 亚洲国产成人精品视频| 在线成人高清不卡| 国产综合色视频| 国产欧美日韩在线视频| 99re8在线精品视频免费播放| 亚洲欧洲日韩av| 欧美日韩一区二区不卡| 伦理电影国产精品| 欧美激情资源网| 色欧美乱欧美15图片| 婷婷开心激情综合| 欧美精品一区二区三区在线| 国产999精品久久| 自拍偷拍亚洲综合| 欧美色综合久久| 久久精品二区亚洲w码| 久久久国际精品| 在线观看91视频| 日韩av中文在线观看| 国产色产综合色产在线视频| 色综合激情五月| 久久国产精品色| 国产精品久久久久久久久久免费看| 色哟哟国产精品| 免费在线观看一区二区三区| 国产精品嫩草久久久久| 欧美性猛交一区二区三区精品| 久热成人在线视频| 亚洲男人电影天堂| 久久蜜臀中文字幕| 欧美色精品在线视频| 国产一区二区三区国产| 亚洲精品国产精品乱码不99| 精品久久久久久最新网址| 91视频在线看| 狠狠色狠狠色综合| 亚洲综合一区二区三区| 欧美激情一区二区三区不卡| 欧美精三区欧美精三区| 成人黄色a**站在线观看| 久久精品国产999大香线蕉| 亚洲免费资源在线播放| 久久综合色鬼综合色| 欧美色图免费看| 91最新地址在线播放| 国产自产高清不卡| 亚洲国产成人av| 成人免费在线视频| 国产目拍亚洲精品99久久精品| 91精品久久久久久久久99蜜臂| 99精品视频在线免费观看| 精品一区二区久久久| 日韩精品欧美精品| 亚洲自拍偷拍欧美| 1000精品久久久久久久久| 久久噜噜亚洲综合| 欧美mv日韩mv亚洲| 51午夜精品国产| 欧美日韩精品一区二区天天拍小说 | 日韩1区2区日韩1区2区| 亚洲日本va午夜在线影院| 久久精品综合网| 2017欧美狠狠色| 欧美va天堂va视频va在线| 在线成人午夜影院| 欧美日韩在线三级| 欧美色网站导航| 在线观看精品一区| 91国产精品成人| 色屁屁一区二区| 在线免费观看日韩欧美| 色婷婷av一区二区三区软件 | 久久精品国产秦先生| 亚洲综合免费观看高清完整版在线 | 一区av在线播放| 1000精品久久久久久久久| 亚洲品质自拍视频| 亚洲国产日日夜夜| 午夜精品福利一区二区三区av| 亚洲一区av在线| 日韩电影在线免费看| 久久成人免费网站| 国内精品在线播放| 国产传媒欧美日韩成人| 成人的网站免费观看| 岛国av在线一区| 97精品电影院| 欧美日韩另类一区| 日韩一区二区不卡| 久久久久久久av麻豆果冻| 国产精品嫩草影院av蜜臀| 亚洲精品视频在线观看网站| 视频一区在线视频| 精品一区二区三区的国产在线播放 | 亚洲综合免费观看高清完整版在线| 亚洲一线二线三线视频| 日本vs亚洲vs韩国一区三区| 国产精品一区三区| 一本大道久久精品懂色aⅴ| 欧美精品xxxxbbbb| 2020国产精品久久精品美国| 国产精品久久久一区麻豆最新章节| 亚洲最大色网站| 国内精品嫩模私拍在线| 99国产精品久久久久| 欧美日韩国产另类一区| 久久青草欧美一区二区三区| 亚洲免费资源在线播放| 久久精品国产亚洲aⅴ| 97国产精品videossex| 91精品国产免费| 国产精品国产三级国产普通话99| 亚洲国产欧美日韩另类综合| 国产精品1024| 欧美三级视频在线观看| 久久久国产综合精品女国产盗摄| 亚洲综合区在线| 国产99久久久久| 欧美一区二区人人喊爽| 国产精品初高中害羞小美女文| 天天色综合成人网| 成人高清免费在线播放| 日韩精品在线一区二区| 亚洲精品你懂的| 久久99精品久久只有精品| 欧美丝袜第三区| 久久免费精品国产久精品久久久久| 亚洲一区二区三区视频在线| 大陆成人av片| 久久天天做天天爱综合色| 午夜伦欧美伦电影理论片| 99久久婷婷国产精品综合| 久久女同互慰一区二区三区| 日韩av电影天堂| 欧美性videosxxxxx| 国产精品激情偷乱一区二区∴| 精品一区二区精品| 日韩一区二区在线观看视频 | 免费在线一区观看| 欧美日韩激情一区二区| 国产精品久久久久aaaa| 国产精品一区二区你懂的| 日韩欧美一二区| 午夜精品一区二区三区电影天堂| 色综合久久综合网欧美综合网| 欧美激情一区二区三区不卡| 国产一区二区三区免费看| 日韩欧美一级特黄在线播放| 天天色 色综合| 在线日韩av片| 亚洲自拍偷拍麻豆| 91国偷自产一区二区开放时间| 亚洲免费在线视频一区 二区| 色综合视频在线观看| 日韩毛片高清在线播放|