首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >kernel32 GetSystemInfo不返回信息

kernel32 GetSystemInfo不返回信息
EN

Stack Overflow用户
提问于 2022-07-12 11:28:30
回答 1查看 68关注 0票数 0

在下面的代码中调用GetSystemInfo之后,所有的GetSystemInfo字段都是0,这就是我在这里试图解决的问题。

这与在GetSystemInfo上快速搜索可以找到的几个示例的代码差不多,因此我认为代码本身并不是错误的:

代码语言:javascript
复制
Private Structure SYSTEM_INFO
    Public dwOemID As Long
    Public dwPageSize As Long
    Public lpMinimumApplicationAddress As Long
    Public lpMaximumApplicationAddress As Long
    Public dwActiveProcessorMask As Long
    Public dwNumberOfProcessors As Long
    Public dwProcessorType As Long
    Public dwAllocationGranularity As Long
    Public wProcessorLevel As Integer
    Public wProcessorRevision As Integer
End Structure

Private Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As SYSTEM_INFO)

Private Sub GetProcessorInfo()
    Dim SI As SYSTEM_INFO
    Dim tmp As String

    Call GetSystemInfo(SI)   

    Select Case SI.dwProcessorType
        Case PROCESSOR_INTEL_386 : tmp = "386"
        Case PROCESSOR_INTEL_486 : tmp = "486"
        Case PROCESSOR_INTEL_PENTIUM : tmp = "Pentium"
        Case PROCESSOR_MIPS_R4000 : tmp = "MIPS 4000"
        Case PROCESSOR_ALPHA_21064 : tmp = "Alpha"
    End Select    

    Select Case SI.wProcessorLevel
        Case PROCESSOR_LEVEL_80386 : tmp = "Intel 80386"
        Case PROCESSOR_LEVEL_80486 : tmp = "Intel 80486"
        Case PROCESSOR_LEVEL_PENTIUM : tmp = "Intel Pentium"
        Case PROCESSOR_LEVEL_PENTIUMII : tmp = "Intel Pentium Pro, II, III or 4"
    End Select

End Sub

我正在从单元测试中在调试会话中测试这段代码。操作系统是Windows 10,VS Enterprise 2019。

编辑:代码从VB6转换为VB.Net,可能会出现Structure (最初是Type )、包含的数据类型或传递给GetSystemInfo的方式的问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-12 12:22:00

您的定义中有许多错误

  • DWORD应该是Integer
  • WORD,应该是Short
  • LPVOID,而DWORD_PTR应该是IntPtr
  • You需要传递给您的结构的引用,使用<Out()> ByRef

代码语言:javascript
复制
Private Structure SYSTEM_INFO
    Public dwOemID As Integer
    Public dwPageSize As Integer
    Public lpMinimumApplicationAddress As IntPtr
    Public lpMaximumApplicationAddress As IntPtr
    Public dwActiveProcessorMask As IntPtr
    Public dwNumberOfProcessors As Integer
    Public dwProcessorType As Integer
    Public dwAllocationGranularity As Integer
    Public wProcessorLevel As Short
    Public wProcessorRevision As Short
End Structure

Private Declare Sub GetSystemInfo Lib "kernel32" (<Out()> ByRef lpSystemInfo As SYSTEM_INFO)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72951580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档