溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

易語言枚舉電腦驅(qū)動(dòng)如何判斷是否存在指定驅(qū)動(dòng)

發(fā)布時(shí)間:2021-08-18 13:41:51 來源:億速云 閱讀:297 作者:小新 欄目:編程語言

這篇文章主要介紹易語言枚舉電腦驅(qū)動(dòng)如何判斷是否存在指定驅(qū)動(dòng),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

DLL命令代碼

.版本 2
.DLL命令 NtQuerySystemInformation, 整數(shù)型, "NTDLL.DLL", "NtQuerySystemInformation"
  .參數(shù) SystemInformationClass, 整數(shù)型
  .參數(shù) pSystemInformation, 整數(shù)型
  .參數(shù) SystemInformationLength, 整數(shù)型
  .參數(shù) ReturnLength, 整數(shù)型, 傳址
.DLL命令 CopyMemory, , "kernel32", "RtlMoveMemory"
  .參數(shù) pDst, MODULES, 傳址
  .參數(shù) pSrc, 整數(shù)型
  .參數(shù) ByteLen, 整數(shù)型
.DLL命令 GlobalSize, 整數(shù)型, "kernel32", "GlobalSize", , 返回全局內(nèi)存塊大小
  .參數(shù) hMem, MODULES

自定義數(shù)據(jù)類型表

.版本 2
.數(shù)據(jù)類型 內(nèi)核驅(qū)動(dòng)成員
  .成員 驅(qū)動(dòng)文件名, 文本型
.數(shù)據(jù)類型 MODULES
  .成員 dwNumberOfModules, 整數(shù)型
  .成員 ModuleInformation, INFORMATION
.數(shù)據(jù)類型 INFORMATION
  .成員 dwReserved, 整數(shù)型, , "2"
  .成員 dwBase, 整數(shù)型
  .成員 dwSize, 整數(shù)型
  .成員 dwFlags, 整數(shù)型
  .成員 Index, 短整數(shù)型
  .成員 Unknown, 短整數(shù)型
  .成員 LoadCount, 短整數(shù)型
  .成員 ModuleNameOffset, 短整數(shù)型
  .成員 ImageName, 字節(jié)型, , "256"

判斷驅(qū)動(dòng)是否存在的代碼

.版本 2
.支持庫 spec
.程序集 窗口程序集1
.子程序 _判斷按鈕_被單擊
.判斷開始 (驅(qū)動(dòng)是否存在 (“PCHunter64ao.sys”) = 真 或 驅(qū)動(dòng)是否存在 (“PCHunter32ao.sys”) = 真)
  信息框 (“存在”, 64, , )
.默認(rèn)
  信息框 (“不存在”, 16, , )
.判斷結(jié)束
.子程序 驅(qū)動(dòng)是否存在, 邏輯型, 公開, 取系統(tǒng)已加載的驅(qū)動(dòng),成功取到返回真,失敗返回假
.參數(shù) 驅(qū)動(dòng)名, 文本型
.局部變量 驅(qū)動(dòng)成員, 內(nèi)核驅(qū)動(dòng)成員, , "0"
.局部變量 循環(huán)計(jì)次, 整數(shù)型
枚舉系統(tǒng)驅(qū)動(dòng) (驅(qū)動(dòng)成員)
.計(jì)次循環(huán)首 (取數(shù)組成員數(shù) (驅(qū)動(dòng)成員), 循環(huán)計(jì)次)
  .如果真 (驅(qū)動(dòng)成員 [循環(huán)計(jì)次].驅(qū)動(dòng)文件名 = 驅(qū)動(dòng)名)
    返回 (真)
    跳出循環(huán) ()
  .如果真結(jié)束
.計(jì)次循環(huán)尾 ()
返回 (假)
.子程序 枚舉系統(tǒng)驅(qū)動(dòng), 整數(shù)型, , 枚舉驅(qū)動(dòng),成功返回驅(qū)動(dòng)數(shù)量,失敗返回0
.參數(shù) 驅(qū)動(dòng)文件名, 內(nèi)核驅(qū)動(dòng)成員, 數(shù)組
.局部變量 Ret, 整數(shù)型
.局部變量 ModulesInfo, MODULES
.局部變量 i, 整數(shù)型
.局部變量 x, 整數(shù)型
.局部變量 驅(qū)動(dòng)名稱, 文本型, , "0"
.局部變量 位置, 整數(shù)型
.局部變量 判斷函數(shù), 整數(shù)型
.局部變量 裝載類型, 內(nèi)核驅(qū)動(dòng)成員
.局部變量 內(nèi)存申請(qǐng), 整數(shù)型
清除數(shù)組 (驅(qū)動(dòng)名稱)
NtQuerySystemInformation (11, 0, 0, Ret)
內(nèi)存申請(qǐng) = 申請(qǐng)內(nèi)存 (Ret × 2, 真)
NtQuerySystemInformation (11, 內(nèi)存申請(qǐng), Ret × 2, Ret)
CopyMemory (ModulesInfo, 內(nèi)存申請(qǐng), GlobalSize (ModulesInfo))
加入成員 (驅(qū)動(dòng)名稱, 到文本 (ModulesInfo.ModuleInformation.ImageName))
i = ModulesInfo.dwNumberOfModules
判斷函數(shù) = i
.判斷循環(huán)首 (i > 1)
  i = i - 1
  內(nèi)存申請(qǐng) = 內(nèi)存申請(qǐng) + 71 × 4
  CopyMemory (ModulesInfo, 內(nèi)存申請(qǐng), GlobalSize (ModulesInfo))
  加入成員 (驅(qū)動(dòng)名稱, 到文本 (ModulesInfo.ModuleInformation.ImageName))
.判斷循環(huán)尾 ()
.計(jì)次循環(huán)首 (取數(shù)組成員數(shù) (驅(qū)動(dòng)名稱), x)
  位置 = 倒找文本 (驅(qū)動(dòng)名稱 [x], “\”, , 假)
  裝載類型.驅(qū)動(dòng)文件名 = 取文本右邊 (驅(qū)動(dòng)名稱 [x], 取文本長度 (驅(qū)動(dòng)名稱 [x]) - 位置)
  加入成員 (驅(qū)動(dòng)文件名, 裝載類型)
.計(jì)次循環(huán)尾 ()
.如果 (判斷函數(shù) > 1)
  返回 (取數(shù)組成員數(shù) (驅(qū)動(dòng)名稱))
.否則
  返回 (0)
.如果結(jié)束
釋放內(nèi)存 (內(nèi)存申請(qǐng))

運(yùn)行結(jié)果:

易語言枚舉電腦驅(qū)動(dòng)如何判斷是否存在指定驅(qū)動(dòng)

以上是“易語言枚舉電腦驅(qū)動(dòng)如何判斷是否存在指定驅(qū)動(dòng)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI