Files
hakril-PythonForWindows/samples/device_manager/enum_devices.py
T

49 lines
1.6 KiB
Python

import argparse
import windows
import windows.generated_def as gdef
devmgr = windows.system.device_manager
def class_generator(filter=None):
for cls in devmgr.classes:
if filter and cls.name != filter:
continue
yield cls
def main(clsfilter, enumerate_devices, print_devinst_resources):
for devcls in class_generator(clsfilter):
print(devcls)
if not enumerate_devices:
continue
# Enumerate devices
for devinst in devcls.devices:
print(" * {0}".format(devinst))
if not print_devinst_resources:
continue
# Device resources
devconf = devinst.allocated_configuration
if not devconf:
# No allocated configuration
# Check boot conf ?
continue
for resource in devconf.resources:
print(" * {0}".format(resource))
if __name__ == "__main__":
parser = argparse.ArgumentParser(prog=__file__, formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("--class", dest="clsfilter", default=None, help="The classe to list: default all")
parser.add_argument("--no-print-devices", action="store_true", help="Prevent the listing of devices in the matching classes")
parser.add_argument("--print-resources", action="store_true", help="Print the resources allocated to the device instance")
args = parser.parse_args()
print(args)
main(args.clsfilter,
enumerate_devices=not args.no_print_devices,
print_devinst_resources=args.print_resources)