0
VB.net을 통해 VGA 버스 유형을 얻는 방법은 무엇입니까? 버스 tpye가 장착 된 컴퓨터의 비디오 카드 뒤에 쓰기를 기록하는 소스 코드가 필요합니다. (AGP, PCI, PCI-e ...)VB.net을 통해 VGA 버스 유형 가져 오기
죄송합니다, 저의 영어!
VB.net을 통해 VGA 버스 유형을 얻는 방법은 무엇입니까? 버스 tpye가 장착 된 컴퓨터의 비디오 카드 뒤에 쓰기를 기록하는 소스 코드가 필요합니다. (AGP, PCI, PCI-e ...)VB.net을 통해 VGA 버스 유형 가져 오기
죄송합니다, 저의 영어!
WMI를 사용하여이 정보를 얻을 수 있습니다. 아래 코드를 사용했습니다. System.Management에 대한 참조를 추가해야합니다. 이 코드는 꽤 부서지기는하지만 WMI를 사용하여 정보를 사용할 수 있음을 보여줍니다. 관심있는 다른 WMI 클래스에 대해서는 MSDN의 설명서를 참조하십시오.
내 상자에이 결과를 생성Private Shared Sub Main()
Dim videoControllers As ManagementObjectCollection = getManagementObjects("Win32_VideoController")
For Each controllerObj As ManagementObject in videoControllers
Dim pnpDeviceID As String = Path.GetFileName(controllerObj.Properties("PNPDeviceID").Value.ToString())
Dim deviceBus As String = getDeviceBus(pnpDeviceID)
Dim busType As String = getBusType(deviceBus)
Console.WriteLine("{0}: {1}", controllerObj.Properties("Name").Value, busType)
Next
End Sub
Private Shared Function getManagementObjects(ByVal wmiClass As String) As ManagementObjectCollection
Using searcher As ManagementObjectSearcher = New ManagementObjectSearcher(String.Format("select * from {0}", wmiClass))
Return searcher.Get()
End Using
End Function
Private Shared Function getDeviceBus(ByVal pnpDeviceID As String) As String
Dim result As String = Nothing
Dim coll As ManagementObjectCollection = getManagementObjects("Win32_DeviceBus")
For Each mobj As ManagementObject In coll
For Each props As PropertyData in mobj.Properties
If props.Name = "Dependent" AndAlso props.Value.ToString().Contains(pnpDeviceID) Then
result = mobj.Properties("Antecedent").Value.ToString().Split("="c)(1).Replace("""", "")
Exit For
End If
Next
Next
Return result
End Function
Private Shared Function getBusType(ByVal deviceBus As String) As String
Dim busTypes As Dictionary(Of Integer, String) = New Dictionary(Of Integer, String)()
busTypes.Add(-1, "Undefined")
busTypes.Add(0, "Internal")
busTypes.Add(1, "ISA")
busTypes.Add(2, "EISA")
busTypes.Add(3, "MicroChannel")
busTypes.Add(4, "TurboChannel")
busTypes.Add(5, "PCI Bus")
busTypes.Add(6, "VME Bus")
busTypes.Add(7, "NuBus")
busTypes.Add(8, "PCMCIA Bus")
busTypes.Add(9, "C Bus")
busTypes.Add(10, "MPI Bus")
busTypes.Add(11, "MPSA Bus")
busTypes.Add(12, "Internal Processor")
busTypes.Add(13, "Internal Power Bus")
busTypes.Add(14, "PNP ISA Bus")
busTypes.Add(15, "PNP Bus")
busTypes.Add(16, "Maximum Interface Type")
Dim result As String = Nothing
Dim coll As ManagementObjectCollection = getManagementObjects("Win32_Bus")
Dim busType As Integer = -1
For Each mobj As ManagementObject in coll
If mobj.Properties("DeviceID").Value.ToString() = deviceBus Then
Integer.TryParse(mobj.Properties("BusType").Value.ToString(), busType)
Exit For
End If
Next
result = busTypes(busType)
Return result
End Function
:
ConfigMgr Remote Control Driver: PCI Bus
NVIDIA GeForce 8400 GS : PCI Bus
Winvnc video hook driver: PCI Bus
안녕하세요! 는 쓰기이 : NVIDIA 지포스 GT 610 :. PCI 버스 ** 그러나 GT 610은 PCI-E입니다 ** 나는 PCI-E 또는 PCI-익스프레스 카드에 그것을 쓰고 싶어 . – Zserigta
@ Zserigta - 원하는 것을 얻을 수있는 방법이 있는지 나는 모른다. 다른 WMI 클래스 중 일부를보고 이러한 정보를 제공 할 수 있는지 확인할 수 있습니다. http://msdn.microsoft.com/en-us/library/windows/desktop/aa394554(v=vs.85).aspx –