Обнаружение USB-портов на машине с помощью C#C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Обнаружение USB-портов на машине с помощью C#

Сообщение Anonymous »

У меня на ноутбуке три USB-разъема типа A. Я пытаюсь обнаружить три слота, но не могу.
Это код, который я использую для обнаружения портов на своем ноутбуке. Но этот код возвращает все порты, которые есть на ноутбуке.

Код: Выделить всё

public static List GetUSBPortsDetails()
{
var list = new List();
Console.WriteLine("USB Port Details:");

// Create a WMI query to get information about USB hubs
var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_USBHub") ?? throw new NoNullAllowedException();

// Iterate through each USB hub found
foreach (ManagementObject usbHub in searcher.Get().Cast())
{
// Display details for each USB port or hub
Console.WriteLine("------------------------------------------------");
Console.WriteLine($"Device ID: {usbHub["DeviceID"]}");
Console.WriteLine($"Description: {usbHub["Description"]}");
Console.WriteLine($"PNP Device ID: {usbHub["PNPDeviceID"]}");
Console.WriteLine($"Status: {usbHub["Status"]}");

USBPort port = new(usbHub["Description"].ToString() ?? string.Empty,
usbHub["DeviceID"].ToString() ?? string.Empty,
usbHub["PNPDeviceID"].ToString() ?? string.Empty, usbHub["Status"].ToString()
?? string.Empty, string.Empty, string.Empty, string.Empty);

// Default to empty if VID or PID is not found
string vid = string.Empty;
string pid = string.Empty;

// Look for "VID_" and "PID_" in the string
int vidIndex = port.PNPDeviceID.IndexOf("VID_");
int pidIndex = port.PNPDeviceID.IndexOf("PID_");

if (vidIndex >= 0)
{
// Extract 4 characters following "VID_"
vid = port.PNPDeviceID.Substring(vidIndex + 4, 4);
}

if (pidIndex >= 0)
{
// Extract 4 characters following "PID_"
pid = port.PNPDeviceID.Substring(pidIndex + 4, 4);
}

// Attempt to extract the port number if available in Location Path
var locationPath = usbHub["PNPDeviceID"]?.ToString();
if (locationPath != null && locationPath.Contains("USB"))
{
// Extract port number from the Location Path
var portInfo = locationPath.Split('\\');
foreach (var part in portInfo)
{
if (part.StartsWith("USB"))
{
port = port with { VID = vid, PID = pid, PortNumber = part };
Console.WriteLine($"Port Number: {part}");
Console.WriteLine($"VID: {vid}");
Console.WriteLine($"PID: {pid}");
break;
}
}
}
Console.WriteLine("------------------------------------------------\n");
list.Add(port);
}
return list;
}
Я хочу вернуть 3 USB-слота, а именно слоты типа A.


Подробнее здесь: https://stackoverflow.com/questions/791 ... ng-c-sharp
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»