Type a page name and press Enter. You'll jump to the page if it exists, or you can create it if it doesn't.
To create a page in a module other than psapi, prefix the name with the module name and a period.
Remember, this ONLY enumerates device drivers that are currently loaded. If a plug-n-play device is not inserted, its driver probably won't be enumerated by EnumDeviceDrivers. With the 'load addresses' returned by this function, you can get the drivers' base names using the GetDeviceDriverBaseName function.
Tips & Tricks:
Please add some!
Sample Code:
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EnumDriversTest
{
class Program {
[DllImport("psapi")]
private static extern bool EnumDeviceDrivers(
[MarshalAs(UnmanagedType.LPArray, ArraySubType = UnmanagedType.U4)] [In][Out] UInt32[] ddAddresses,
UInt32 arraySizeBytes,
[MarshalAs(UnmanagedType.U4)] out UInt32 bytesNeeded
);
[DllImport("psapi")]
private static extern int GetDeviceDriverBaseName(
UInt32 ddAddress,
StringBuilder ddBaseName,
int baseNameStringSizeChars
);
if (!success) {
Console.WriteLine("Call to EnumDeviceDrivers failed! To get extended error information, call GetLastError.");
return;
}
if (bytesNeeded == 0) {
Console.WriteLine("Apparently, there were NO device drivers to enumerate. Strange.");
return;
}
// Allocate the array; as each ID is a 4-byte int, it should be 1/4th the size of bytesNeeded
arraySize = bytesNeeded / 4;
arraySizeBytes = bytesNeeded;
ddAddresses = new UInt32[arraySize];
// Now fill it
success = EnumDeviceDrivers(ddAddresses, arraySizeBytes, out bytesNeeded);
if (!success) {
Console.WriteLine("Call to EnumDeviceDrivers failed! To get extended error information, call GetLastError.");
return;
}
for (int i=0; i < arraySize; i++) {
// If the length of the device driver base name is over 1000 characters, good luck to it. :-)
StringBuilder sb = new StringBuilder(1000);
int result = GetDeviceDriverBaseName(ddAddresses[i], sb, sb.Capacity);
Retrieves the load address for each device driver in the system.
11/12/2013 11:01:08 AM - -161.69.67.20
Retrieves the base name of the specified device driver.
7/14/2009 4:32:22 AM - jez9999-194.73.110.34
Please edit this page!
Do you have...
helpful tips or sample code to share for using this API in managed code?
corrections to the existing content?
variations of the signature you want to share?
additional languages you want to include?
Select "Edit This Page" on the right hand toolbar and edit it! Or add new pages containing supporting types needed for this API (structures, delegates, and more).