yxtk2046
驱动牛犊
驱动牛犊
  • 注册日期2005-02-28
  • 最后登录2007-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2648回复:10

2000DDK中MIRROR DRIVER问题请教

楼主#
更多 发布于:2005-03-23 10:58
未做任何修改,直接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帮帮忙。先谢过了。

最新喜欢:

xhzxlqtxhzxlq...
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-23 12:50
察看源文件,其他函数是否有输出?
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
yxtk2046
驱动牛犊
驱动牛犊
  • 注册日期2005-02-28
  • 最后登录2007-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2005-03-23 14:24
确实比较奇怪,系统会枚举所有存在的显示驱动,而MIRROR都会被调用,只有最后的那次才是真正的MIRROR DRIVER的启动部分,后面会连续调用ENABLEPDEV 和ENABLESURFACE.
所以不要在ENABLEDRIVER里做任何初始化的工作,而应放到后面去做.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
yxtk2046
驱动牛犊
驱动牛犊
  • 注册日期2005-02-28
  • 最后登录2007-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-23 15:19
例子我是直接编译的,没有改任何东西。我怀疑是否是我的2000有问题呢!哪位能否试一下这个例子
C:\\NTDDK\\src\\video\\displays\\mirror
C:\\NTDDK\\src\\video\\miniport\\mirror
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-23 17:12
例子我是直接编译的,没有改任何东西。我怀疑是否是我的2000有问题呢!哪位能否试一下这个例子
C:\\NTDDK\\src\\video\\displays\\mirror
C:\\NTDDK\\src\\video\\miniport\\mirror


晕了
看看debug.c

定义了ULONG DebugLevel = 0;
只有DebugPrintLevel <= DebugLevel时输出

DISPDBG((1, \"From Mirror DFB \"));当然不行了,
不过DISPDBG((0, \"From Mirror DFB \"));一定可以了
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
yxtk2046
驱动牛犊
驱动牛犊
  • 注册日期2005-02-28
  • 最后登录2007-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-23 19:34
多谢,问题解决了。
yxtk2046
驱动牛犊
驱动牛犊
  • 注册日期2005-02-28
  • 最后登录2007-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-03-23 19:37
怎么给分啊?
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-03-24 07:43
主贴右下角有给分按钮
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
yxtk2046
驱动牛犊
驱动牛犊
  • 注册日期2005-02-28
  • 最后登录2007-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-03-24 14:24
给分时好象有错。我按了给分,分好象没有给出去。但是现在又没有办法给分了。
yxtk2046
驱动牛犊
驱动牛犊
  • 注册日期2005-02-28
  • 最后登录2007-04-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-03-24 14:25
给分时好象有错。我按了给分,分好象没有给出去。但是现在又没有办法给分了。按钮没有了。
游客

返回顶部