当前位置: 首页 > news >正文

网站开发公众号开发网易企业邮箱网页版登录入口

网站开发公众号开发,网易企业邮箱网页版登录入口,制作h5网站开发,微网站制作软件1、数据结构 两数一针:无符号短整数 宽字符串指针 Length和MaximumLength 成员需手动设置!!! UNICEODE_STRING变量定义后,Length、MaximumLength、Buffer成员均为随机值,最好立即初始化为0:Rtl…

1、数据结构

     两数一针:无符号短整数 + 宽字符串指针

     Length和MaximumLength 成员需手动设置!!!

   UNICEODE_STRING变量定义后,Length、MaximumLength、Buffer成员均为随机值,最好立即初始化为0:RtlZeroMemory();

2、UNICEODE_STRING初始化

   (1)RTL_CONSTANT_STRING宏

      #include <ntdef.h>

      UNICODE_STRING str = RTL_CONSTANT_STRING(L“my first string!”);

   (2)RtlInitUnicodeString(IN OUT PUNICODE_STRING  DestinationString, IN PCWSTR  SourceString );

      dst的buffer将指向src,dst的length和max length成员将初始化为src的length;

      若src是NULL,length为0.

           UNICODE_STRING dst;

      RtlInitUnicodeString(&dst, L”my first string!”);

   (3)RtlInitEmptyUnicodeString

     Length = 0,MaximumLength = BufferSize,Buffer = SourceString

      UNICODE_STRING dst; // 目标字符串

      WCHAR dst_buf[256]; // 定义缓冲区

      RtlInitEmptyUnicodeString(&dst, dst_buf, 256 * sizeof(WCHAR));

      UNICODE_STRING src = RTL_CONSTANT_STRING(L”My source string!”);

      RtlCopyUnicodeString(&dst,&src); // 字符串拷贝!

   (4)动态分配内存 ExAllocatePoolWithTag

      UNICODE_STRING ustr;

      ustr.Length= 0;

      ustr.MaximumLength = 256;

      ustr.Buffer = (PWCHAR)ExAllocatePoolWithTag(NonPagedPool,256,MEM_TAG);  //MEM_TAG为自定义

      RtlZeroMemory(ustr.Buffer, 256);

      ......

      if (ustr.Buffer)

      {

          ExFreePoolWithTag(ustr.Buffer, MEM_TAG);

      }

      typedef WCHAR *PWCHAR;

      typedef _Null_terminated_ WCHAR *PWSTR;

3、UNICEODE_STRING指针初始化

    PUNICODE_STRING pStr;

    pStr = ExAllocatePoolWithTag(NonPagedPool, 50, MEM_TAG);  //MEM_TAG为自定义

    RtlZeroMemory(pStr, 50);

    pStr.Length = 0;

    pStr.MaximumLength = 50 - sizeof(UNICEODE_STRIN) ;  // 减去:(两个USHORT + 一个指针 = 8字节)

    pStr.Buffer = (WCHAR*)( (UCHAR*)pStr + sizeof(UNICEODE_STRIN)) ;

4、字符串连接

    (1)连接两个UNICODE_STRING

         NTSTATUS RtlAppendUnicodeStringToString(IN OUT PUNICODE_STRING  Destination, IN PUNICODE_STRING  Source);

    (2)将WCHAR字符串串接到UNICODE_STRING之后

         NTSTATUS RtlAppendUnicodeToString(IN OUT PUNICODE_STRING  Destination, IN PCWSTR  Source);

5、字符串编码转换

     NTSTATUS RtlUnicodeStringToAnsiString(IN OUT PANSI_STRING  DestinationString,

                                           IN PUNICODE_STRING  SourceString,

                                           IN BOOLEAN  AllocateDestinationString );

     NTSTATUS RtlAnsiStringToUnicodeString(IN OUT PUNICODE_STRING  DestinationString,

                                           IN PANSI_STRING  SourceString,

                                           IN BOOLEAN  AllocateDestinationString );

       UNICODE_STRING src;

       ANSI_STRING dst;

       RtlInitUnicodeString(&src,L”打印汉字”);

       RtlUnicodeStringToAnsiString(&dst,&src,TRUE);

       DbgPrint(“%Z”,&dst);

       RtlFreeAnsiString(&dst);

6、字符串大小写转换

     VOID RtlUpperString( IN OUT PSTRING  DestinationString,

                          IN PSTRING  SourceString );                  // ANSI_STRING

     NTSTATUS RtlDowncaseUnicodeString( OUT PUNICODE_STRING  DestinationString,

                                        IN PUNICODE_STRING  SourceString,

                                        IN BOOLEAN  AllocateDestinationString );   // UNICODE_STRING

     NTSTATUS RtlUpcaseUnicodeString( IN OUT PUNICODE_STRING  DestinationString,

                                      IN PCUNICODE_STRING  SourceString,

                                      IN BOOLEAN  AllocateDestinationString );     // UNICODE_STRING

7、字符串比较

     LONG RtlCompareString( IN PSTRING  String1,

                            IN PSTRING  String2,

                            BOOLEAN  CaseInSensitive );               // ANSI_STRING

     LONG RtlCompareUnicodeString( IN PUNICODE_STRING  String1,

                                   IN PUNICODE_STRING  String2,

                                   IN BOOLEAN  CaseInSensitive );      // UNICODE_STRING

     BOOLEAN  RtlEqualString( IN PSTRING  String1,

                              IN PSTRING  String2,

                              IN BOOLEAN  CaseInSensitive );            // ANSI_STRING

     BOOLEAN RtlEqualUnicodeString( IN CONST UNICODE_STRING  *String1,

                                    IN CONST UNICODE_STRING  *String2,

                                    IN BOOLEAN  CaseInSensitive );      // UNICODE_STRING

     BOOLEAN RtlPrefixUnicodeString( IN PUNICODE_STRING  String1,

                                     IN PUNICODE_STRING  String2,

                                     IN BOOLEAN  CaseInSensitive );

     SIZE_T RtlCompareMemory( IN CONST VOID  *Source1,

                              IN CONST VOID  *Source2,

                              IN SIZE_T  Length );

8、字符串拷贝

     VOID  RtlCopyString( IN OUT PSTRING  DestinationString,

                          IN PSTRING  SourceString  OPTIONAL );  // ANSI_STRING

     VOID  RtlCopyUnicodeString( IN OUT PUNICODE_STRING  DestinationString,

                                 IN PUNICODE_STRING  SourceString );  // UNICODE_STRING

9、字符串的内存释放

     VOID RtlFreeAnsiString(IN PANSI_STRING  AnsiString);

          releases storage that was allocated by RtlUnicodeStringToAnsiString。

     VOID RtlFreeUnicodeString(IN PUNICODE_STRING  UnicodeString);

          releases storage that was allocated by RtlAnsiStringToUnicodeString or RtlUpcaseUnicodeString or RtlDowncaseUnicodeString.

10、字符串与整数

     NTSTATUS RtlUnicodeStringToInteger( IN PUNICODE_STRING  String,

                                         IN ULONG  Base  OPTIONAL,

                                         OUT PULONG  Value );

     NTSTATUS RtlIntegerToUnicodeString( IN ULONG  Value,

                                         IN ULONG  Base  OPTIONAL,

                                         IN OUT PUNICODE_STRING  String );

11、字符串大小写转换

WCHAR   RtlUpcaseUnicodeChar(

    IN WCHAR  SourceCharacter

    );

IRQL: <=APC_LEVEL

NTSTATUS   RtlUpcaseUnicodeString(

    IN OUT PUNICODE_STRING  DestinationString,

    IN PCUNICODE_STRING  SourceString,

    IN BOOLEAN  AllocateDestinationString

    );

IRQL: <=APC_LEVEL

WCHAR   RtlDowncaseUnicodeChar(

    IN WCHAR  SourceCharacter

    );

IRQL: PASSIVE_LEVEL

NTSTATUS   RtlDowncaseUnicodeString(

    OUT PUNICODE_STRING  DestinationString,

    IN PUNICODE_STRING  SourceString,

    IN BOOLEAN  AllocateDestinationString

    );

IRQL: <DISPATCH_LEVEL

自定义实现的安全性???

WCHAR fcDowncaseUnicodeChar(WCHAR srcChar)

{

    if (srcChar >= 65 && srcChar <= 90)

    {

        return (srcChar + 32);

    }

    return srcChar;

}

WCHAR fcUppercaseUnicodeChar(WCHAR srcChar)

{

    if (srcChar >= 97 && srcChar <= 122)

    {

        return (srcChar - 32);

    }

    return srcChar;

}

PUNICODE_STRING fcDowncaseUnicodeString(PUNICODE_STRING src_str)

{

    size_t i = 0;

    size_t wcharNum = 0;

    if (NULL != src_str && NULL != src_str->Buffer)

    {

        wcharNum = src_str->Length / 2;

        for (; i < wcharNum; i++)

        {

            src_str->Buffer[i] = fcDowncaseUnicodeChar(src_str->Buffer[i]);

        }

    }

    return src_str;

}

PUNICODE_STRING fcUppercaseUnicodeString(PUNICODE_STRING src_str)

{

    size_t i = 0;

    size_t wcharNum = 0;

    if (NULL != src_str && NULL != src_str->Buffer)

    {

        wcharNum = src_str->Length / 2;

        for (; i < wcharNum; i++)

        {

            src_str->Buffer[i] = fcUppercaseUnicodeChar(src_str->Buffer[i]);

        }

    }

    return src_str;

}

http://www.dtcms.com/a/499642.html

相关文章:

  • 斯坦福大学生物医学数据科学(BMDS)项目概览
  • 手机转SIP-手机做中继网关-落地线路对接软交换呼叫中心
  • Redis 在订单系统中的实战应用:防重、限流与库存扣减
  • flex 做网站去成都旅游攻略怎么做
  • PHP网站开发涉及的工具有哪些秦皇岛市海港区建设局网站
  • 如何定期清理电脑垃圾文件
  • 网站怎么做现场直播视频全国企业信息公示系统查询
  • JAVA村里租房系统小区租售系统源码支持微信小程序 + H5
  • 【图像处理】图像色彩空间 Lab、YCbCr、HSV
  • 怎么自己在电脑上做网站win2008做的网站打不开
  • 嘉兴外贸网站建网站备案号含义
  • 一个虚拟主机可以做几个网站个人网站备案填写要求
  • 通过ssh连接GitHub远程仓库
  • venv - python新手推荐的轻量化环境隔离方式
  • 网站核验单中国外包加工网
  • Ubuntu解决Github无法访问的问题
  • 关于 Qt5.11/12/15的QtCreator中对conncet宏SIGNAL不提示 的解决方法
  • C语言入门(十一)续:函数的深入认识
  • wordpress站点路径网上购物商城官网入口
  • 告别“手绘”图表:Illustrator与XD联动的数据可视化(Data Viz)工作流
  • m-card卡片组件
  • 企业内部网站建设方案怎样营销
  • 推荐一款开源的轻量级知识管理工具
  • GNU/Linux - GCC编译的静态库
  • 西安建网站哪家好企业网站蓝色模板下载
  • 成都模板建站代理网站优化要做哪些工作
  • Java MyBatis(一)--- 注解和XML的使用
  • 东莞官方网站 优帮云网站怎么做推广和优化
  • win64_11gR2_client.zip 怎么安装?Oracle 11g 客户端详细安装步骤
  • 建设向58同城的网站给客户做网站需要提供