0

プロセッサーが 32 ビットまたは 64 ビットと見なされるのはいつですか? PC のプロセッサが 32 ビットか 64 ビットかを確認したい。では、vb6コードでそれを確認するにはどうすればよいですか? それについて調査しているときに、 SYSTEM_INFO のwProcessorArchitectureを確認する必要があることがわかりました。それに従ってチェックすると、私のWindows 8 PCは32ビットとして返されますが、コンピューターのプロパティをチェックすると、x64ベースのプロセッサが表示されます。ここにコードの一部があります

Option Explicit

Private Type SYSTEM_INFO
 wProcessorArchitecture        As Integer
 wReserved                     As Integer
 dwPageSize                    As Long
 lpMinimumApplicationAddress   As Long
 lpMaximumApplicationAddress   As Long
 dwActiveProcessorMask         As Long
 dwNumberOfProcessors          As Long
 dwProcessorType               As Long
 dwAllocationGranularity       As Long
 wProcessorLevel               As Integer
 wProcessorRevision            As Integer
End Type

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

'Constants for GetSystemInfo and GetNativeSystemInfo API functions (SYSTEM_INFO structure)
Private Const PROCESSOR_ARCHITECTURE_AMD64      As Long = 9         'x64 (AMD or Intel)
Private Const PROCESSOR_ARCHITECTURE_IA64       As Long = 6         'Intel Itanium Processor Family (IPF)
Private Const PROCESSOR_ARCHITECTURE_INTEL      As Long = 0         'x86
Private Const PROCESSOR_ARCHITECTURE_UNKNOWN    As Long = &HFFFF&   'Unknown architecture



Public Function IsOS64Bit() As Boolean
On Error GoTo ProcError

Dim typ_si      As SYSTEM_INFO

Call GetNativeSystemInfo(typ_si)
If (typ_si.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_AMD64) Or (typ_si.wProcessorArchitecture = PROCESSOR_ARCHITECTURE_IA64) Then
    IsOS64Bit = True
    MsgBox "64 bit"

Else
    IsOS64Bit = False
    MsgBox "32 bit"
     MsgBox typ_si.wProcessorArchitecture
End If

ProcClean:
Debug.Print "Exiting Function m_OS64.IsOS64Bit()"
Exit Function

ProcError:
If Err.Number <> 0 Then
    Debug.Print "An error occured in m_OS64.IsOS64Bit()"
    Debug.Print Err.Number & ": " & Err.Description
    Resume ProcClean
End If
End Function

Private Sub Command1_Click()
Call IsOS64Bit
End Sub
4

1 に答える 1

0

GetNativeSystemInfoプロセッサのアーキテクチャを返しません。代わりに、オペレーティング システムのアーキテクチャを返します。つまり、32 ビット バージョンの Windows で呼び出すと、常に「32 ビット」になります。

質問で参照したMSDNの記事から:

wProcessorアーキテクチャ

インストールされているオペレーティング システムのプロセッサ アーキテクチャ。このメンバーは、次のいずれかの値になります。

CPU のアーキテクチャを決定する方法については、この質問を参照してください: OS とプロセッサを確認してください。32 ビットまたは 64 ビットですか?

于 2013-04-05T18:55:50.530 に答える