@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: Retrieves the base name of the specified device driver. !!!!C# Signature: [DllImport("psapi")] private static extern int GetDeviceDriverBaseName( UInt32 ddAddress, StringBuilder ddBaseName, int baseNameStringSizeChars ); !!!!VB Signature: Declare Function GetDeviceDriverBaseName Lib "psapi.dll" (TODO) As TODO !!!!User-Defined Types: None. !!!!Alternative Managed API: Do you know one? Please contribute it! !!!!Notes: This function takes a 'load address' that needs to be obtained from EnumDeviceDrivers. !!!!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 ); static void Main(string[] args) { UInt32 arraySize; UInt32 arraySizeBytes; UInt32[] ddAddresses; UInt32 bytesNeeded; bool success; // Figure out how large an array we need to hold the device driver 'load addresses' success = EnumDeviceDrivers(null, 0, out bytesNeeded); Console.WriteLine("Success? " + success); Console.WriteLine("Array bytes needed? " + bytesNeeded); 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); Console.WriteLine("Device driver LoadAddress: " + ddAddresses[i] + ", BaseName: " + sb.ToString()); } } } } Documentation: GetDeviceDriverBaseName@msdn on MSDN
Edit psapi.GetDeviceDr...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.