zoukankan      html  css  js  c++  java
  • KdPrint/DbgPrint and UNICODE_STRING/ANSI_STRING

    typedef struct _UNICODE_STRING {
        USHORT Length;
        USHORT MaximumLength;
        PWSTR  Buffer;
    } UNICODE_STRING;
    typedef UNICODE_STRING *PUNICODE_STRING;
    
    
    typedef struct _STRING {
        USHORT Length;
        USHORT MaximumLength;
        PCHAR Buffer;
    } STRING;
    typedef STRING *PSTRING;
    
    typedef STRING ANSI_STRING;
    typedef PSTRING PANSI_STRING;

    To make life easier MS have extended kernel CRTL output() function with Z format specifier. This works for all kernel functions those understand formatted strings (e.g. sprintf_vsnprintfKdPrint/DbgPrint). For example:

    PUNICODE_STRING pUStr;
    PANSI_STRING    pAStr;
    ...
    KdPrint(("Unicode string: %wZ
    ", pUStr));
    KdPrint(("ANSI    string: %Z
    ",  pAStr));
    

    Though, you can use a little more complicated documented way. Btw, this form is suitable for printing byte array of strictly defined length.

    KdPrint(("Unicode string: %*.*ws
    ",pUStr->Length/sizeof(WCHAR),
        pUStr->Length/sizeof(WCHAR), pUStr));
    KdPrint(("Unicode string: %*.*S
    ",pUStr->Length/sizeof(WCHAR),
        pUStr->Length/sizeof(WCHAR), pUStr));
    KdPrint(("ANSI    string: %*.*s
    ", pAStr->Length/sizeof(CHAR),
        pAStr->Length/sizeof(CHAR),  pAStr));
    

    Or, if you want to take into account NULL-terminator, but limit output length to specified number of characters:

    KdPrint(("Unicode string: %.*ws
    ",
        pUStr->Length/sizeof(WCHAR), pUStr));
    KdPrint(("Unicode string: %.*S
    ",
        pUStr->Length/sizeof(WCHAR), pUStr));
    KdPrint(("ANSI    string: %.*s
    ",
        pAStr->Length/sizeof(CHAR),  pAStr));

  • 相关阅读:
    python3 day02 大纲
    python3 练习题 day02
    python3 练习题(购物车)
    python3 练习题(多级菜单)
    python3 day01 大纲
    python3 练习题 day01
    vuex 的基本使用
    jquery中Ajax使用Promise指定成功回调函数
    使用Promise 解决回调地狱
    Promise 概念及操作
  • 原文地址:https://www.cnblogs.com/vcerror/p/4289061.html
Copyright © 2011-2022 走看看