zoukankan      html  css  js  c++  java
  • [Windows驱动开发] 驱动中的字符串操作

    UINCODE_STRING

    初始化:

    // UNICODE_STRING u_src;		// 此时的 UNICODE_STRING 里面的 Buffer 指针是指向全局常量区, 操作它(比如拷贝)时很可能会出现蓝屏
    UNICODE_STRING u_src = {0};		// 这样初始化的方式.是将UNICODE_STRING的 Buffer指针指向栈内存
    RtlInitUnicodeString(&src,"hello");
    
    
    
    /   在堆上初始化
    UNICODE_STRING ustr = {0};
    ULONG length = (wcslen(L"HelloWorld") + ) * sizeof(WCHAR);
    ustr.Buffer = ExAllocatePoolWithTag(PagedPool,MAX_PATH 8 sizeof(WCHAR),"niBI");
    
    if (ustr.Buffer == NULL)
        return ;
    
    清空缓存
    RtlZeroMemory(ustr.Buffer,MAX_PATH *sizeof(WCHAR));
    
    wcscpy(ustr.Buffer,L"HelloWorld");
    ustr.length = length;
    ustr.Maximumlength = MAX_PATH * sizeof(WCHAR);
    
    DbgPrint("%wZ",&ustr);
    ExFreePool(ustr.Buffer); 
    

    UNICODE_STRING 转 PWCHAR:

    NTSTRSAFEDDI RtlStringCbCopyUnicodeString(
      NTSTRSAFE_PWSTR  pszDest,
      size_t           cbDest,
      PCUNICODE_STRING SourceString
    );
    

    拼接两个 UNICODE_STRING:

    NTSTRSAFEDDI RtlUnicodeStringCat(
      PUNICODE_STRING  DestinationString,
      PCUNICODE_STRING SourceString
    );
    
    // 按字节数拼接(不完整拼接)
    NTSTRSAFEDDI RtlUnicodeStringCbCatN(
      PUNICODE_STRING  DestinationString,
      PCUNICODE_STRING SourceString,
      size_t           cbToAppend
    );
    

    使用 pwchar 拼接 UNICODE_STRING:

    NTSTRSAFEDDI RtlUnicodeStringCatString(
      PUNICODE_STRING  DestinationString,
      NTSTRSAFE_PCWSTR pszSrc
    );
    

    其他 pchar、pwchar 操作

    RtlStringcbCatA() 		字符串拼接
    RtlStringcbCopy()		字符串拷贝
    RtlStringcbLength()		求长度
    RtlStringcbPrnt()		字符串打印
    
  • 相关阅读:
    chrome shortkeys
    五笔xu
    getline()报错解决办法
    PCA程序
    c++矩阵运算库Eigen
    yolo接口
    遇到的编译错误及解决办法
    visual studio command window的使用
    NDK+MSYS2+Android sdk编译opencv源码
    面向对象分析与设计笔记(三)
  • 原文地址:https://www.cnblogs.com/csnd/p/15613343.html
Copyright © 2011-2022 走看看