none
如何在windows内核中获取到应用程序的代码页? RRS feed

答案

全部回复

  • 你好,

     

    您可以使用GetCPInfo 或者GetCPInfoEx 方法来获得代码页。这个是一些关于GetCPInfo

    使用的代码:

    CPINFOEX CPInfoEx;

    res = GetCPInfoEx( CP_OEMCP, 0, &CPInfoEx );

    if (res==0) { printf("\n GetCPInfoEx Failed"); }

    else { printf("\n GetCPInfoEx(CP_OEMCP) %d",CPInfoEx.CodePage); }

     

    您也可以通过以下地址获得更多关于代码页的信息:

    1. http://msdn.microsoft.com/zh-cn/library/8w60z792.aspx

    2. http://msdn.microsoft.com/en-us/library/dd318081.aspx

     

    希望我的回答对你的疑问有所帮助


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Rob Pan 2011年5月30日 1:56
    2011年5月25日 7:47
  • 您好,很感谢您的回答,请问下:一段代码在要进入内存中是要分成代码页才可以的吗??也就是说代码页与代码有对应的关系吗???
    2011年5月31日 2:01
  • 你好,

     

    代码页是字符集编码的别名,是对于字符和 Unicode 数据的位模式的定义,此模式代表特定字母、数字或符号(例如 0x20 代表一个空格,而 0x74 代表字符“t”)。一些数据类型每个字符使用一个字节;每个字节可以具有 256 个不同的位模式中的一个模式。通俗的来讲,就是系统内部使用特别数字来标记这些编码。而代码是用于实现否一种特殊功能的可以通过编译器,转变为机器语言的编码。所以这两者之间没有必然的联系。在不同的机器上可以使用不同的代码。


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年5月31日 2:48
  • 那我能否理解为:对于一个特定的应用程序,我们可以取得该应用程序在内核中的字符集编码,也就是代码页,来唯一的标识该应用程序?
    • 已标记为答案 Rob Pan 2011年5月31日 5:30
    • 取消答案标记 Rob Pan 2011年5月31日 5:30
    2011年5月31日 4:19
  • 你好,

     

    我们不能通过获得字符集编码来区分不同的应用程序。因为字符集编码是由系统来维护,而并不是由应用程序维护,所以在相同的运行环境下的不同程序,会使用相同的字符编码。我们可以通过 应用程序中不同的进程ID来区分它们。

     

    希望我的回答能够对您的疑问有所帮助


    Rob Pan [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年5月31日 5:34
  • 非常感谢您的详细回答,谢谢。
    2011年5月31日 5:50