6、字符串转化成大写
/************************************************************************
* 函数名称:RtlUpperString
* 功能描述:UNICODE_STRING字符串转化成大写
* 参数列表:
DestinationString:目的字符串
SourceString:源字符串
* 返回 值:VOID
*************************************************************************/
VOID RtlUpperString(
IN OUT PSTRING DestinationString,
IN PSTRING SourceString);
/************************************************************************
* 函数名称:RtlUpperString
* 功能描述:UNICODE_STRING字符串转化成大写
* 参数列表:
DestinationString:目的字符串
SourceString:源字符串
AllocateDesttinationString:是否为目的字符串分配内存
* 返回 值:VOID
*************************************************************************/
NTSTATUS RtlUpcaseUnicodeString(
IN OUT PUNICODE_STRING DestinationString OPTIONAL,
IN PCUNICODE_STRING SourceString,
IN BOOLEAN AllocateDesttinationString);
如何使用RtlUpcaseUnicodeString函数
//初始化UnicodeString1
UNICODE_STRING UnicodeString1;
RtlInitUnicodeString(&UnicodeString1, L“Hello World”);
//变化钱
KdPrint((“UnicodeString1:%wZ\n”, &UnicodeString1));
//转换成大写
RtlUpcaseUnicodeString(&UnicodeString1,&UnicodeString2,FALSE);
//变化后
KdPrint((“UnicodeString1:%wZ\n”, &UnicodeString1));
7、字符串与整型数字相互转换
/************************************************************************
* 函数名称:RtlUnicodeStringToInteger
* 功能描述:UNICODE_STRING字符串转化成整型数字
* 参数列表:
String:需要转化的字符串
Base:转换的数的进制(2,8,10,16)
Value:需要转换的数字
* 返回 值:指明是否转换成功
*************************************************************************/
NTSTATUS RtlUnicodeStringToInteger(
IN PUNICODE_STRING String,
IN ULONG Base OPTIONAL,
OUT PULONG Value);
/************************************************************************
* 函数名称:RtlIntegerToUnicodeString
* 功能描述:UNICODE_STRING字符串转化成整型数字
* 参数列表:
Value:需要转化的数字
Base:转换的数的进制(2,8,10,16)
String:需要转换的字符串
* 返回 值:指明是否转换成功
*************************************************************************/
NTSTATUS RtlIntegerToUnicodeString(
IN ULONG Value,
IN ULONG Base OPTIONAL,
OUT PUNICODE_STRING String);
字符串与整型数字相互转换的实例
//(1)字符串转换成数字
//初始化UnicodeString1
UNICODE_STRING UnicodeString1;
RtlInitUnicodeString(&UnicodeString1, L“-100”);
ULONG lNumber;
NTSTATUS nStatus = RtlUnicodeStringToInteger(&UnicodeString1, 10, &lNumber);
if( NT_SUCCESS(nStatus) )
{
KdPrint((“Conver To Integer successfullu!\n”));
KdPrint((“Result:%d\n”, lNumber));
}
else
{
KdPrint((“Conver to integer unsuccessfully!\n”));
}
//(2)数字转换成字符串
//初始化UnicodeString2
UNICODE_STRING UnicodeString2;
UnicodeString2.Buffer = (PWSTR)ExAllocatePool(PagedPool, BUFFER_SIZE);
UnicodeString2.MaximumLength = BUFFER_SIZE;
nStatus = RtlIntegerToUnicodeString(200, 10, &UnicodeString2);
if( NT_SUCCESS(nStatus) )
{
KdPrint((“Conver to string successfuall!\n”));
KdPrint((“Result:%wZ\n”, &UnicodeString2));
}
else
{
KdPrint((“Conver to string unsuccessfully!\n”));
}
//注销UniocdeString2
//注意:UnicodeString1不用销毁
RtlFreeUnicodeString(&UniocdeString2);
评论
查看更多