Traversing device manager

xiaoxiao2021-03-06  80

The code originated from CodeProject and modified the function of adding the read device identity. BBS's friends need, in the way, it is available here to use system; use system.Runtime.InteropServices; use system.text;

Namespace devclasses {///

/// summary description for class. /// class deviceclasses {/// ///// Public const Int max_name_ports = 7; Public const Int regdisposition_openexisting = (0x00000001); // Open key online = (0x00000000);

public const int CR_SUCCESS = (0x00000000); public const int CR_NO_SUCH_VALUE = (0x00000025); public const int CR_INVALID_DATA = (0x0000001F); public const int DIGCF_PRESENT = (0x00000002); public const int DIOCR_INSTALLER = (0x00000001); // MaximumAllowed access type To REG. PUBLIC Const Int Maximum_allowed = (0x02000000); [StructLayout (layoutkind.sequential)]

Public class sp_devinfo_data {public int CBSIZE; Public GUID ClassGUID; Public Int Devinst; // Devinst Handle Public Ulong Reserved;

[DllImport ( "cfgmgr32.dll")] public static extern UInt32 CM_Open_DevNode_Key (IntPtr dnDevNode, UInt32 samDesired, UInt32 ulHardwareProfile, UInt32 Disposition, IntPtr phkDevice, UInt32 ulFlags);

[DLLIMPORT ("cfgmgr32.dll")] public static extern uint32 cm_enumerate_classes (Uint32 ClassIndex, Ref GUID ClassGuid, Uint32 params);

[DllImport ( "setupapi.dll")] // public static extern Boolean SetupDiClassNameFromGuidA (ref Guid ClassGuid, StringBuilder ClassName, // char * UInt32 ClassNameSize, ref UInt32 RequiredSize?);

[DllImport ( "setupapi.dll")] public static extern IntPtr SetupDiGetClassDevsA (ref Guid ClassGuid, UInt32 Enumerator, IntPtr hwndParent, UInt32 Flags); [DllImport ( "setupapi.dll")] public static extern Boolean SetupDiEnumDeviceInfo (IntPtr DeviceInfoSet, UInt32 MemberIndex, ref sp_devinfo_data deficeinfodata;

[DLLIMPORT ("setupapi.dll")] public static extern boolean setupdideStroyDeviceInfolist (INTPTR DeviceInfoseet);

[DLLIMPORT ("setupapi.dll")] public static extern INTPTR SetupdiGetClassdevsa (Ref GUID ClassGuid, Uint32 Samdesired, Uint32 Flags, Ref string HWndparent, INTPTR RESERVED);

[DLLIMPORT ("setupapi.dll")] public static extern INTPTR SetupdiopenclassRegKeyexa (Ref guid classguid, uint32 samdesired, int flags, intptr machine, uint32 reserved);

[DLLIMPORT ("Advapi32.dll")] Public Static Extern uint32 RegQueryValuea (INTPTR KeyClass, Uint32 Subkey, StringBuilder ClassDescription, Ref uint32 sizeb);

[DLLIMPORT ("User32.dll")] Public Static Extern Boolean Chartooem (String Lpszsrc, StringBuilder LPSZDST);

Public Static int enumerateclasses (uint32 classindex, ref stringbuilder classname, stringbuilder classdescription, ref string id, ref bool def Bool devicePresent) {guid classguid = guid.empty;

INTPTR NewDeviceInfoset; sp_devinfo_data deficEnfodata; uint32 result; stringbuilder name = new stringbuilder (""); bool resnam = false; uint32 requiredsize = 0;

INTPTR PTR;

Result = cm_enumerate_classes (ClassIndex, Ref ClassGuid, 0);

ClassName = new StringBuilder ( ""); DevicePresent = false; // incorrect device class: if (result == CR_INVALID_DATA) {return -2;} // device class is absent if (result == CR_NO_SUCH_VALUE) {return -1; } // bad param - fatal error if (result = CR_SUCCESS!) {return -3;.} name.Capacity = 0; resNam = SetupDiClassNameFromGuidA (ref ClassGuid, name, RequiredSize, ref RequiredSize); if (RequiredSize> 0) { Name.capacity = (int) RequiredSize; ResNam = setupdiclassNameFromGuida (Ref classguid, name, requiredsize, ref refeiredsize);

}

NewDeviceInfoset = setupdigetClassdevsa (Ref classguid, 0, INTPTR.ZERO, Digcf_present);

IF (newDeviceInfoset.Toint32 () == -1) {DevicePresent = false; classname = name; id = classGuid.tostring (); return 0;}

IntPtr KeyClass = SetupDiOpenClassRegKeyExA (ref ClassGuid, MAXIMUM_ALLOWED, DIOCR_INSTALLER, IntPtr.Zero, 0); if (KeyClass.ToInt32 () == -1) {DevicePresent = false; ClassName = name; id = ClassGuid.ToString (); return 0 }

UINT32 SIZEB = 1000; StringBuilder CD = New StringBuilder (""); classdescription.capacity = 1000; uint32 res = regQueryValuea (KeyClass, 0, ClassDescription, Ref sizeb);

IF (res! = 0) ClassDescription = new stringbuilder (""); setUpdideStroyDeviceInfolist (newdeviceInfoset); classname = name; id = classguid.tostring (); devicePresent = true;

Return 0;

}

[Stathread] static void main (string [] args) {stringbuilder classes = new stringbuilder (""); stringbuilder classesdescr = new stringbuilder ("");

Stringbuilder classesdescroem = new stringbuilder (""); classsdescroem.capacity = 1000; boolean devexist = false; uint32 i = 0; string id = ""; while (true) {

Int Res = EnumerateClasses (I, Ref Classes, ClasseSDesCR, Ref ID, Ref devExist); if (res == -1) Break; i; if (res <-1 ||! devexist) Continue; Console.Writeline "ClassName = {0}, Description = {1}, ID = {2}", classes, classesdesdescriber, id);} return;}}} running results on my machine // classname = Wceusbs, Description = Windows CE USB Devices, id = 25dbce51-6c8f-4a72-8a6d-b54c2b4fc835ClassName = Security Accelerator, Description = Security Accelerators, id = 268c95a1-edfe-11d3-95c3-0010dc4050a5ClassName = USB, Description = universal serial bus controller, id = 36fc9e60-c465 -11cf-8056-444553540000ClassName = PnpPrinters, Description = IEEE 1394 and SCSI printer, id = 4658ee7e-f050-11d1-b6bd-00c04fa372a7ClassName = Dot4, Description = IEEE 1284.4 devices, id = 48721b56-6795-11d2-b1a8-0080c72e74a2ClassName = Dot4Print , Description = IEEE 1284.4 compatible printer, id = 49ce6ac8-6f86-11d2-b1e5-0080c72e74a2ClassName = CDROM, Description = DVD / CDROM drive, id = 4d36e965-e325-11ce-bfc1-08002be10318ClassName = computer, Description = computer, id = 4D36E966-E325-11CE-BFC1-08002BE10318ClassName = DiskDrive, description = disk drive , Id = 4d36e967-e325-11ce-bfc1-08002be10318ClassName = Display, Description = cards, id = 4d36e968-e325-11ce-bfc1-08002be10318ClassName = fdc, Description = floppy disk controller, id = 4d36e969-e325-11ce-bfc1- 08002be10318ClassName = hdc, Description = IDE ATA / ATAPI controller, id = 4d36e96a-e325-11ce-bfc1-08002be10318ClassName = keyboard, Description = keyboard, id = 4d36e96b-e325-11ce-bfc1-08002be10318ClassName = MEDIA, Description = voice, video And game controller, ID = 4D36E96C-E325-11CE-BFC1-08002BE10318ClassName = mod = 4d36E96D-E325-11CE-BFC1-08002BE10318ClassName =

Monitor, Description = monitor, id = 4d36e96e-e325-11ce-bfc1-08002be10318ClassName = Mouse, Description = mouse and other pointing devices, id = 4d36e96f-e325-11ce-bfc1-08002be10318ClassName = MTD, Description = Memory technology driver, id = 4d36e970-e325-11ce-bfc1-08002be10318ClassName = multiFunction, Description = multifunction card, id = 4d36e971-e325-11ce-bfc1-08002be10318ClassName = net, Description = network adapter, id = 4d36e972-e325-11ce-bfc1-08002be10318ClassName = NetClient, Description = network client, id = 4d36e973-e325-11ce-bfc1-08002be10318ClassName = NetService, Description = network services, id = 4d36e974-e325-11ce-bfc1-08002be10318ClassName = NetTrans, Description = network protocol, id = 4d36e975-e325 -11ce-bfc1-08002be10318

ClassName = PCMCIA, Description = PCMCIA cards, id = 4d36e977-e325-11ce-bfc1-08002be10318ClassName = Ports, Description = ports (COM and LPT), id = 4d36e978-e325-11ce-bfc1-08002be10318ClassName = Printer, Description = printer, id = 4d36e979-e325-11ce-bfc1-08002be10318ClassName = SCSIAdapter, Description = SCSI and RAID controllers, id = 4d36e97b-e325-11ce-bfc1-08002be10318ClassName = system, Description = system equipment, id = 4d36e97d-e325-11ce-bfc1 -08002be10318ClassName = Unknown, Description = other devices, id = 4d36e97e-e325-11ce-bfc1-08002be10318ClassName = floppyDisk, Description = floppy disk drive, id = 4d36e980-e325-11ce-bfc1-08002be10318ClassName = processor, Description = processor, id = 50127dc3-0f36-415e-a6cc-4cb3be910b65ClassName = MultiPortSerial, Description = multiport serial cards, id = 50906cb8-ba12-11d1-bf5d-0000f805f530ClassName = SmartCardReader, Description = smart card reader, id = 50dd5230-ba8a-11d1-bf5d-0000f805f530ClassName = VolumeSnapshot, Description = shadow copy storage volume, id = 533c5b84-ec70-11d2-9505-00c04f79deafClassName = Biometric, Description = Personal identification devices, id = 53d29ef7-377c-4d14-864b-eb3a85769359ClassName = 1394, Description = IEEE 1394 bus master controller, id = 6bdd1fc1-810f-11d0-bec7-08002be2092fClassName = Infrared, Description = infrared device, id = 6bdd1fc5-810f-11d0-bec7-08002be2092fClassName = Image, Description = image processing apparatus, id = 6bdd1fc6-810f-11d0-bec7-08002be2092fClassName = TapeDrive, Description = tape drive, id = 6d807884-7d21-11cf-801c-08002be10318ClassName = volume, Description = storage volume, id = 71a27cdd-812a-11d0-bec7-08002be2092fClassName = Battery, Description = battery, ID = 72631E54-78A4-11D0-BCF7-00AA00B7B32ACLASSNAME = HIDCLASS, DESCRIPTION = Human Interface Equipment, ID =

转载请注明原文地址:https://www.9cbs.com/read-95371.html

New Post(0)