DDK提供针对ANSI_STRING字符串和UNICODE_STRING字符串的复制字符串命令,分别是:
ANSI_STRING 字符串复制函数:
VOID NTAPI RtlCopyString(IN OUT PSTRING DestinationString,IN const STRING * SourceString);
// DestinationString: 目的字符串。
// SourceString: 源字符串
UNICODE_STRING字符串复制函数
VOID RtlCopyUnicodeString(IN OUT PUNICODE_STRING DestinationString,IN PCUNICODE_STRING SourceString);
// DestinationString: 目的字符串。
// SourceString: 源字符串
下面的代码演示了如何使用RtlCopyUnicodeString函数,与RtlCopyString函数的使用方法时类似的。
#define BUFFER_SIZE 1024// 初始化 unicodestr1;UNICODE_STRING unicodestr1;RtlInitUnicodeString(&unicodestr1, L"Hello World!");// 初始化 unicodestr2UNICODE_STRING unicodestr2;unicodestr2.Buffer = (PWSTR)ExAllocatePool(PagedPool, BUFFER_SIZE);unicodestr2.MaximumLength = BUFFER_SIZE;// 将初始化 unicodestr1复制到unicodestr2RtlCopyUnicodeString(&unicodestr2, &unicodestr1);// 分别显示 unicodestr1 和 unicodestr2KdPrint(("unicodestr1: %wZ\n", &unicodestr1));KdPrint(("unicodestr2: %wZ\n", &unicodestr2));// unicodestr1不用销毁// unicodestr2需要主动销毁RtlFreeUnicodeString(&unicodestr2);