第106章 Caché 函数大全 $ZF(-4),$ZF(-5),$ZF(-6) 函数
文章目錄
- 第106章 Caché 函數大全 $ ZF(-4),$ ZF(-5),$ ZF(-6) 函數
- `$ZF(-4)`
- 大綱
- 參數
- 描述
- 建立標識值
- 增加和減少動態鏈接庫加載
- 建立索引值
- `$ZF(-5)`
- 大綱
- 參數
- 描述
- `$ZF(-6)`
- 大綱
- 參數
- 描述
第106章 Caché 函數大全 $ ZF(-4),$ ZF(-5),$ ZF(-6) 函數
$ZF(-4)
提供與$ZF(-5)和$ZF(-6)一起使用的工具函數。
大綱
$ZF(-4,1,dll_name)$ZF(-4,n,dll_id,func_name)$ZF(-4,n,dll_id,decr_flag)$ZF(-4,n,dll_index,dll_name)$ZF(-4,n,dll_index,decr_flag)參數
- n 要執行的操作類型的代碼:1 =按名稱加載DLL。 2 =通過id卸載DLL。 3 =通過id在DLL中查找功能。 4 =按索引卸載DLL。 5 =在系統DLL索引表中創建一個條目。 6 =刪除系統DLL索引表中的條目。 7 =在進程DLL索引表中創建一個條目。 8 =刪除進程DLL索引表中的條目。
- dll_name 動態鏈接庫(DLL)的名稱。與n = 1、5或7一起使用。
- dll_id 已加載的動態鏈接庫(DLL)的ID值。與n = 2或3一起使用。
- dll_index DLL索引表中動態鏈接庫(DLL)的用戶定義索引。必須是唯一的,正的,非零的整數。 1024到2047之間的數字保留供系統使用。與n = 4、5、6、7或8一起使用。
- func_name 在DLL中查找的函數的名稱。僅在n = 3時使用。
- decr_flag 可選-用于減少DLL參考計數的標志。與n = 2或4一起使用。
描述
$ZF(-4)可用于為動態鏈接庫或動態鏈接庫中的函數建立標識值。$ZF(-5)使用這些標識值來執行一個函數。
$ZF(-4)可用于建立動態鏈接庫索引表的索引。$ZF(-6)使用這些索引值來執行一個函數。
-
可以使用$ZF(-4,1)顯式加載共享庫,這將加載一個庫并返回一個句柄,該句柄可用于使用$ZF(-5)訪問庫函數。
-
可以使用$ZF(-3)顯式加載單個共享庫,它加載單個活動庫并調用其方法。
-
在用$ZF(-4,5)或$ZF(-4,7)索引庫之后,可以使用$ZF(-6)隱式加載共享庫。
建立標識值
要加載動態鏈接庫并返回其標識,請使用以下語法:
dll_id=$ZF(-4,1,dll_name)要從由$ZF(-4,1)加載的動態鏈接庫中查找一個函數,并返回該函數的標識,請使用以下語法:
func_id=$ZF(-4,3,dll_id,func_name)要執行由$ZF(-4,3)定位的函數,請使用$ZF(-5)。
要卸載由$ZF(-4,1)加載的特定動態鏈接庫,請使用以下語法:
$ZF(-4,2,dll_id)要卸載由$ZF(-4,1)加載的所有dll,請使用以下語法:
$ZF(-4,2)增加和減少動態鏈接庫加載
當兩個類加載了同一個庫時,該庫將通過第一次調用$ZF(-4,2,dll_id)或$ZF(-4,4,dll_index)來卸載。這可能會使另一個類無法訪問庫。因此,Caché支持對每個DLL進行引用計數。Caché維護庫加載$ZF的次數的引用計數$ZF(-4,1,dll_name)。對$ZF(-4,1,dll_name)的每次調用都會增加引用計數。
$ZF(-4,2)提供了一個可選的減量標志參數decr_flag。對$ZF(-4,2,dll_id,1)的每次調用都會將引用計數減1。如果引用計數為零,對$ZF(-4,2,dll_id,1)的調用將卸載庫。對$ZF(-4,2,dll_id)(或$ZF(-4,2,dll_id,0))的調用會忽略引用計數并立即卸載庫。
對$ZF(-4,5)或$ZF(-4,7)的調用建立了一個庫索引。隨后調用$ZF(-6)來執行一個函數,隱式加載庫并增加引用計數。對$ZF(-4,4,dll_index,1)的每次調用都會將此引用計數減1。
由dll_name和dll_index建立的引用計數之間的引用計數交互如下:
- 除非引用計數為零,否則用$ZF(-4,1,dll_name)加載的庫不會通過調用$ZF(-4,4,dll_index,1)卸載。
- 加載了$ZF(-4,1,dll_name)的庫會立即由$ZF(-4,2,dll_id)或$ZF(-4,4,dll_index)(不帶減量標志參數)卸載,而不考慮引用計數。
- 用$ZF(-6)隱式加載的庫不會被$ZF(-4,2,dll_id,1)卸載,即使引用計數為零;它們只能由$ZF(-4,4,dll_index,1)卸載。
- 用$ZF(-6)隱式加載的庫立即由$ZF(-4,2,dll_id)或$ZF(-4,4,dll_index)(不帶減量標志參數)卸載,而不考慮引用計數。
不帶dll_id參數的$ZF(-4,2)會立即卸載所有庫,而不考慮引用計數,也不考慮它們是加載了$ZF(-4,1,dll_name)還是隱式加載了$ZF(-6)。
建立索引值
要在系統動態鏈接庫索引表中索引動態鏈接庫,請使用以下語法:
$ZF(-4,5,dll_index,dll_name)要在進程動態鏈接庫索引表中索引動態鏈接庫,請使用以下語法:
$ZF(-4,7,dll_index,dll_name)要查找并執行由$ZF(-4,5)或$ZF(-4,7)索引的函數,請使用$ZF(-6)。
要卸載索引動態鏈接庫,請使用以下語法:
$ZF(-4,4,dll_index)要刪除系統動態鏈接庫索引表中的索引條目,請使用以下語法:
$ZF(-4,6,dll_index)要刪除進程動態鏈接庫索引表中的索引條目,請使用以下語法:
$ZF(-4,8,dll_index)要刪除進程動態鏈接庫索引表中的所有索引條目,請使用以下語法:
$ZF(-4,8)$ZF(-5)
執行使用$ZF(-4)加載的動態鏈接庫函數。
大綱
$ZF(-5,dll_id,func_id,args)參數
- dll_id 由$ZF(-4)提供的動態鏈接庫的標識值。
- func_id 由$ZF(-4)提供的動態鏈接庫中函數的標識值。
- args 可選—傳遞給被調用函數的一個或多個參數。
描述
要執行使用$ZF(-4)加載的動態鏈接庫中的函數,請使用以下語法:
return=$ZF(-5,dll_id,func_id,args)$ZF(-6)
執行用$ZF(-4)索引的動態鏈接庫函數。
大綱
$ZF(-6,dll_index,func_ID,args)參數
- dll_index 在動態鏈接庫索引表中用戶指定的動態鏈接庫文件名的索引,從$ZF(-4)。
- func_ID 可選 - 由$ZF(-4)提供的動態鏈接庫中函數的標識值。如果省略,調用驗證DLL_index的有效性,加載圖像,并返回圖像位置。
- args 可選—要傳遞給函數的參數(如果有),指定為逗號分隔列表。圖像,并返回圖像位置。
描述
$ZF(-6)提供了一個快速動態鏈接庫(DLL)函數接口,使用用戶定義的索引作為DLL文件名。通過分配一個整數(dll_index)來唯一地與一個dll_name相關聯,可以在$ZF(-4)中建立這個用戶定義的索引??梢詫⒋藯l目放在進程動態鏈接庫索引表或系統動態鏈接庫索引表中。
$ZF(-5)和$ZF(-6)都可以用來執行動態鏈接庫中的函數。它由$ZF(-4)定位。
總結
以上是生活随笔為你收集整理的第106章 Caché 函数大全 $ZF(-4),$ZF(-5),$ZF(-6) 函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这是销售人员最必不可少的Python脚本
- 下一篇: PMS系列1⃣️——PMS的创建