boywhp
驱动中牛
驱动中牛
  • 注册日期2007-08-09
  • 最后登录2015-04-24
  • 粉丝2
  • 关注0
  • 积分1105分
  • 威望515点
  • 贡献值0点
  • 好评度254点
  • 原创分1分
  • 专家分0分
阅读:1630回复:8

RtlInitEmptyUnicodeString函数到底在哪里啊?DDK中找不到

楼主#
更多 发布于:2007-08-23 16:53
我找遍了DDK也没有发现这个函数声明啊,我的代码是这样的,编译通不过

NTSYSAPI VOID
RtlInitEmptyUnicodeString(
    IN OUT PUNICODE_STRING DestinationString,
    IN PCWSTR Buffer,
    IN USHORT BufferSize);

。。。

PDEVICE_EXTENSION DevEx = OurDevice->DeviceExtension;

RtlInitEmptyUnicodeString(
&DevEx->DeviceName,
DevEx->DeviceNameBuffer,
sizeof(DevEx->DeviceNameBuffer));

    SfGetObjectName(AttachedDevice, &DevEx->DeviceName);
Test.obj : error LNK2001: unresolved external symbol __imp__RtlInitEmptyUnicodeString@12
boywhp
驱动中牛
驱动中牛
  • 注册日期2007-08-09
  • 最后登录2015-04-24
  • 粉丝2
  • 关注0
  • 积分1105分
  • 威望515点
  • 贡献值0点
  • 好评度254点
  • 原创分1分
  • 专家分0分
沙发#
发布于:2007-08-23 17:47
郁闷啊,google都找不到估计是自己写的吧???不是系统自己的
时不时我这样写就可以了啊?提示一下啊
DevEx->DeviceName.Length = 0;
DevEx->DeviceName.MaximumLength = sizeof(DevEx->DeviceNameBuffer);
DevEx->DeviceName.Buffer = DevEx->DeviceNameBuffer;
boywhp
驱动中牛
驱动中牛
  • 注册日期2007-08-09
  • 最后登录2015-04-24
  • 粉丝2
  • 关注0
  • 积分1105分
  • 威望515点
  • 贡献值0点
  • 好评度254点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2007-08-24 16:28
发现这里基本没有什么人回答问题啊,真是失败
难怪都说驱动开发难搞,书好少,论坛人也不怎么回答你问题,好郁闷啊
莫非是我RPWT???
lovcom
驱动牛犊
驱动牛犊
  • 注册日期2007-05-09
  • 最后登录2007-11-30
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望6点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-08-31 09:35
Windows Driver Kit: Kernel-Mode Driver Architecture
RtlInitEmptyUnicodeString
The RtlInitEmptyUnicodeString macro initializes an empty counted Unicode string.

VOID  RtlInitEmptyUnicodeString(    IN OUT PUNICODE_STRING  DestinationString,    IN PCWSTR  Buffer,    IN USHORT  BufferSize    );
Parameters
DestinationString
Pointer to the UNICODE_STRING structure to be initialized.
Buffer
Pointer to a caller-allocated buffer to be used to contain a WCHAR string.
BufferSize
Length, in bytes, of the buffer that Buffer points to.

Return Value
None.

Comments
The members of the structure that the DestinationString parameters points to are initialized as follows.

Member Value
Length Zero
MaximumLength BufferSize
Buffer SourceString


To initialize a non-empty counted Unicode string, call RtlInitUnicodeString.

Callers of RtlInitEmptyUnicodeString can be running at any IRQL.

Requirements
Versions: Available on Microsoft Windows XP and later operating systems.

Headers: Declared in wdm.h. Include wdm.h.

See Also
RtlInitUnicodeString, UNICODE_STRING
lovcom
驱动牛犊
驱动牛犊
  • 注册日期2007-05-09
  • 最后登录2007-11-30
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望6点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-08-31 09:37
自己翻译看吧。
zhangleierli
驱动小牛
驱动小牛
  • 注册日期2007-01-31
  • 最后登录2017-05-24
  • 粉丝1
  • 关注0
  • 积分3分
  • 威望158点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2007-08-31 15:21
这个函数只在XP和之后的系统里才有,ntifs.h头文件里有定义

如果在2000下使用的话,还是自己定义吧

#if WINVER == 0x0500

#define RtlInitEmptyUnicodeString(_ucStr,_buf,_bufSize) \
    ((_ucStr)->Buffer = (_buf), \
    (_ucStr)->Length = 0, \
    (_ucStr)->MaximumLength = (USHORT)(_bufSize))
#endif
boywhp
驱动中牛
驱动中牛
  • 注册日期2007-08-09
  • 最后登录2015-04-24
  • 粉丝2
  • 关注0
  • 积分1105分
  • 威望515点
  • 贡献值0点
  • 好评度254点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2007-08-31 21:08
哦 那还不就是
DevEx->DeviceName.Length = 0;
DevEx->DeviceName.MaximumLength = sizeof(DevEx->DeviceNameBuffer);
DevEx->DeviceName.Buffer = DevEx->DeviceNameBuffer;
zhangleierli
驱动小牛
驱动小牛
  • 注册日期2007-01-31
  • 最后登录2017-05-24
  • 粉丝1
  • 关注0
  • 积分3分
  • 威望158点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2007-09-03 11:26
呵,这样写当然可以了,不过还是定义下为好,毕竟其它地方要用,方便多了
smartees
驱动牛犊
驱动牛犊
  • 注册日期2007-06-07
  • 最后登录2007-12-06
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望6点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-09-14 09:11
下个 WinXP DDK SP1,即 2600.1106 就有了
游客

返回顶部