About HW Enumerations on User-Mode

I dont want to use WMI. How can i get datas of :

  1. RAM
  2. Ethernet
  3. Harddisk and other optical disks on my system
  4. PCI Devices
  5. USB Devices

I ve previously done PCI and USB devices with kernel-mode code , also i ve searched for SetupDiAPI but i am not sure these can be done with it.

Thank you very much.