Ice_Bin
驱动牛犊
驱动牛犊
  • 注册日期2002-02-25
  • 最后登录2004-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1004回复:3

在DDK中如何获得另外一个驱动的DeviceObject?也就是如何打开低级驱动?

楼主#
更多 发布于:2003-02-28 16:52
这种方法为什么不行?

WCHAR deviceName=L\"\\\\\\\\.\\\\CryptpciDevice0\";
RtlInitUnicodeString(&pciDeviceName,deviceName);
IoGetDeviceObjectPointer(&pDeviceName,FILE_READ_DATA,&pFO,&pDO);

其中

L\"\\\\\\\\.\\\\CryptpciDevice0\";
是这样来的
CryptpciDevice * pDevice = new (
static_cast<PCWSTR>(KUnitizedName(L\"CryptpciDevice\", m_Unit)),
FILE_DEVICE_UNKNOWN,
static_cast<PCWSTR>(KUnitizedName(L\"CryptpciDevice\", m_Unit)),
0,
DO_DIRECT_IO
| DO_POWER_PAGABLE
)


我在应用程序里面用一下代码能打开!

char *sLinkName = \"\\\\\\\\.\\\\CryptpciDevice0\";
CreateFile(sLinkName,
 GENERIC_READ | GENERIC_WRITE,
 FILE_SHARE_READ,
 NULL,
 OPEN_EXISTING,
 0,
 NULL);


是不是一定要用这几个函数来获得另一个驱动的DeviceObject

ZwCreateFile ObReferenceObjectByHandle,IoGetRelatedDeviceObject

  





好好学习 天天向上
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-02-28 17:04
symbolink name是给Win32的程序用的,因为他看不见device object name
yuri69
驱动小牛
驱动小牛
  • 注册日期2002-07-12
  • 最后登录2005-12-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-28 20:13
你把
WCHAR deviceName=L\"\\\\\\\\.\\\\CryptpciDevice0\";

改成
WCHAR deviceName=L\"\\\\Device\\\\CryptpciDevice0\";

就可以了


我不会停止对你的思念,就像呼吸一样,我不去特意的想,但是,只能屏息,而不可能停止
yuri69
驱动小牛
驱动小牛
  • 注册日期2002-07-12
  • 最后登录2005-12-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-28 20:16
symbolink name是给Win32的程序用的,因为他看不见device object name


如这位大哥说的,Symboling 是给应用程序用的。 在内核里直接用
\\\\Device\\\\Drivername 就行了
我不会停止对你的思念,就像呼吸一样,我不去特意的想,但是,只能屏息,而不可能停止
游客

返回顶部