zoukankan      html  css  js  c++  java
  • 内核模式下的字符串操作

    代码:

    	KdPrint(("ANSI:
    "));
    	CHAR *string = "Hello";
    	KdPrint(("%s
    ",string));
    	
    	WCHAR *string2 = L"Hello2";
    	KdPrint(("%S
    ",string2));
    	
    	ANSI_STRING ansistring ;
    	CHAR *charstring = "hello";
    	RtlInitAnsiString(&ansistring,charstring);
    
    
    	KdPrint(("%Z
    ",&ansistring));
    	charstring[0] = 'H';
    	KdPrint(("%Z
    ",&ansistring));
    	
    	RtlInitAnsiString(&ansistring,"ansistring");
    	
    	KdPrint(("%Z
    ",&ansistring));
    
    
    		KdPrint(("UNICODE:
    "));
    	UNICODE_STRING unicodestring;
    	RtlInitUnicodeString(&unicodestring,L"unicodestring");
    	KdPrint(("%wZ
    ",&unicodestring));
    
    
    	KdPrint(("UNICODE 复制:
    "));
    	UNICODE_STRING unicodestring1;
    	RtlInitUnicodeString(&unicodestring1,L"unicodestring can Copy!");
    
    
    		UNICODE_STRING unicodestring2;
    		unicodestring2.Buffer = (PWCHAR)ExAllocatePool(PagedPool,1024);
    		unicodestring2.MaximumLength = 1024;
    
    
    		RtlCopyUnicodeString(&unicodestring2,&unicodestring1);
    		KdPrint(("UNICODE1 :   %wZ
    ",&unicodestring1));
    		KdPrint(("UNICODE2 :   %wZ
    ",&unicodestring2));
    
    
    		if (!RtlCompareUnicodeString(&unicodestring1,&unicodestring2,true))
    		{
    			KdPrint(("返回值等于0 代表 相同RtlCompareUnicodeString 比较相同"));
    		}
    		if (RtlEqualUnicodeString(&unicodestring1,&unicodestring2,true))
    		{
    			KdPrint(("返回值大于0 代表 相同RtlEqualUnicodeString 比较相同"));
    		}
    		RtlFreeUnicodeString(&unicodestring2);
    
    
    		KdPrint(("UNICODE_STRING 转换为大写
    "));
    		
    		RtlUpcaseUnicodeString(&unicodestring1,&unicodestring1,FALSE);
    		KdPrint(("%wZ
    ",&unicodestring1));
    
    
    		KdPrint(("UNICODE转数
    "));
    		
    		UNICODE_STRING StrToInteger;
    		RtlInitUnicodeString(&StrToInteger,L"-100");
    		
    		ULONG lNumber;
    		NTSTATUS status2 = RtlUnicodeStringToInteger(&StrToInteger,10,&lNumber);
    		
    		if (NT_SUCCESS(status2))
    		{
    			KdPrint(("转换成功!  lNumber = %d
    ",lNumber));
    		}
    		else
    			KdPrint(("转换失败!"));
    
    
    		KdPrint(("数转UNICODE
    "));
    		UNICODE_STRING IntegerToStr = {0};
    		IntegerToStr.Buffer = (PWCHAR)ExAllocatePool(PagedPool,1024);
    		IntegerToStr.MaximumLength = 1024;
    
    
    		status2 = RtlIntegerToUnicodeString(200,10,&IntegerToStr);
    		
    		if (NT_SUCCESS(status2))
    		{
    			KdPrint(("转换成功!  Str = %wZ
    ",&IntegerToStr));
    		}
    		else
    			KdPrint(("转换失败"));
    		
    		
    			KdPrint(("
    "));
    			UNICODE_STRING unicodestringToansistring;
    			ANSI_STRING ansistring2;
    			RtlInitUnicodeString(&unicodestringToansistring,L"UNICODETOANSISTRING");
    
    
    			NTSTATUS status3 = RtlUnicodeStringToAnsiString(&ansistring2,&unicodestringToansistring,TRUE);
    
    
    			if (NT_SUCCESS(status3))
    			{
    				KdPrint(("UNICODE转换ANSI 成功"));
    				KdPrint(("%Z",&ansistring2));
    			}
    			else
    				KdPrint(("UNICODE转换ANSI 失败"));
    
    
    			RtlFreeAnsiString(&ansistring2);
    // 			
    			KdPrint(("
    "));
    			
    			ANSI_STRING ansistring3;
    			RtlInitAnsiString(&ansistring3,"ANSISTRINGTOUNICODE");
    
    
    			UNICODE_STRING ansistringTounicodestring;
    			NTSTATUS status4 = RtlAnsiStringToUnicodeString(&ansistringTounicodestring,&ansistring3,TRUE);
    			
    			if (NT_SUCCESS(status4))
    			{
    				KdPrint(("ANSI转换UNICODE 成功"));
    				KdPrint(("%wZ",&ansistringTounicodestring));
    			}
    			else
    				KdPrint(("ANSI转换UNICODE 失败"));
    			
    			RtlFreeUnicodeString(&ansistringTounicodestring);



  • 相关阅读:
    HDU--2546 饭卡(01背包)
    UVA--562 Dividing coins(01背包)
    UVA--624 CD(01背包+路径输出)
    PKU--3628 Bookshelf 2(01背包)
    ExecutorService介绍2
    ExecutorService介绍
    mac下设置命令别名
    如何在sourcetree 下提交代码到gerrit上
    vim下如何删除某行之后的所有行
    VMware网络设置的三种方式
  • 原文地址:https://www.cnblogs.com/zcc1414/p/3982464.html
Copyright © 2011-2022 走看看