@msdn=http://msdn2.microsoft.com/en-us/library/aa376997(VS.85).aspx @pinvoke=http://pinvoke.net/$$$.htm Summary: returns the location of the next line in an INF file section relative to ContextIn.Line. !!!!C# Signature: [DllImport("setupapi.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool SetupFindNextLine(ref INFCONTEXT ContextIn, out INFCONTEXT ContextOut); !!!!VB Signature: Public Declare Auto Function SetupFindNextLine Lib "setupapi.dll" (ByRef ContextIn As INFCONTEXT, ByRef ContextOut As INFCONTEXT) As Boolean !!!!User-Defined Types: [INFCONTEXT] !!!!Alternative Managed API: Do you know one? Please contribute it! !!!!Notes: Parameters ||ContextIn || Pointer to the INF file context retrieved by a call to the SetupFindFirstLine function.|| ||ContextOut || Pointer to a variable in which this function returns the context of the found line. ContextOut can point to ContextIn if the caller wishes.|| Return Value If this function finds the next line, the return value is a nonzero value. Otherwise, the return value is zero. To get extended error information, call GetLastError. !!!!Tips & Tricks: If ContextIn.Line references multiple INF files that have been appended together using SetupOpenAppendInfFile, this function searches across the specified section in all files referenced by the HINF to locate the next line. !!!!Sample Code: C# string infFile = <INF file full path>; uint ErrorLine = 0; IntPtr infHandle = SetupOpenInfFile(infFile, null, INF_STYLE_OLDNT | INF_STYLE_WIN4, out ErrorLine); int iCode = Marshal.GetLastWin32Error(); if (infHandle.ToInt64() != INVALID_HANDLE_VALUE) { Console.WriteLine("INF file was opened successfully."); INFCONTEXT Context = new INFCONTEXT(); if (SetupFindFirstLine(infHandle, "Manufacturer", null, ref Context) == true) { Console.WriteLine("Manufacturers list:"); string manufacturerName = ""; manufacturerName = manufacturerName.PadLeft(256, ' '); Int32 requiredSize = manufacturerName.Length; SetupGetStringField(ref Context, 1, manufacturerName, manufacturerName.Length, out requiredSize); manufacturerName = manufacturerName.Substring(0, requiredSize-1); Console.WriteLine(manufacturerName); while(SetupFindNextLine(ref Context, out Context) == true) { manufacturerName = manufacturerName.PadLeft(256, ' '); requiredSize = manufacturerName.Length; SetupGetStringField(ref Context, 1, manufacturerName, manufacturerName.Length, out requiredSize); manufacturerName = manufacturerName.Substring(0, requiredSize - 1); Console.WriteLine(manufacturerName); } } else { Console.WriteLine("Can't find [Manufacturer] section."); } SetupCloseInfFile(infHandle); } else { Console.WriteLine("Failed to open INF file. Error code - {0}.", iCode); if (ErrorLine != 0) { Console.WriteLine("Failure line - {0}.", ErrorLine); } } VB Dim infFile As String = <INF file full path> Dim ErrorLine As UInt32 = 0 Dim infHandle As IntPtr = SetupOpenInfFile(infFile, Nothing, INF_STYLE_OLDNT Or INF_STYLE_WIN4, ErrorLine) Dim iCode As Integer = Marshal.GetLastWin32Error() If infHandle.ToInt64() <> INVALID_HANDLE_VALUE Then Console.WriteLine("INF file was opened successfully.") Dim Context As INFCONTEXT = New INFCONTEXT() If SetupFindFirstLine(infHandle, "Manufacturer", Nothing, Context) = True Then Console.WriteLine("Manufacturers list:") Dim manufacturerName As String = "" manufacturerName = manufacturerName.PadLeft(256, " "c) Dim requiredSize As Int32 = manufacturerName.Length SetupGetStringField(Context, 1, manufacturerName, manufacturerName.Length, requiredSize) manufacturerName = manufacturerName.Substring(0, requiredSize - 1) Console.WriteLine(manufacturerName) While SetupFindNextLine(Context, Context) = True manufacturerName = manufacturerName.PadLeft(256, " "c) requiredSize = manufacturerName.Length SetupGetStringField(Context, 1, manufacturerName, manufacturerName.Length, requiredSize) manufacturerName = manufacturerName.Substring(0, requiredSize - 1) Console.WriteLine(manufacturerName) End While Else Console.WriteLine("Can't find [Manufacturer] section.") End If SetupCloseInfFile(infHandle) Else Console.WriteLine("Failed to open INF file. Error code - {0}.", iCode) If ErrorLine <> 0 Then Console.WriteLine("Failure line - {0}.", ErrorLine) End If End If Documentation: SetupFindNextLine@msdn on MSDN
Edit setupapi.SetupFin...
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.