Windows 2000 DDK 含有新 NDIS 内核调试器扩展 DLL 来方便的宽范围是 NDIS 内核数据结构, 检查并启用调试跟踪的 NDIS.sys checked 版本上的各种 NDIS 组件。
回到顶端
安装 NDIS 调试器扩展
要安装扩展, 将 Ndiskd.dll 从 /ntddk/bin/w2kfre 或 /ntddk/bin/w2kchk 根据目标计算机生成到同一目录如 Windbg.exe 或 i386kd.exe。 然后, 复制相应 NDIS.sys 符号到主机计算机的符号目录文件 (Ndis.pdb 和 Ndis.dbg)。
回到顶端
使用 NDIS 调试器扩展
要使用新扩展名, 调试器提供两种方法。 在命令提示符下, 之后建立会话, 输入:
| • | !ndiskd.extension_name [arguments] 调试器加载 Ndiskd.dll, 调用入口点 (extension_name) 指定, 并将参数传递到入口点。 - 或 -
|
| • | !load ndiskd.dll 调试器加载 Ndiskd.dll, 但不调用入口点。 |
不论何种情况, 一旦调试器已加载 Ndiskd.dll, 您可以运行通过只扩展的名称中包含任何扩展命令:
!extension name
注意 : 当您运行的扩展而指定 .dll, 调试器查找对于当前扩展 .dll, 它是最后一个中加载。 它如果在当前扩展 .dll, 它找不到扩展在顺序他们已加载, 并, 运行第一个实例的扩展中搜寻通过加载扩展 .dll, 它查找。
回到顶端
快速帮助
对于快速引用的所有扩展名称, 键入
!help 在加载 Ndiskd.dll 后 WinDbg 命令行。 出现信息可以类似于以下内容:
!ndiskd.help
Ndis extensions:
dbglevel [Level [Level] ...] toggle debug level
dbgsystems [Level [Level] ...] toggle debug systems
miniports <'all'> list all Miniports
gminiports <'all'> list all Miniports, even those not started yet
miniport <Miniport Block> dump Miniport block
mopen <Miniport Open Block> dump Miniport Open block
protocols dump all protocols and their opens
protocol <Protocol Block> dump the protocols block's contents
pkt <Packet> <Verbosity> dump the contents of the packet
int_ctxt <NDIS_MINIPORT_INTERRUPT*> dump the second argument of ndisMIsr
pktpool <pointer to Pkt_Pool> <Num> dump the contents of the ndis_pkt_pool. Not for Alpha and Win64
回到顶端
启用 NDIS 调试跟踪
! ! dbgsystem dbglevel 和
可通过以下两个扩展启用不同级别的各种组件是 NDIS 中调试跟踪。 这些扩展要求目标系统上的 NDIS.sys CHECKED 版本。 不用安装整个选中生成系统, 可也只复制 checked NDIS.sys 以获得调试跟踪的版本。 确定级别或量调试跟踪选定组件中 " dbgsystem " 让您选择各种 NDIS 组件和 " dbglevel "。
>!dbglevel
Current setting: INFO
Available settings:
LOG WARN ERR FATAL
>!dbgsystems
Current settings:
Available settings:
INIT CONFIG SEND RECV PROTOCOL
BIND BUS_QUERY REGISTRY MEMORY FILTER
REQUEST WORK_ITEM PNP PM OPEN
LOCKS RESET WMI NDIS_CO REFERENCE
也可以通过向 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/NDIS/Parameters 键添加下列值启用调试跟踪通过注册表。
"DebugLevel"=dword:00000000
"DebugSystems"=dword:000030F3
"DebugBreakPoint"=dword:00000001
对于 DebugLevel 和 DebugSystems 接受值是以下列表中。 如果要调试中中断设置为 1, NDIS 原因是 DriverEntry DebugBreakPoint,。
DebugLevel:
DBG_LEVEL_INFO 0x00000000
DBG_LEVEL_WARN 0x00001000
DBG_LEVEL_ERR 0x00002000
DBG_LEVEL_FATAL 0x00003000
DebugSystems:
DBG_COMP_INIT 0x00000001
DBG_COMP_CONFIG 0x00000002
DBG_COMP_SEND 0x00000004
DBG_COMP_RECV 0x00000008
DBG_COMP_MEMORY 0x00000010
DBG_COMP_FILTER 0x00000020
DBG_COMP_PROTOCOL 0x00000040
DBG_COMP_REQUEST 0x00000080
DBG_COMP_UNLOAD 0x00000100
DBG_COMP_WORK_ITEM 0x00000200
DBG_COMP_OPEN 0x00000400
DBG_COMP_LOCKS 0x00000800
DBG_COMP_PNP 0x00001000
DBG_COMP_PM 0x00002000
DBG_COMP_RESET 0x00004000
DBG_COMP_ALL 0xFFFFFFFF
如果没有选中符号是 NDIS.sys 此注册表一功能非常有用。 一个缺点是, 您需要重新启动系统每次您更改值。
回到顶端
有关其他信息, 请参阅下列文章或 Microsoft 知识库文章:
164459
(http://support.microsoft.com/kb/164459/EN-US/) HOWTO: 调试 NDIS 4.0 驱动程序
回到顶端