dEntries = 0; pws->dBytes = 0; pws->dDisplay。4 《Undocumented Windows 2000 Secrets》翻譯 --- 第三章( 四 )。" />

日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

4 《Undocumented Windows 2000 Secrets》翻譯 --- 第三章( 四 )


{
SC_HANDLE hManager;
DWORD dType, dState, dBytes, dResume, dName, i;
PW2K_SERVICES pws = NULL;
if ((pws = w2kMemoryCreate (W2K_SERVICES_)) != NULL)
{
pws->dEntries = 0;
pws->dBytes = 0;
pws->dDisplayName = 0;
pws->dServiceName = 0;
if ((fDriver || fWin32) && (fActive || fInactive))
{
if ((hManager = w2kServiceConnect ()) != NULL)
{
dType = (fDriver ? SERVICE_DRIVER : 0) |
(fWin32 ? SERVICE_WIN32 : 0);
dState = (fActive && fInactive
? SERVICE_STATE_ALL
: (fActive
? SERVICE_ACTIVE
: SERVICE_INACTIVE));
dBytes = pws->dBytes;
while (pws != NULL)
{
pws->dEntries = 0;
pws->dBytes = dBytes;
pws->dDisplayName = 0;
pws->dServiceName = 0;
dResume = 0;
if (EnumServicesStatus (hManager, dType, dState,
pws->aess, pws->dBytes,
&dBytes, &pws->dEntries,
&dResume))
break;
dBytes= pws->dBytes;
pws = w2kMemoryDestroy (pws);
if (GetLastError () != ERROR_MORE_DATA) break;
pws = w2kMemoryCreate (W2K_SERVICES_dBytes);
}
w2kServiceDisconnect (hManager);
}
else
{
pws = w2kMemoryDestroy (pws);
}
}
if (pws != NULL)
{
for (i = 0; i < pws->dEntries; i)
{
dName = lstrlen (pws->aess [i].lpDisplayName);
pws->dDisplayName = max (pws->dDisplayName, dName);
dName = lstrlen (pws->aess [i].lpServiceName);
pws->dServiceName = max (pws->dServiceName, dName);
}
}
}
return pws;
}
列表 3-11. 枚舉服務(wù) / 驅(qū)動程序
w2kServiceList() 需要四個邏輯類型的參數(shù),以確定要返回的列表的內(nèi)容 。通過 fDriver 和 fWin32 參數(shù),你可以分別選擇是否包含驅(qū)動程序或服務(wù) 。如果這兩個參數(shù)都為 TRUE ,那么返回的列表將同時包含驅(qū)動和服務(wù) 。fActive 和 fInactive 標(biāo)志用于控制加于列表上的狀態(tài)過濾器 。。fInactive 參數(shù)選擇剩余的模塊,也就是說,這些模塊已經(jīng)加載但已經(jīng)停止運行 。如果所有的四個參數(shù)都為 FALSE ,函數(shù)返回的 W2K_SERVICES 結(jié)構(gòu)將包含一個空的狀態(tài)數(shù)組 。光盤中的示例代碼包含一個簡單的服務(wù) / 驅(qū)動瀏覽器,它被設(shè)計為 Win32 控制臺模式,并依賴于 w2k_lib.dll 中的 w2kServiceList()。它使用 W2K_SERVICES 結(jié)構(gòu)(參見 列表 3-11 )中的 dDisplayName 和 dServiceName 成員來為所有的名稱選擇合適的水平對齊方式 。你可以在光盤的 srcw2k_svc 目錄下找到此工具的源代碼 。其可執(zhí)行文件對應(yīng)光盤中的 binw2k_svc.exe。示列 3-4 列出了在我的機器上運行該工具,列出的所有活動的內(nèi)核驅(qū)動程序(使用命令選項 /drivers /active ) 。
【4 《Undocumented Windows 2000 Secrets》翻譯 --- 第三章】在下一章中,我們將開始開發(fā)一個可實際工作的內(nèi)核驅(qū)動程序,它會偵測內(nèi)核使用的內(nèi)存,并且會 Crack 基本的內(nèi)存管理數(shù)據(jù)結(jié)構(gòu) 。這個工程將伴隨你閱讀第 4 、 5 和 6 章,在每一章中,該驅(qū)動程序都會被加強 。最后將得到一個通用的 Windows 2000 Kernel Spy。

推薦閱讀