4、字符串復(fù)制
/************************************************************************
* 函數(shù)名稱:RtlCopyString
* 功能描述:ANSI_STRING字符串復(fù)制
* 參數(shù)列表:
DestinationString:目的字符串
SourceString:源字符串
* 返回 值:VOID
*************************************************************************/
VOID RtlCopyString(
IN OUT PSTRING DestinationString,
IN PSTRING SourceString OPTIONAL);
/************************************************************************
* 函數(shù)名稱:RtlCopyUnicodeString
* 功能描述:UNICODE_STRING字符串復(fù)制
* 參數(shù)列表:
DestinationString:目的字符串
SourceString:源字符串
* 返回 值:VOID
*************************************************************************/
VOID RtlCopyUnicodeString(
IN OUT PUNICODE_STRING DestinationString,
IN PUNICODE_STRING SourceString OPTIONAL);
使用方法:
//初始化UnicodeString1
UNICODE_STRING UnicodeString1;
RtlInitUnicodeString(&UnicodeString1, L“Hello World”);
//初始化UnicodeString2
UNICODE_STRING UnicodeString2 = {0};
UnicodeString2.Buffer = (PWSTR)ExAllocatePool(PagedPool, BUFFER_SIZE);
UnicodeString2.MaximumLength = BUFFER_SIZE;
//將初始化UnicodeString1復(fù)制到UnicodeString2
RtlCopyUnicodeString(&UnicodeString2, &UnicodeString1);
//分別顯示UnicodeString1和UnicodeString2
KdPrint((“UnicodeString1%wZ\n”, &UnicodeString1));
KdPrint((“UnicodeString2%wZ\n”, &UnicodeString2));
//銷(xiāo)毀UnicodeString2
//注意UnicodeString1不用銷(xiāo)毀
RtlFreeUnicodeString(&UnicodeString2);
5、字符串比較
/************************************************************************
* 函數(shù)名稱:RtlCompareString
* 功能描述:ANSI_STRING字符串比較
* 參數(shù)列表:
String1:要比較的第一個(gè)字符串
String2:要比較的第二個(gè)字符串
CaseInSensitive:是否對(duì)大小寫(xiě)敏感
* 返回 值:比較結(jié)果
如果函數(shù)返回值為0,表示兩個(gè)字符串相等
如果小于0,則表示第一個(gè)字符串小于第二個(gè)字符串
如果大于0,則表示第一個(gè)字符串大于第二個(gè)字符串
*************************************************************************/
LONG RtlCompareString(
IN PSTRING String1,
IN PSTRING String2,
IN BOOLEAN CaseInSensitive);
/************************************************************************
* 函數(shù)名稱:RtlCompareUnicodeString
* 功能描述:UNICODE_STRING字符串比較
* 參數(shù)列表:
String1:要比較的第一個(gè)字符串
String2:要比較的第二個(gè)字符串
CaseInSensitive:是否對(duì)大小寫(xiě)敏感
* 返回 值:比較結(jié)果
如果函數(shù)返回值為0,表示兩個(gè)字符串相等
如果小于0,則表示第一個(gè)字符串小于第二個(gè)字符串
如果大于0,則表示第一個(gè)字符串大于第二個(gè)字符串
*************************************************************************/
LONG RtlCompareUnicodeString(
IN PUNICODE_STRING String1,
IN PUNICODE_STRING String2,
IN BOOLEAN CaseInSensitive);
如何使用RtlCompareUnicoodeString函數(shù)
UNICODE_STRING UnicodeString2;
RtlInitUnicodeString(&UnicodeString2, L“Hello”);
//判斷字符串是否相等
if(RtlEqualUnicodeString(&UnicodeString1, &UnicodeString2, TRUE))
{
KdPrint((“UnicodeString1 and UnicodeString2 are equal\n”));
}
else
{
KdPrint((“UnicodeString1 and UnicodeString2 are NOT equal\n”));
}
評(píng)論
查看更多