观看麻豆影视文化有限公司-国产 高清 在线-国产 日韩 欧美 亚洲-国产 日韩 欧美 综合-日日夜夜免费精品视频-日日夜夜噜

windows運(yùn)行庫(kù)合集(win10必備運(yùn)行庫(kù))

  • 生活
  • 2023-04-26 17:10
  • 64

多條告白如次劇本只需引入一次

Windows運(yùn)用步調(diào)進(jìn)口因變量

GUI(GraphicalUserInterface)運(yùn)用,鏈接器選項(xiàng):/SUBSYSTEM:WINDOWS

CUI(ConsoleUserInterface)運(yùn)用,鏈接器選項(xiàng):/SUBSYSTEM:CONSOLE

_tWinMain與_tmain因變量證明

IntWINAPI_tWinMain(HINSTANCEhInstanceExe,HINSTANCE,PTSTRpszCmdLine,intnCmdShow);int_tmain(intargc,TCHAR*argv[],TCHAR*envp[]);Windows的動(dòng)靜鏈接庫(kù)(Dynamic-LinkLibrary)

局部常識(shí)點(diǎn)來(lái)自《Windows中心編制程序(第六版)》

用途

(1)擴(kuò)充了運(yùn)用步調(diào)的個(gè)性

(2)簡(jiǎn)化了名目處置

(3)無(wú)助于于儉樸外存

(4)激動(dòng)了資源的共享

(5)激動(dòng)了當(dāng)?shù)鼗?/p>

(6)無(wú)助于于處置平臺(tái)間的分別

(7)不妨用來(lái)特出手段

提防

(1)創(chuàng)造DLL,究竟上是在創(chuàng)造可供一個(gè)可實(shí)行模塊挪用的因變量

(2)當(dāng)一個(gè)模塊供給一個(gè)外存調(diào)配因變量(malloc、new)的功夫,它必需同聲供給另一個(gè)外存開(kāi)釋因變量(free、delete)

(3)在運(yùn)用C和C++混編的功夫,要運(yùn)用extern“C”化裝符

(4)一個(gè)DLL不妨導(dǎo)出因變量、變量(制止導(dǎo)出)、C++類(導(dǎo)出導(dǎo)出須要同編寫(xiě)翻譯器,要不制止導(dǎo)出)

(5)DLL模塊:cpp文獻(xiàn)中的__declspec(dllexport)寫(xiě)在include頭文獻(xiàn)之前

(6)挪用DLL的可實(shí)行模塊:cpp文獻(xiàn)的__declspec(dllimport)之前不該當(dāng)設(shè)置MYLIBAPI

加載Windows步調(diào)的探求程序

1、包括可實(shí)行文獻(xiàn)的目次

2、Windows的體例目次,不妨經(jīng)過(guò)GetSystemDirectory獲得

3、16位的體例目次,即Windows目次中的System子目次

4、Windows目次,不妨經(jīng)過(guò)GetWindowsDirectory獲得

5、過(guò)程的暫時(shí)目次

6、PATH情況變量中所列出的目次

DLL進(jìn)口因變量

DllMain因變量

BOOLWINAPIDllMain(HINSTANCEhinstDLL,DWORDfdwReason,LPVOIDlpvReserved){switch(fdwReason){caseDLL_PROCESS_ATTACH://第一次將一個(gè)DLL映照到過(guò)程地方空間時(shí)挪用//TheDLLisbeingmappedintotheprocess'addressspace.break;caseDLL_THREAD_ATTACH://當(dāng)過(guò)程創(chuàng)造一個(gè)線程的功夫,用來(lái)報(bào)告DLL實(shí)行與線程關(guān)系的初始化(非干線程實(shí)行)//Athreadisbingcreated.break;caseDLL_THREAD_DETACH://體例挪用ExitThread線程退出前,行將中斷的線程經(jīng)過(guò)報(bào)告DLL實(shí)行與線程關(guān)系的整理//Athreadisexitingcleanly.break;caseDLL_PROCESS_DETACH://將一個(gè)DLL從過(guò)程的地方空間時(shí)挪用//TheDLLisbeingunmappedfromtheprocess'addressspace.break;}return(TRUE);//UsedonlyforDLL_PROCESS_ATTACH}載入卸載庫(kù)

LoadLibrary、LoadLibraryExA、LoadPackagedLibrary、FreeLibrary、FreeLibraryAndExitThread因變量證明

//載入庫(kù)HMODULEWINAPILoadLibrary(_In_LPCTSTRlpFileName);HMODULELoadLibraryExA(LPCSTRlpLibFileName,HANDLEhFile,DWORDdwFlags);//若要在通用Windows平臺(tái)(UWP)運(yùn)用中加載Win32DLL,須要挪用LoadPackagedLibrary,而不是LoadLibrary或LoadLibraryExHMODULELoadPackagedLibrary(LPCWSTRlpwLibFileName,DWORDReserved);//卸載庫(kù)BOOLWINAPIFreeLibrary(_In_HMODULEhModule);//卸載庫(kù)和退出線程VOIDWINAPIFreeLibraryAndExitThread(_In_HMODULEhModule,_In_DWORDdwExitCode);表露地鏈接到導(dǎo)出標(biāo)記

GetProcAddress因變量證明

FARPROCGetProcAddress(HMODULEhInstDll,PCSTRpszSymbolName//只能接收ANSI字符串,不許是Unicode);DumpBin.exe察看DLL消息

在VS的開(kāi)拓職員吩咐提醒符運(yùn)用DumpBin.exe可察看DLL庫(kù)的導(dǎo)出段(導(dǎo)出的變量、因變量、類名的標(biāo)記)、對(duì)立假造地方(RVA,relativevirtualaddress)。如:

LoadLibrary與FreeLibrary過(guò)程圖

LoadLibrary與FreeLibrary過(guò)程圖

LoadLibrary

FreeLibrary

DLL庫(kù)的編寫(xiě)(導(dǎo)出一個(gè)DLL模塊)

DLL庫(kù)的編寫(xiě)(導(dǎo)出一個(gè)DLL模塊)DLL頭文獻(xiàn)

//MyLib.h#ifdefMYLIBAPI//MYLIBAPI該當(dāng)在十足DLL源文獻(xiàn)的include"Mylib.h"之前被設(shè)置//十足因變量/變量正在被導(dǎo)出#else//這個(gè)兒文獻(xiàn)被一個(gè)exe源代碼模塊包括,表示著十足因變量/變量被導(dǎo)出#defineMYLIBAPIextern"C"__declspec(dllimport)#endif//這邊設(shè)置任何的數(shù)據(jù)構(gòu)造和標(biāo)記//設(shè)置導(dǎo)出的變量(制止導(dǎo)出變量)MYLIBAPIintg_nResult;//設(shè)置導(dǎo)出因變量原形MYLIBAPIintAdd(intnLeft,intnRight);DLL源文獻(xiàn)

//MyLibFile1.cpp//包括規(guī)范Windows和C運(yùn)轉(zhuǎn)時(shí)頭文獻(xiàn)#include<windows.h>//DLL源碼文獻(xiàn)導(dǎo)出的因變量和變量#defineMYLIBAPIextern"C"__declspec(dllexport)//包括導(dǎo)出的數(shù)據(jù)構(gòu)造、標(biāo)記、因變量、變量#include"MyLib.h"http://將此DLL源代碼文獻(xiàn)的代碼放在此處intg_nResult;intAdd(intnLeft,intnRight){g_nResult=nLeft+nRight;returng_nResult;}DLL庫(kù)的運(yùn)用(運(yùn)轉(zhuǎn)時(shí)動(dòng)靜鏈接DLL)

DLL庫(kù)的運(yùn)用(運(yùn)轉(zhuǎn)時(shí)動(dòng)靜鏈接DLL)

//AsimpleprogramthatusesLoadLibraryand//GetProcAddresstoaccessmyPutsfromMyputs.dll.#include<windows.h>#include<stdio.h>typedefint(__cdecl*MYPROC)(LPWSTR);intmain(void){HINSTANCEhinstLib;MYPROCProcAdd;BOOLfFreeResult,fRunTimeLinkSuccess=FALSE;//GetahandletotheDLLmodule.hinstLib=LoadLibrary(TEXT("MyPuts.dll"));//Ifthehandleisvalid,trytogetthefunctionaddress.if(hinstLib!=NULL){ProcAdd=(MYPROC)GetProcAddress(hinstLib,"myPuts");//Ifthefunctionaddressisvalid,callthefunction.if(NULL!=ProcAdd){fRunTimeLinkSuccess=TRUE;(ProcAdd)(L"MessagesenttotheDLLfunctionn");}//FreetheDLLmodule.fFreeResult=FreeLibrary(hinstLib);}//IfunabletocalltheDLLfunction,useanalternative.if(!fRunTimeLinkSuccess)printf("Messageprintedfromexecutablen");return0;}運(yùn)轉(zhuǎn)庫(kù)(RuntimeLibrary)

典范步調(diào)運(yùn)轉(zhuǎn)辦法

(1)操縱體例創(chuàng)造過(guò)程,把遏制權(quán)交給步調(diào)的進(jìn)口(常常是運(yùn)轉(zhuǎn)庫(kù)中的某個(gè)進(jìn)口因變量)

(2)進(jìn)口因變量對(duì)運(yùn)轉(zhuǎn)庫(kù)和步調(diào)運(yùn)轉(zhuǎn)情況舉行初始化(囊括堆、I/O、線程、全部變量結(jié)構(gòu)之類)。

(3)進(jìn)口因變量初始化后,挪用main因變量,正式發(fā)端執(zhí)路途序主體局部。

(4)main因變量實(shí)行結(jié)束后,歸來(lái)到進(jìn)口因變量舉行整理處事(囊括全部變量析構(gòu)、堆廢棄、封閉I/O等),而后舉行體例挪用中斷過(guò)程。

一個(gè)步調(diào)的I/O指代步調(diào)與外界的交互,囊括文獻(xiàn)、管程、搜集、吩咐行、旗號(hào)等。更廣義地講,I/O指代操縱體例領(lǐng)會(huì)為“文獻(xiàn)”的實(shí)物。

glibc進(jìn)口

_start->__libc_start_main->exit->_exit

個(gè)中main(argc,argv,__environ)因變量在__libc_start_main里實(shí)行。

MSVCCRT進(jìn)口

intmainCRTStartup(void)

實(shí)行如次操縱:

(1)初始化和OS本子相關(guān)的全部變量。

(2)初始化堆。

(3)初始化I/O。

(4)獲得吩咐行參數(shù)和情況變量。

(5)初始化C庫(kù)的少許數(shù)據(jù)。

(6)挪用main并記載歸來(lái)值。

(7)查看缺點(diǎn)并將main的歸來(lái)值歸來(lái)。

C談話運(yùn)轉(zhuǎn)庫(kù)(CRT)

大概包括如次功效:

啟用與退出:囊括進(jìn)口因變量及進(jìn)口因變量所依附的其余因變量等。

規(guī)范因變量:有C談話規(guī)范規(guī)則的C談話規(guī)范庫(kù)所具有的因變量實(shí)行。

I/O:I/O功效的封裝和實(shí)行。

堆:堆的封裝和實(shí)行。

談話實(shí)行:談話中少許特出功效的實(shí)行。

調(diào)節(jié)和測(cè)試:實(shí)行調(diào)節(jié)和測(cè)試功效的代碼。

C談話規(guī)范庫(kù)(ANSIC)

包括:

規(guī)范輸出輸入(stdio.h)

文獻(xiàn)操縱(stdio.h)

字符操縱(ctype.h)

字符串操縱(string.h)

數(shù)學(xué)因變量(math.h)

資源處置(stdlib.h)

***變換(stdlib.h)

功夫/日子(time.h)

預(yù)言(assert.h)

百般典型上的常數(shù)(limits.h&float.h)

變長(zhǎng)參數(shù)(stdarg.h)

非限制跳轉(zhuǎn)(setjmp.h)

猜你喜歡

主站蜘蛛池模板: 日韩一级生活片 | 日本精品国产 | 天堂8在线天堂资源bt | 成人午夜两性视频免费看 | 国产成人经典三级在线观看 | 欧美成人爽毛片在线视频 | 91九色视频无限观看免费 | 国产www| 香港三级日本三级人妇三级四 | 欧美一a级做爰 | 亚洲成a人片在线观看中文 亚洲成a人片在线观看中文!!! | 日本亚洲欧美国产日韩ay高清 | 国产精品亚洲精品一区二区三区 | 国产成人啪一区二区 | 在线精品视频在线观看高清 | 国产一级二级三级毛片 | 久久香蕉国产视频 | 久久九九免费视频 | 国产成人亚洲精品一区二区在线看 | 久久riav.com| 一男一女的一级毛片 | 免费观看一级欧美大 | 中国国产成人精品久久 | 国产成人刺激视频在线观看 | 亚洲人成一区二区三区 | 国产1区2区三区不卡 | 久久免费精品一区二区 | 久久国产免费观看精品3 | 欧美人牲囗毛片 | 九九99| 亚洲一区二区三区不卡在线播放 | 亚洲七七久久精品中文国产 | 久久久久在线观看 | 国产精品国产亚洲精品不卡 | 日本不卡一二三区 | 色站综合 | 亚洲久久视频 | 亚洲一区二区三区在线视频 | 国产一久久香蕉国产线看观看 | 九九九九在线精品免费视频 | 国产精品v在线播放观看 |