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));

  • 相关阅读:
    相对定位和绝对定位
    Html中常见的块级元素
    浮动的用法
    c#中质数判断
    函数
    asp.net Jquery+json 实现无刷新分页
    MS CRM2011 某个用户(团队)对某个实体的操作权限
    asp.net sitemap url动态参数
    MS CRM 2011 更改团队的业务部门
    MS CRM 2011 解决记录总数问题
  • 原文地址:https://www.cnblogs.com/vcerror/p/4289061.html
Copyright © 2011-2022 走看看