plug過程1.init_plug
#define init_plug plug::initplug g_initplug(true);
//共享記憶體資料結構
struct
plugsharememory
;inline
void createsharememory(i_plugmodulemanage*pmm)
; getsharememoryname(id_name);
);
if (!memhand)
return
;
void* pbuf = plugmapviewoffile(memhand);//
對映檔案對映到程序空間中,pbuf就是對映之後的指標
//第一次開啟, 儲存資料
plugsharememory* psm = new
plugsharememory;
memcpy(pbuf, &psm, sizeof(psm));//
將psm的指標的值複製到對映位址中去,看出共享的就是psm的指標的值
plugunmapviewoffile(pbuf);
psm->pfirsthand = memhand;//
儲存對映檔案的控制代碼
psm->pbuffer = pmm;//
將pmm的值複製到共享記憶體中,由pmm就可以操作共享記憶體了,設計還是很巧妙的
}inline
bool __stdcall dllloadcontorl::loaddll(std::wstring filename)//
總共會載入三個目錄下的dll
//保持它在記憶體中,此類退出時自動釋放
m_ahdllhandle[m_dwdllcount] = hinst;//
將dll儲存在m_ahdllhandle中
++m_dwdllcount;
return
true;}
在呼叫return loadlibraryw(lplibfilename);會自動呼叫plug_component_auto_reg具體為什麼會自動呼叫我也不明白
plug_component_auto_reg(demo)
//do not edit this
#define plug_component_auto_reg(projectname) \i_##projectname*__stdcall new##projectname()\
\
void __stdcall delete##projectname(void*p)\
\plug::autoreg projectname##autoreg(#projectname, (
void*)new##projectname, (void*)delete##projectname);\
void
__stdcall reg##projectname()\
\看這個巨集定義了建立例項和刪除例項的函式指標,然後呼叫autoreg
inline
void __stdcall plugmodulemanage::push(const
char* id, void* pnewinstance, void*pdeleteinstance)}2
.new
#define new(projectname) (struct i_##projectname*)(plug::plugcreeateinstance(#projectname))根據projectname在儲存模組的容器中查詢
try3
.del
#define del(instance) plug::plugdeleteinstance(instance)同樣在m_instances中根據例項指標查詢,找到指標刪掉
fun(p);
//呼叫例項的刪除函式,即呼叫例項的析構函式所以在這個函式裡可能還會調釋放元件,這時一定把鎖放開???
上面乙個簡單的plug的工作流程
這個plug幾次嘗試去看,都看一半,現在終於完整的看了一下。
spring mvc 專案分析
分包 controller dao dao.impl service service.impl model util 資料校驗 資料轉換 資料計算等 在model包新建乙個page類以便分頁操作 建立乙個servicemanager來管理service 配置檔案 分三個 hibernate 資料來源...
DTMF VAD 專案分析
這一專案是準確的找出dtmf訊號的起點,當檢測到後,觸發dtmf decoder,對此後接收的資料進行解碼,等到相應的撥號鍵值。1.分析輸入訊號特徵 訊號是dtmf訊號加通道中的電路雜訊,現初步分析,這背景雜訊是高斯背景雜訊,這種雜訊好在對dtmf頻率特性損失不是很大,這樣問題會好解決一點。2.訊號...
小專案分析
偽 編寫 提示使用者 輸入乙個姓名search name input 根據這個姓名,依次到名片字典中進行比對 依次拿到每乙個字典 for 變數 in 資料容器 得到第乙個名片字典,就與search name比一下,看字典中的name鍵的值 與它是否一致 變數 name search name 得到第...