none
补丁中SP3QFE分支中win32k.sys的bug RRS feed

  • 问题

  • 之前发在msfn.org的,现在来这里转述一遍

    http://www.msfn.org/board/index.php?showtopic=128585

     

     

    win32k.sys在SP3后有n个补丁,其中的SP3QFE分支(不管此补丁是否有QDR分支或SP2QFE分支,在SP3QFE分支中的情况都相同)有以下bug:

     

    这是英文原版RTM以及所有SP3GDR分支中,win32k.sys资源内的消息表的一部分(message table)

    .....
    236, "show status"
    237, "EnableHexNumpad"
    606, "DdeSendTimeout"
    607, "LowLevelHooksTimeout"
    .....

     

    这是英文SP3QFE分支中(958282-v2/959252-v2/954211)中,win32k.sys消息表的一部分

    .....
    236, "show status"
    237, "EnableHexNumpad"
    243, "Embedded Standard"
    244, "Embedded POSReady 2009"

    606, "DdeSendTimeout"
    607, "LowLevelHooksTimeout"
    .....

    我们看到,多了两个新条目 #243 和 #244.在kb943326中,则是仅多243一条。

     

    问题就在于,在中文(日文也有这个问题,其他非英文语言没有看过)的SP3QFE分支的win32k.sys中,导入消息表资源时,未考虑进新添加的这两条资源,也就是说,成了下面的结果:

    .....
    236, "show status"                              
    237, "EnableHexNumpad"                    
    243, "DdeSendTimeout"
    244, "LowLevelHooksTimeout"
    606, "MouseSensitivity"(原608)
    607, "CaretWidth"(原609)
    .....

    新加入的#243和#244“占用”了之前606和607的资源,同理,606、607…………所定义的资源也都逐个顺延两条。直到消息表的结束,末两条由于编译时分配不到语言资源,变成了英文的原文。

     

    这样直接导致了一系列的消息错误问题。

    2009年1月24日 10:20