導航:首頁 > 程序命令 > ddk命令

ddk命令

發布時間:2022-07-22 06:35:01

A. 如何用vc + DDK 創建虛擬磁碟

你可以使用DOS命令subst將一個普通目錄設置為一個盤符

B. 如何根據程序崩潰時的DMP文件使用WinDbg查找調用堆棧

使用 Windbg.exe 打開轉儲文件
下載並安裝調試程序。 要下載調試程序,請訪問下面的 Microsoft 網站:
Microsoft 調試工具
http://www.microsoft.com/whdc/devtools/ddk/default.mspx(http://www.microsoft.com/whdc/devtools/ddk/default.mspx)
打開安裝調試程序,文件夾,然後雙擊 Windbg.exe 啟動調試器。
在 文件 菜單上單擊 打開的崩潰轉儲 (或按 Ctrl+D),然後選擇要查看該轉儲文件。
回到頂端
使用 Windbg.exe 確定異常堆棧
在 Windbg.exe,打開進程的.dmp 文件。
請確保您符號路徑指向正確的位置。 有關如何執行此操作,請訪問下面的 Microsoft Web 站點:
如何獲得符號
http://www.microsoft.com/whdc/devtools/ddk/default.mspx(http://www.microsoft.com/whdc/devtools/ddk/default.mspx)
在命令提示符下鍵入 ~ * kb 以列出所有進程中的線程。
標識對函數調用的線程 Kernel32! UnhandledExceptionFilter 。 它類似於以下:

120 id: f0f0f0f0.a1c Suspend: 1 Teb 7ff72000 Unfrozen
ChildEBP RetAddr Args to Child
09a8f334 77eb9b46 0000244c 00000001 00000000 ntdll!ZwWaitForSingleObject+0xb [i386/usrstubs.asm @ 2004]
09a8f644 77ea7e7a 09a8f66c 77e861ae 09a8f674 KERNEL32!UnhandledExceptionFilter+0x2b5
[D:/nt/private/windows/base/client/thread.c @ 1753]
09a8ffec 00000000 787bf0b8 0216fe94 00000000 KERNEL32!BaseThreadStart+0x65 [D:/nt/private/windows/base/client/support.c @ 453]

切換到該線程 (在本例中,該線程是"~120s")。
在第一個參數的指定位置顯示內存內容 Kernel32! UnhandledExceptionFilter 通過 添加 第一個參數 。 此指向 EXCEPTION_POINTERS 結構

0:120> dd 09a8f66c
09a8f66c 09a8f738 09a8f754 09a8f698 77f8f45c
09a8f67c 09a8f738 09a8ffdc 09a8f754 09a8f710
09a8f68c 09a8ffdc 77f8f5b5 09a8ffdc 09a8f720
09a8f69c 77f8f3fa 09a8f738 09a8ffdc 09a8f754
09a8f6ac 09a8f710 77e8615b 09a8fad4 00000000
09a8f6bc 09a8f738 74a25336 09a8f6e0 09a8f910
09a8f6cc 01dc8ad8 0d788918 00000001 018d1f28
09a8f6dc 00000001 61746164 7073612e 09a8f71c

第一個 DWORD 代表異常記錄。 若要獲取有關異常的類型信息,請請在命令提示符處運行以下:
.exr first DWORD from step 6

0:120> .exr 09a8f738
ExceptionAddress: 78011f32 (MSVCRT!strnicmp+0x00000092)
ExceptionCode: c0000005
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000000
Parameter[1]: 00000000
Attempt to read from address 00000000

第二個 DWORD 是上下文記錄。 若要獲取上下文的信息,請在命令提示符處運行以下:
.cxr second DWORD from step 6

0:120> .cxr 09a8f754
eax=027470ff ebx=7803cb28 ecx=00000000 edx=00000000 esi=00000000 edi=09a8fad4
eip=78011f32 esp=09a8fa20 ebp=09a8fa2c iopl=0 nv up ei ng nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010286
MSVCRT!strnicmp+92:
78011f32 8a06 mov al,[esi]

運行 kv 命令獲得實際的異常的調用堆棧。 這有助於您識別可能未被處理正確的過程中實際問題

0:120> kv
ChildEBP RetAddr Args to Child
WARNING: Stack unwind information not available. Following frames may be wrong.
09a8fa2c 780119ab 09a8fad4 00000000 09a8faa8 MSVCRT!strnicmp+0x92
09a8fa40 7801197c 09a8fad4 00000000 6d7044fd MSVCRT!stricmp+0x3c
09a8fa80 6e5a6ef6 09a8fad4 2193d68d 00e5e298 MSVCRT!stricmp+0xd
09a8fa94 6d7043bf 09a8fad4 09a8faa8 0000001c IisRTL!CLKRHashTable::FindKey+0x59 (FPO: [2,0,1])
09a8faac 749fc22d 09a8fad4 01d553b0 0000001c ISATQ!CDirMonitor::FindEntry+0x1e
(FPO: [Non-Fpo]) [D:/nt/private/inet/iis/svcs/infocomm/atq/dirmon.cpp @ 884]
09a8fac4 749fd1cb 09a8fad4 09a8fb10 525c3a46 asp!RegisterASPDirMonitorEntry+0x6e
(FPO: [EBP 0x09a8fb08] [2,0,4]) [D:/nt/private/inet/iis/svcs/cmp/asp/aspdmon.cpp @ 534]
09a8fb08 749fcdd6 00000000 09a8fcbc 018d1f28 asp!CTemplateCacheManager::+0x8a
(FPO: [Non-Fpo]) [D:/nt/private/inet/iis/svcs/cmp/asp/cachemgr.cpp @ 621]
09a8fb3c 74a08bfe 00000000 000000fa 74a30958 asp!CTemplateCacheManager::Load+0x382
(FPO: [Non-Fpo]) [D:/nt/private/inet/iis/svcs/cmp/asp/cachemgr.cpp @ 364]
09a8fc68 74a0d4c9 04c12518 018d1f28 09a8fcbc asp!LoadTemplate+0x42
(FPO: [Non-Fpo]) [D:/nt/private/inet/iis/svcs/cmp/asp/exec.cpp @ 1037]
09a8fcc0 74a2c3e5 00000000 0637ee38 09a8fd58 asp!CHitObj::ViperAsyncCallback+0x3e8
(FPO: [Non-Fpo]) [D:/nt/private/inet/iis/svcs/cmp/asp/hitobj.cpp @ 2414]
09a8fcd8 787c048a 00000000 77aa1b03 01e91ed8 asp!CViperAsyncRequest::OnCall+0x3f
(FPO: [Non-Fpo]) [D:/nt/private/inet/iis/svcs/cmp/asp/viperint.cpp @ 194]
09a8fce0 77aa1b03 01e91ed8 77a536d8 00000000 COMSVCS!STAActivityWorkHelper+0xa
(FPO: [1,0,0])
09a8fd24 77aa1927 000752f8 000864dc 787c0480 ole32!EnterForCallback+0x6a
(FPO: [Non-Fpo]) [D:/nt/private/ole32/com/dcomrem/crossctx.cxx @ 1759]
09a8fe50 77aa17ea 000864dc 787c0480 01e91ed8 ole32!SwitchForCallback+0x12b
(FPO: [Non-Fpo]) [D:/nt/private/ole32/com/dcomrem/crossctx.cxx @ 1644]
09a8fe78 77aa60c1 000864dc 787c0480 01e91ed8 ole32!PerformCallback+0x50
(FPO: [Non-Fpo]) [D:/nt/private/ole32/com/dcomrem/crossctx.cxx @ 1559]
09a8fed4 77aa5fa6 04f2b4c0 787c0480 01e91ed8 ole32!CObjectContext::InternalContextCallback+0xf5
(FPO: [Non-Fpo]) [D:/nt/private/ole32/com/dcomrem/context.cxx @ 3866]
09a8fef4 787bd3c3 04f2b4c0 787c0480 01e91ed8 ole32!CObjectContext::DoCallback+0x1a
(FPO: [Non-Fpo]) [D:/nt/private/ole32/com/dcomrem/context.cxx @ 3746]
09a8ff24 787bf373 0216fb3c 00000007 09a8ffec COMSVCS!STAActivityWork::DoWork+0x73
(FPO: [0,4,2])
09a8ffb4 77e8758a 0216fe94 0216fb3c 00000007 COMSVCS!STAThread::STAThreadWorker+0x2bb
(FPO: [EBP 0x09a8ffec] [1,31,4])
09a8ffec 00000000 787bf0b8 0216fe94 00000000 KERNEL32!BaseThreadStart+0x52
(FPO: [Non-Fpo]) [D:/nt/private/windows/base/client/support.c @ 451]

C. vc2008遇到的問題

警告:可能是你的代碼文件裡面有一些中文注釋之類的字元
錯誤:_cvReleaseImage這個符號定義的文件或得lib,可能是沒有包含進來

D. 獲取滑鼠的設備 ID 時,出現一個錯誤

首先,應該解決如何實現「開始」---「運行」的正常使用。你可以試試這個方法是否可以讓你進入到注冊表中:
找一個程序的快捷方式,右鍵點擊"屬性"
"目標"中寫"regedit"這樣可以打開注冊表.
然後打開HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies \Explorer,在右邊空白處單擊滑鼠右鍵,選擇"新建"的"DWORD",然後輸入名字為"NoRun",再雙擊它,修改NoRun 為1 表示禁用"運行",0 則相反。

如果真的可以進入注冊表了,運行也可以正常使用了,那麼「設備管理器」的重新使用就顯得十分簡單了。

試試看下面的方法吧,不知道是否可行:
1. 重新從Windows CD中解壓devmgmt.msc和devmgmt.dll,命令如下:
expand cdrom:\i386\devmgmt.ms_ %systemroot%\system32\devmgmt.msc
expand cdrom:\i386\devmgr.dl_ %systemroot%\system32\devmgr.dll
2.重新注冊一下msxml parser,命令如下:
regsvr32 C:\Windows\system32\msxml3.dll
3.如果2還不行,去
下載Microsoft XML Parser 3.0, 可能帶SP一類的,然後安裝那個msxml3xxx.msi文件。
一般這個問題還伴隨Windows Update不靈的問題,你也可以檢查一下。

先試試第2種方法,不行後再試試1和3,畢竟2比較簡單一些。

最後,
這是來自微軟的信息,希望對你有用。

DevCon 命令行實用工具可替代設備管理器

察看本文應用於的產品
文章編號 : 311272
最後修改 : 2005年11月23日
修訂 : 4.2
本文的發布號曾為 CHS311272
本頁
概要
更多信息
使用 DevCon
DevCon 命令示例
注意
這篇文章中的信息適用於:

概要
DevCon 實用工具是一種命令行實用工具,可以替代設備管理器。使用 DevCon,您可以啟用、禁用、重新啟動、更新、刪除和查詢單個設備或一組設備。DevCon 還提供與驅動程序開發人員有關、但無法在設備管理器中看到的信息。

可以將 DevCon 用於 Microsoft Windows 2000、Windows XP 和 Windows Server 2003,但不能將其用於 Windows 95、Windows 98 或 Windows Millennium Edition。
回到頂端

更多信息
DevCon 不可再分發。提供它是為了用作調試和開發工具。您可以隨意修改 DevCon 以供個人專用。此示例演示了如何有效地同時使用 SetupAPI 和 CfgMgr32 函數來枚舉設備和執行設備操作。 可以從 Microsoft 下載中心下載以下文件:

立即下載 DevCon 軟體包。 () 發布日期:2003 年 1 月 29 日

有關如何下載 Microsoft 支持文件的更多信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
119591 () 如何從聯機服務獲取 Microsoft 支持文件
Microsoft 已對此文件進行了病毒掃描。Microsoft 使用的是該文件發布時可以獲得的最新病毒檢測軟體。該文件存儲在安全性得到增強的伺服器上,以防止在未經授權的情況下對其進行更改。

DevCon.exe 文件包含以下文件:
文件 說明
I386\DevCon.exe 32 位 DevCon 工具的二進制文件。此文件在 64 位 Windows 上不能充分發揮作用。
Ia64\DevCon.exe 64 位 DevCon 工具的二進制文件。

注意:DevCon 的源代碼也可以從 Windows DDK(位於 ())中得到,路徑是 DDK root\Src\Setup\Devcon,此位置還提供了文檔。
回到頂端

使用 DevCon
DevCon 是一個帶有內置文檔的命令行實用工具。如果您運行 devcon help 命令,將會出現以下命令列表和描述信息。devcon help 命令可提供關於任何命令的詳細幫助。使用其中的某些命令,您可以指定遠程目標計算機。如果您在 WOW64 上使用 32 位版的 DevCon,則以下命令有效。設備控制台幫助:
devcon.exe [-r] [-m:\\<machine>] <command> [<arg>...]
-r 如果指定它,在命令完成後若需要則重新啟動計算機。
<machine> 是目標計算機的名稱。
<command> 是將要執行的命令(如下所示)。
<arg>... 是命令需要的一個或多個參數。
要獲取關於某一特定命令的幫助,請鍵入:devcon.exe help <command>
classfilter 允許修改類別篩選程序。
classes 列出所有設備安裝類別。
disable 禁用與指定的硬體或實例 ID 匹配的設備。
driverfiles 列出針對設備安裝的驅動程序文件。
drivernodes 列出設備的所有驅動程序節點。
enable 啟用與指定的硬體或實例 ID 匹配的設備。
find 查找與指定的硬體或實例 ID 匹配的設備。
findall 查找設備,包括那些未顯示的設備。
help 顯示此信息。
hwids 列出設備的硬體 ID。
install 手動安裝設備。
listclass 列出某一安裝類別的所有設備。
reboot 重新啟動本地計算機。
remove 刪除與特定的硬體或實例 ID 匹配的設備。
rescan 掃描以發現新的硬體。
resources 列出設備的硬體資源。
restart 重新啟動與特定的硬體或實例 ID 匹配的設備。
stack 列出預期的設備驅動程序堆棧。
status 列出設備的運行狀態。
update 手動更新設備。
UpdateNI 手動更新設備,無用戶提示
SetHwID 添加、刪除和更改根枚舉設備的硬體 ID 的順序。

DevCon 命令示例
devcon -m:\\test find pci\*

列出計算機 test 上的所有已知 PCI 設備。(通過使用 -m,您可以指定一個目標計算機。您必須使用「進程間通信」(IPC) 訪問此計算機。)

devcon -r install %WINDIR%\Inf\Netloop.inf *MSLOOP

安裝一個新的 Microsoft 環回適配器實例。這將創建一個新的根枚舉設備節點,使用此節點您可以安裝「虛擬設備」,如環回適配器。如果需要重新啟動計算機,此命令還將以安靜模式重新啟動計算機。

devcon classes

列出所有已知的安裝類別。輸出結果包含短的未本地化的名稱(例如,「USB」)和描述性名稱(例如,「通用串列匯流排控制器」)。

devcon classfilter upper !filter1 !filter2

刪除這兩個指定的篩選程序。

devcon classfilter lower !badfilter +goodfilter

用「goodfilter」替換「badfilter」。

devcon driverfiles =ports

列出與 ports 安裝類別中的每一個設備關聯的文件。

devcon disable *MSLOOP

禁用硬體 ID 以「MSLOOP」結尾(包括「*MSLOOP」)的所有設備。

devcon drivernodes @ROOT\PCI_HAL\PNP0A03

列出設備「ROOT\PCI_HAL\PNP0A03」的所有兼容驅動程序。這可以用來確定為什麼選擇原配的設備信息 (.inf) 文件而不選第三方 .inf 文件。

devcon enable '*MSLOOP

啟用硬體 ID 為「*MSLOOP」的所有設備。單引號指示必須嚴格按字面解釋硬體 ID(換句話說,星號 [「*」] 真的是 一個星號,而不是通配符)。

devcon find *

列出本地計算機上存在的所有設備的設備實例。

devcon find pci\*

列出本地計算機上所有已知的「外圍組件互連」(PCI) 設備(如果一個設備的硬體 ID 以「PCI\」為前綴,此命令就認為該設備是 PCI 設備)。

devcon find =ports *pnp*

列出存在的作為 ports 安裝類別的成員而且硬體 ID 中包含「PNP」的設備。

devcon find =ports @root\*

列出存在的作為 ports 安裝類別的成員而且在枚舉樹的「root」分支中的設備(實例 ID 以「root\」為前綴)。請注意,有關實例 ID 的格式化方式,不應作任何編程假定。要確定根設備,可以檢查設備狀態位。此功能包括在 DevCon 中是為了幫助進行調試。

devcon findall =ports

列出 ports 類別的「不存在」的設備和存在的設備。這包括已經被刪除的設備、從一個插槽移到另一個插槽的設備,以及在某些情況下由於 BIOS 改變而被不同地枚舉的設備。

devcon listclass usb 1394

列出命令中所列的每個類別(本例中是 USB 和 1394)的所有存在的設備。

devcon remove @usb\*

刪除所有 USB 設備。被刪除的設備列出時將顯示其刪除狀態。

devcon rescan

重新掃描以發現新的「即插即用」設備。

devcon resources =ports

列出由 ports 安裝類別中的所有設備使用的資源。

devcon restart =net @'ROOT\*MSLOOP\0000

重新啟動環回適配器「ROOT\*MSLOOP\0000」。命令中的單引號指示必須按字面解釋實例 ID。

devcon hwids=mouse

列出系統中滑鼠類設備的所有硬體 ID。

devcon sethwid @ROOT\LEGACY_BEEP\0000 := beep

將硬體 ID beep 賦予舊式蜂鳴設備。

devcon stack =ports

列出設備預期的驅動程序堆棧。包括設備和類別高層/低層篩選程序,以及控制服務。

devcon status @pci\*

列出實例 ID 以「pci\」開頭的每一個存在設備的狀態。

devcon status @ACPI\PNP0501\1

列出特定設備實例的狀態,在本例中是一個高級配置和電源界面 (ACPI) - 枚舉的串列埠。

devcon status @root\rdp_mou\0000

列出 Microsoft 終端伺服器或終端服務滑鼠驅動程序的狀態。

devcon status *PNP05*

列出所有 COM 埠的狀態。

devcon update mydev.inf *pnp0501

更新與硬體 ID *pnp0501 嚴格匹配的所有設備,讓它們使用 Mydev.inf 中與硬體 ID *pnp0501 關聯的最好的驅動程序。

注意:即使系統上已經存在更好的匹配項,這一更新也將強制所有設備使用 Mydev.inf 中的驅動程序。如果在獲得簽名之前,您想要在開發過程中安裝驅動程序的新版本,則這是很有用的。此更新僅影響與指定的硬體 ID 匹配的設備,不會影響到其子設備。如果指定的 .inf 文件未經簽名,則 Windows 可能會顯示一個對話框,提示您確認是否應安裝此驅動程序。如果需要重新啟動計算機,將報告這一情況並且 DevCon 返回一個級別 1 錯誤。如果指定 -r,在需要重新啟動計算機時就會自動重啟。

注意
? DevCon 將返回一個在腳本中使用的錯誤級別:
「0」指示成功。
「1」指示需要重新啟動。
「2」指示失敗。
「3」指示語法錯誤。
? 如果您指定 -r 並且需要重新啟動,則在處理完所有設備後,將在無任何警告信息的情況下重新啟動。
? 如果您指定 -m:\\computer 並且命令對遠程計算機不起作用,將報告一個錯誤。
? 為便於交互,DevCon 允許在實例 ID 中使用通配符。不要根據一台計算機或一種操作系統版本去推測有關另一台計算機或另一種操作系統版本的實例 ID 格式的任何信息。

回到頂端

--------------------------------------------------------------------------------

這篇文章中的信息適用於:
? Microsoft Windows 2000 Driver Development Kit (DDK)
? Microsoft Windows XP 驅動程序開發工具包
? Microsoft Windows Server 2003 Driver Development Kit

E. 怎麼在DOS下編譯C++程序

對於初學c/c++的人,我建議最好在使用dos 環境下的編譯器,這樣不至於在GUI的環境(比如vc、bcb)里給弄糊塗了。那麼在dos環境下如何使用c/c++的編譯器了,其實很簡單,下面用vc為例;

首先你告訴LIB和INCLUDE在什麼地方,在就告訴編譯的程序在什麼地方,這樣我們可以在任何目錄下都可以使用編譯器,要作到上面的,就理所當然要設定path了!設定如下:

假定你的vc安裝在如下目錄:
C:\Program Files\Microsoft Visual Studio\VC98\Include
C:\Program Files\Microsoft Visual Studio\VC98\MFC\Include

C:\Program Files\Microsoft Visual Studio\VC98\Lib
C:\Program Files\Microsoft Visual Studio\VC98\MFC\Lib

C:\Program Files\Microsoft Visual Studio\VC98\Bin
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin

那麼寫一個批處理文件(autoexec.bat),內容如下:
set path=C:\Program Files\Microsoft Visual Studio\VC98\Bin;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin (找到vc的編譯器cl.exe位置,同時也可以調用MSPDB60.DLL文件)

set Include=C:\Program Files\Microsoft Visual Studio\VC98\Include;C:\Program Files\Microsoft Visual Studio\VC98\MFC\Include

set Lib=C:\Program Files\Microsoft Visual Studio\VC98\Lib;
C:\Program Files\Microsoft Visual Studio\VC98\MFC\Lib

當然如果你不用mfc也可以這樣:

set path=C:\Program Files\Microsoft Visual Studio\VC98\Bin;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin

set Include=C:\Program Files\Microsoft Visual Studio\VC98\Include

set Lib=C:\Program Files\Microsoft Visual Studio\VC98\Lib

如果你是使用的bcb的編譯器,設置方法與上面類似!

那麼如何在dos 用c/c++的編譯器編譯程序呢?
那就更簡單了!如下:

C:\> CL test.cpp <回車>(呵呵,當然你可以在其他目錄下去執行,只要是你編譯的cpp文件的目錄就行)

至於執行cl.exe有些什麼參數實現條件編譯,就要自己去查了!:)

當然,上面的方法不適合開發大型的項目,因為很明顯文檔、程序管理不方便!

F. 自動啟動

我的Windows
啟動項包括:
啟動項:
High
Definition
Audio
Property
Page
Shortcut
命令行:
HDAShCut.exe
啟動位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
文件信息:
High
Definition
Audio
Property
Page
Shortcut
v1.0a,
Windows
(R)
Server
2003
DDK
provider
啟動項:
Alcmtr
命令行:
ALCMTR.EXE
啟動位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
文件信息:
Realtek
Azalia
Audio
-
Event
Monitor,
Realtek
Semiconctor
Corp.
--------------這些是你的音效卡的附加文件
啟動項:
AssistSystray
命令行:
F:\全能優化大師\AssistSystray.exe
啟動位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
文件信息:
全能助手後台服務,
全能助手工作室
——————————————這個是優化大師的後台文件
啟動項:
KvMonXP
命令行:
"C:\PROGRA~1\KV2005\KVMonXP.kxp"
/auto
啟動位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
文件信息:
KVmonxp,
JiangMin
Co.Ltd
-------------------這個是你的江明殺毒軟體
動項:
Update
命令行:
C:\Program
Files\Common
Files\UPDATE\Update.exe
啟動位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
文件信息:
---------這個是系統自動更新的程序
啟動項:
res
命令行:
C:\WINDOWS\system32\res.exe
啟動位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
文件信息:
------這個應該是修改注冊表的文件吧
啟動項:
ctfmon.exe
命令行:
C:\WINDOWS\system32\ctfmon.exe
啟動位置:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
文件信息:
CTF
Loader,
Microsoft
Corporation
不知道哪些可以去掉,請各位指教!
——------這個是輸入法指示器
——————————————————
上面的都可以去掉
沒有什麼大的實際作用
還有問題加群11034751
附帶你的問題
我晚上通過驗證
不要一直加不停!!!

G. 用編程的方法禁用某一硬體設備.求代碼


首先,應該解決如何實現「開始」---「運行」的正常使用。你可以試試這個方法是否可以讓你進入到注冊表中:
找一個程序的快捷方式,右鍵點擊"屬性"
"目標"中寫"regedit"這樣可以打開注冊表.
然後打開HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies \Explorer,在右邊空白處單擊滑鼠右鍵,選擇"新建"的"DWORD",然後輸入名字為"NoRun",再雙擊它,修改NoRun 為1 表示禁用"運行",0 則相反。

如果真的可以進入注冊表了,運行也可以正常使用了,那麼「設備管理器」的重新使用就顯得十分簡單了。

試試看下面的方法吧,不知道是否可行:
1. 重新從Windows CD中解壓devmgmt.msc和devmgmt.dll,命令如下:
expand cdrom:\i386\devmgmt.ms_ %systemroot%\system32\devmgmt.msc
expand cdrom:\i386\devmgr.dl_ %systemroot%\system32\devmgr.dll
2.重新注冊一下msxml parser,命令如下:
regsvr32 C:\Windows\system32\msxml3.dll
3.如果2還不行,去
下載Microsoft XML Parser 3.0, 可能帶SP一類的,然後安裝那個msxml3xxx.msi文件。
一般這個問題還伴隨Windows Update不靈的問題,你也可以檢查一下。

先試試第2種方法,不行後再試試1和3,畢竟2比較簡單一些。

最後,
這是來自微軟的信息,希望對你有用。

DevCon 命令行實用工具可替代設備管理器

察看本文應用於的產品
文章編號 : 311272
最後修改 : 2005年11月23日
修訂 : 4.2
本文的發布號曾為 CHS311272
本頁
概要
更多信息
使用 DevCon
DevCon 命令示例
注意
這篇文章中的信息適用於:

概要
DevCon 實用工具是一種命令行實用工具,可以替代設備管理器。使用 DevCon,您可以啟用、禁用、重新啟動、更新、刪除和查詢單個設備或一組設備。DevCon 還提供與驅動程序開發人員有關、但無法在設備管理器中看到的信息。

可以將 DevCon 用於 Microsoft Windows 2000、Windows XP 和 Windows Server 2003,但不能將其用於 Windows 95、Windows 98 或 Windows Millennium Edition。
回到頂端

更多信息
DevCon 不可再分發。提供它是為了用作調試和開發工具。您可以隨意修改 DevCon 以供個人專用。此示例演示了如何有效地同時使用 SetupAPI 和 CfgMgr32 函數來枚舉設備和執行設備操作。 可以從 Microsoft 下載中心下載以下文件:

立即下載 DevCon 軟體包。 () 發布日期:2003 年 1 月 29 日

有關如何下載 Microsoft 支持文件的更多信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
119591 () 如何從聯機服務獲取 Microsoft 支持文件
Microsoft 已對此文件進行了病毒掃描。Microsoft 使用的是該文件發布時可以獲得的最新病毒檢測軟體。該文件存儲在安全性得到增強的伺服器上,以防止在未經授權的情況下對其進行更改。

DevCon.exe 文件包含以下文件:
文件 說明
I386\DevCon.exe 32 位 DevCon 工具的二進制文件。此文件在 64 位 Windows 上不能充分發揮作用。
Ia64\DevCon.exe 64 位 DevCon 工具的二進制文件。

注意:DevCon 的源代碼也可以從 Windows DDK(位於 ())中得到,路徑是 DDK root\Src\Setup\Devcon,此位置還提供了文檔。
回到頂端

使用 DevCon
DevCon 是一個帶有內置文檔的命令行實用工具。如果您運行 devcon help 命令,將會出現以下命令列表和描述信息。devcon help 命令可提供關於任何命令的詳細幫助。使用其中的某些命令,您可以指定遠程目標計算機。如果您在 WOW64 上使用 32 位版的 DevCon,則以下命令有效。設備控制台幫助:
devcon.exe [-r] [-m:\\<machine>] <command> [<arg>...]
-r 如果指定它,在命令完成後若需要則重新啟動計算機。
<machine> 是目標計算機的名稱。
<command> 是將要執行的命令(如下所示)。
<arg>... 是命令需要的一個或多個參數。
要獲取關於某一特定命令的幫助,請鍵入:devcon.exe help <command>
classfilter 允許修改類別篩選程序。
classes 列出所有設備安裝類別。
disable 禁用與指定的硬體或實例 ID 匹配的設備。
driverfiles 列出針對設備安裝的驅動程序文件。
drivernodes 列出設備的所有驅動程序節點。
enable 啟用與指定的硬體或實例 ID 匹配的設備。
find 查找與指定的硬體或實例 ID 匹配的設備。
findall 查找設備,包括那些未顯示的設備。
help 顯示此信息。
hwids 列出設備的硬體 ID。
install 手動安裝設備。
listclass 列出某一安裝類別的所有設備。
reboot 重新啟動本地計算機。
remove 刪除與特定的硬體或實例 ID 匹配的設備。
rescan 掃描以發現新的硬體。
resources 列出設備的硬體資源。
restart 重新啟動與特定的硬體或實例 ID 匹配的設備。
stack 列出預期的設備驅動程序堆棧。
status 列出設備的運行狀態。
update 手動更新設備。
UpdateNI 手動更新設備,無用戶提示
SetHwID 添加、刪除和更改根枚舉設備的硬體 ID 的順序。

DevCon 命令示例
devcon -m:\\test find pci\*

列出計算機 test 上的所有已知 PCI 設備。(通過使用 -m,您可以指定一個目標計算機。您必須使用「進程間通信」(IPC) 訪問此計算機。)

devcon -r install %WINDIR%\Inf\Netloop.inf *MSLOOP

安裝一個新的 Microsoft 環回適配器實例。這將創建一個新的根枚舉設備節點,使用此節點您可以安裝「虛擬設備」,如環回適配器。如果需要重新啟動計算機,此命令還將以安靜模式重新啟動計算機。

devcon classes

列出所有已知的安裝類別。輸出結果包含短的未本地化的名稱(例如,「USB」)和描述性名稱(例如,「通用串列匯流排控制器」)。

devcon classfilter upper !filter1 !filter2

刪除這兩個指定的篩選程序。

devcon classfilter lower !badfilter +goodfilter

用「goodfilter」替換「badfilter」。

devcon driverfiles =ports

列出與 ports 安裝類別中的每一個設備關聯的文件。

devcon disable *MSLOOP

禁用硬體 ID 以「MSLOOP」結尾(包括「*MSLOOP」)的所有設備。

devcon drivernodes @ROOT\PCI_HAL\PNP0A03

列出設備「ROOT\PCI_HAL\PNP0A03」的所有兼容驅動程序。這可以用來確定為什麼選擇原配的設備信息 (.inf) 文件而不選第三方 .inf 文件。

devcon enable '*MSLOOP

啟用硬體 ID 為「*MSLOOP」的所有設備。單引號指示必須嚴格按字面解釋硬體 ID(換句話說,星號 [「*」] 真的是 一個星號,而不是通配符)。

devcon find *

列出本地計算機上存在的所有設備的設備實例。

devcon find pci\*

列出本地計算機上所有已知的「外圍組件互連」(PCI) 設備(如果一個設備的硬體 ID 以「PCI\」為前綴,此命令就認為該設備是 PCI 設備)。

devcon find =ports *pnp*

列出存在的作為 ports 安裝類別的成員而且硬體 ID 中包含「PNP」的設備。

devcon find =ports @root\*

列出存在的作為 ports 安裝類別的成員而且在枚舉樹的「root」分支中的設備(實例 ID 以「root\」為前綴)。請注意,有關實例 ID 的格式化方式,不應作任何編程假定。要確定根設備,可以檢查設備狀態位。此功能包括在 DevCon 中是為了幫助進行調試。

devcon findall =ports

列出 ports 類別的「不存在」的設備和存在的設備。這包括已經被刪除的設備、從一個插槽移到另一個插槽的設備,以及在某些情況下由於 BIOS 改變而被不同地枚舉的設備。

devcon listclass usb 1394

列出命令中所列的每個類別(本例中是 USB 和 1394)的所有存在的設備。

devcon remove @usb\*

刪除所有 USB 設備。被刪除的設備列出時將顯示其刪除狀態。

devcon rescan

重新掃描以發現新的「即插即用」設備。

devcon resources =ports

列出由 ports 安裝類別中的所有設備使用的資源。

devcon restart =net @'ROOT\*MSLOOP\0000

重新啟動環回適配器「ROOT\*MSLOOP\0000」。命令中的單引號指示必須按字面解釋實例 ID。

devcon hwids=mouse

列出系統中滑鼠類設備的所有硬體 ID。

devcon sethwid @ROOT\LEGACY_BEEP\0000 := beep

將硬體 ID beep 賦予舊式蜂鳴設備。

devcon stack =ports

列出設備預期的驅動程序堆棧。包括設備和類別高層/低層篩選程序,以及控制服務。

devcon status @pci\*

列出實例 ID 以「pci\」開頭的每一個存在設備的狀態。

devcon status @ACPI\PNP0501\1

列出特定設備實例的狀態,在本例中是一個高級配置和電源界面 (ACPI) - 枚舉的串列埠。

devcon status @root\rdp_mou\0000

列出 Microsoft 終端伺服器或終端服務滑鼠驅動程序的狀態。

devcon status *PNP05*

列出所有 COM 埠的狀態。

devcon update mydev.inf *pnp0501

更新與硬體 ID *pnp0501 嚴格匹配的所有設備,讓它們使用 Mydev.inf 中與硬體 ID *pnp0501 關聯的最好的驅動程序。

注意:即使系統上已經存在更好的匹配項,這一更新也將強制所有設備使用 Mydev.inf 中的驅動程序。如果在獲得簽名之前,您想要在開發過程中安裝驅動程序的新版本,則這是很有用的。此更新僅影響與指定的硬體 ID 匹配的設備,不會影響到其子設備。如果指定的 .inf 文件未經簽名,則 Windows 可能會顯示一個對話框,提示您確認是否應安裝此驅動程序。如果需要重新啟動計算機,將報告這一情況並且 DevCon 返回一個級別 1 錯誤。如果指定 -r,在需要重新啟動計算機時就會自動重啟。

注意
? DevCon 將返回一個在腳本中使用的錯誤級別:
「0」指示成功。
「1」指示需要重新啟動。
「2」指示失敗。
「3」指示語法錯誤。
? 如果您指定 -r 並且需要重新啟動,則在處理完所有設備後,將在無任何警告信息的情況下重新啟動。
? 如果您指定 -m:\\computer 並且命令對遠程計算機不起作用,將報告一個錯誤。
? 為便於交互,DevCon 允許在實例 ID 中使用通配符。不要根據一台計算機或一種操作系統版本去推測有關另一台計算機或另一種操作系統版本的實例 ID 格式的任何信息。

回到頂端

--------------------------------------------------------------------------------

這篇文章中的信息適用於:
? Microsoft Windows 2000 Driver Development Kit (DDK)
? Microsoft Windows XP 驅動程序開發工具包
? Microsoft Windows Server 2003 Driver Development Kit

H. 什麼叫 SDK 還有 DDK 是什麼意思

SDK 就是 Software Development Kit 的縮寫,中文意思就是「軟體開發工具包」。這是一個覆蓋面相當廣泛的名詞,可以這么說:輔助開發某一類軟體的相關文檔、範例和工具的集合都可以叫做「SDK」。具體到我們這個系列教程,我們後面只討論廣義 SDK 的一個子集——即開發 Windows 平台下的應用程序所使用的 SDK。

呵呵,其實上面只是說了一個 SDK 大概的概念而已,理解什麼是 SDK 真有這么容易嗎?恐怕沒這么簡單!為了解釋什麼是 SDK 我們不得不引入 API、動態鏈接庫、導入庫等等概念。^_^,不要怕,也就是幾個新的名詞而已,我也是到了大學快結束的時候才體會到其實學習新知識就是在學習新名詞、新概念和新術語。

首先要接觸的是「API」,也就是 Application Programming Interface,其實就是操作系統留給應用程序的一個調用介面,應用程序通過調用操作系統的 API 而使操作系統去執行應用程序的命令(動作)。其實早在 DOS 時代就有 API 的概念,只不過那個時候的 API 是以中斷調用的形式(INT 21h)提供的,在 DOS 下跑的應用程序都直接或間接的通過中斷調用來使用操作系統功能,比如將 AH 置為 30h 後調用 INT 21h 就可以得到 DOS 操作系統的版本號。而在 Windows 中,系統 API 是以函數調用的方式提供的。同樣是取得操作系統的版本號,在 Windows 中你所要做的就是調用 GetVersionEx() 函數。可以這么說,DOS API 是「Thinking in 匯編語言」的,而 Windows API 則是「Thinking in 高級語言」的。DOS API 是系統程序的一部分,他們與系統一同被載入內存並且可以通過中斷矢量表找到他們的入口,那麼 Windows API 呢?要說明白這個問題就不得不引入我們下面要介紹得這個概念——DLL。

DLL(又是一個縮寫,感覺 IT 這個行業里三字頭縮寫特別多),即 Dynamic Link Library(動態鏈接庫)。我們經常會看到一些 .dll 格式的文件,這些文件就是動態鏈接庫文件,其實也是一種可執行文件格式。跟 .exe 文件不同的是,.dll 文件不能直接執行,他們通常由 .exe 在執行時裝入,內含有一些資源以及可執行代碼等。其實 Windows 的三大模塊就是以 DLL 的形式提供的(Kernel32.dll,User32.dll,GDI32.dll),裡面就含有了 API 函數的執行代碼。為了使用 DLL 中的 API 函數,我們必須要有 API 函數的聲明(.H)和其導入庫(.LIB),函數的原型聲明不難理解,那麼導入庫又是做什麼用的呢?我們暫時先這樣理解:導入庫是為了在 DLL 中找到 API 的入口點而使用的。

所以,為了使用 API 函數,我們就要有跟 API 所對應的 .H 和 .LIB 文件,而 SDK 正是提供了一整套開發 Windows 應用程序所需的相關文件、範例和工具的「工具包」。到此為止,我們才真正的解釋清楚了 SDK 的含義。

由於 SDK 包含了使用 API 的必需資料,所以人們也常把僅使用 API 來編寫 Windows 應用程序的開發方式叫做「SDK 編程」。而 API 和 SDK 是開發 Windows 應用程序所必需的東西,所以其它編程框架和類庫都是建立在它們之上的,比如 VCL 和 MFC,雖然他們比起「SDK 編程」來有著更高的抽象度,但這絲毫不妨礙它們在需要的時候隨時直接調用 API 函數

閱讀全文

與ddk命令相關的資料

熱點內容
sqlserver編程語言 瀏覽:650
gpa國際標准演算法 瀏覽:238
伺服器編程語言排行 瀏覽:947
怎麼下載快跑app 瀏覽:966
小紅書app如何保存視頻 瀏覽:170
如何解開系統加密文件 瀏覽:809
linux切換root命令 瀏覽:283
c編譯之後界面一閃而過怎麼辦 瀏覽:880
怎麼看ic卡是否加密 瀏覽:725
lgplc編程講座 瀏覽:809
cnc手動編程銑圓 瀏覽:723
cad中幾種命令的意思 瀏覽:327
oraclelinux安裝目錄 瀏覽:134
安卓系統可以安裝編譯器嗎 瀏覽:571
javajson實體類 瀏覽:691
板加密鋼筋是否取代原鋼筋 瀏覽:67
學習編程的思路 瀏覽:231
app易語言post怎麼學 瀏覽:966
地梁的箍筋加密區位置 瀏覽:303
二分法排序程序及編譯結果 瀏覽:681