马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
有2中字符串的初始化方式。。代码示例如下//字符串测试函数
#define BUFFER_SIZE 1024
VOID SetStringTest()
{
//第一种字符串初始化方式。这种方式的优点是用完后不需要清理内存
UNICODE_STRING str;
RtlInitUnicodeString(&str,L"hello");
//第二种方式是:程序员自己申请内存,然后自己释放
UNICODE_STRING unicode_str = {0};
//设置缓冲区大小
unicode_str.MaximumLength = BUFFER_SIZE;
//分配内存
unicode_str.Buffer = (PWSTR)ExAllocatePool(PagedPool,BUFFER_SIZE);
WCHAR *wideStr = L"Hello";
//设置字符长度,我因为是宽字符,所以需要*2
unicode_str.Length = 2*wcslen(wideStr);
//保证缓冲区足够大,否则终止程序
ASSERT(unicode_str.MaximumLength >= unicode_str.Length);
//内存复制
RtlCopyMemory(unicode_str.Buffer,wideStr,unicode_str.Length);
KdPrint(("unicodeStr:%wZ\n",unicode_str));
//清理内存
ExFreePool(unicode_str.Buffer);
unicode_str.Buffer = NULL;
unicode_str.Length = unicode_str.MaximumLength = 0;
}
|