阅读:2648回复:10
2000DDK中MIRROR DRIVER问题请教
未做任何修改,直接BUILD,后按要求安装,双机连接调试,运行例子中的EXE,WINDBG所有输出如下:
Opened \\\\.\\com4 Waiting to reconnect... Connected to Windows 2000 2195 x86 compatible target, ptr64 FALSE Kernel Debugger connection established. Symbol search path is: *** Invalid *** **************************************************************************** * Symbol loading may be unreliable without a symbol search path. * * Use .symfix to have the debugger choose a symbol path. * * After setting your symbol path, use .reload to refresh symbol locations. * **************************************************************************** Executable search path is: ********************************************************************* * Symbols can not be loaded because symbol path is not initialized. * * * * The Symbol Path can be set by: * * using the _NT_SYMBOL_PATH environment variable. * * using the -y <symbol_path> argument when starting the debugger. * * using .sympath and .sympath+ * ********************************************************************* *** ERROR: Symbol file could not be found. Defaulted to export symbols for ntoskrnl.exe - Windows 2000 Kernel Version 2195 UP Free x86 compatible Kernel base = 0x80400000 PsLoadedModuleList = 0x8046a4c0 System Uptime: not available ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes ACPI: Length does not match fixed attributes Mirrored Driver VideoPort [Driver Entry] FindAdapter Called. KAInit Entry... Initialize Called. Mirror Sample: Not used \'MirrorGetChildDescriptor\'. DrvEnableDriver: DrvEnableDriver: DrvEnableDriver: DrvEnablePDEV: DrvEnableSurface: 不知为何DrvEnableDriver:有三次,而其他的一些函数没有输出(应该是没有被执行)。刚开始接触驱动开发,哪位DX帮帮忙。先谢过了。 |
|
最新喜欢:xhzxlq... |
沙发#
发布于:2005-03-23 12:50
察看源文件,其他函数是否有输出?
|
|
|
板凳#
发布于:2005-03-23 13:39
有的啊,比如
BOOL DrvBitBlt( IN SURFOBJ *psoDst, IN SURFOBJ *psoSrc, IN SURFOBJ *psoMask, IN CLIPOBJ *pco, IN XLATEOBJ *pxlo, IN RECTL *prclDst, IN POINTL *pptlSrc, IN POINTL *pptlMask, IN BRUSHOBJ *pbo, IN POINTL *pptlBrush, IN ROP4 rop4 ) { INT cnt1 = 0, cnt2 = 0; DISPDBG((1, \"Mirror Driver DrvBitBlt (Mask=%08x, rop=%08x:\\n\", psoMask, rop4)); if (psoSrc) { if (psoSrc->dhsurf) { MIRRSURF *mirrsurf = (MIRRSURF *)psoSrc->dhsurf; if (mirrsurf->bIsScreen) { DISPDBG((1, \"From Mirror Screen \")); } else { DISPDBG((1, \"From Mirror DFB \")); } cnt1 ++; } else { DISPDBG((1, \"From DIB \")); } } if (psoDst) { if (psoDst->dhsurf) { MIRRSURF *mirrsurf = (MIRRSURF *)psoDst->dhsurf; if (mirrsurf->bIsScreen) { DISPDBG((1, \"to MirrorScreen \")); } else { DISPDBG((1, \"to Mirror DFB \")); } cnt2 ++; } else { DISPDBG((1, \"to DIB \")); } } if (cnt1 && cnt2) { DISPDBG((1, \" [Send Request Over Wire]\\n\")); } else if (cnt1) { DISPDBG((1, \" [Read Cached Bits, Or Pull Bits]\\n\")); } else if (cnt2) { DISPDBG((1, \" [Push Bits/Compress]\\n\")); } else { DISPDBG((1, \" [What Are We Doing Here?]\\n\")); } return FALSE; } 例子dll部分在 C:\\NTDDK\\src\\video\\displays\\mirror\\dll 是2000的DDK |
|
地板#
发布于:2005-03-23 14:24
确实比较奇怪,系统会枚举所有存在的显示驱动,而MIRROR都会被调用,只有最后的那次才是真正的MIRROR DRIVER的启动部分,后面会连续调用ENABLEPDEV 和ENABLESURFACE.
所以不要在ENABLEDRIVER里做任何初始化的工作,而应放到后面去做. |
|
|
地下室#
发布于:2005-03-23 15:19
例子我是直接编译的,没有改任何东西。我怀疑是否是我的2000有问题呢!哪位能否试一下这个例子
C:\\NTDDK\\src\\video\\displays\\mirror C:\\NTDDK\\src\\video\\miniport\\mirror |
|
5楼#
发布于:2005-03-23 17:12
例子我是直接编译的,没有改任何东西。我怀疑是否是我的2000有问题呢!哪位能否试一下这个例子 晕了 看看debug.c 定义了ULONG DebugLevel = 0; 只有DebugPrintLevel <= DebugLevel时输出 DISPDBG((1, \"From Mirror DFB \"));当然不行了, 不过DISPDBG((0, \"From Mirror DFB \"));一定可以了 |
|
|
6楼#
发布于:2005-03-23 19:34
多谢,问题解决了。
|
|
7楼#
发布于:2005-03-23 19:37
怎么给分啊?
|
|
8楼#
发布于:2005-03-24 07:43
主贴右下角有给分按钮
|
|
|
9楼#
发布于:2005-03-24 14:24
给分时好象有错。我按了给分,分好象没有给出去。但是现在又没有办法给分了。
|
|
10楼#
发布于:2005-03-24 14:25
给分时好象有错。我按了给分,分好象没有给出去。但是现在又没有办法给分了。按钮没有了。
|
|