2010-01-09 6 views
13

C# .net을 사용하여 응용 프로그램을 만들고 있습니다. 여기에는 파일 시스템 미니 필터 드라이버도 들어 있습니다. 이 드라이버를 프로그래밍 방식으로 설치하고 제거하려면 C# .net을 사용하십시오. 일반적으로이 .INF 파일을 사용하여 설치할 수 있습니다 (마우스 오른쪽 단추로 + 설치를 눌러). 그러나이 프로그래밍 방식으로 설치하고 싶습니다. .inf 드라이버를 설치하기위한 InstallHinfSection() SDK 함수가 있습니다. 이 함수는 .net 이에 상응하는 찾고 있어요.C# .net을 사용하여 프로그래밍 방식으로 .inf 드라이버 설치/제거

감사

Navaneeth는

답변

23

이 같은 것을보십시오 :

using System.Runtime.InteropServices; 

[DllImport("Setupapi.dll", EntryPoint="InstallHinfSection", CallingConvention=CallingConvention.StdCall)] 
public static extern void InstallHinfSection(
    [In] IntPtr hwnd, 
    [In] IntPtr ModuleHandle, 
    [In, MarshalAs(UnmanagedType.LPWStr)] string CmdLineBuffer, 
    int nCmdShow); 

가 그 다음 전화 :

InstallHinfSection(IntPtr.Zero, IntPtr.Zero, "my path", 0); 

내가 P/Invoke Signature Generator를 사용하여이 서명의 대부분을 생성.

이 방법과 매개 변수의 전체 세부 사항은 MSDN입니다. MSDN에 따르면 첫 번째 매개 변수는 null 일 수 있으며 두 번째 매개 변수는 이어야하며은 null이어야하며 마지막 매개 변수 이어야합니다. 문자열 매개 변수 만 전달하면됩니다.

+0

날 위해 일했습니다. – Navaneeth

+0

하나도 존재하지 않습니다. P/호출해야합니다. – Eilon

+4

명확히해야합니다. .NET Framework에는이 API의 관리 코드 버전이 포함되어 있지 않습니다. .NET Framework에는 드라이버 설치 API와 같은 저수준 Win32 API를 래핑하는 API가 거의 없습니다. P/Invoke 메서드를 선언하면 관리되는 코드에서 네이티브 Win32 API를 직접 호출 할 수 있습니다. – Eilon

4

이 간단한 코드 나는이 네이티브 API를위한 .NET 동등한 찾고 있었다

private void driverInstall() 
    { 

     var process = new Process(); 
     process.StartInfo.UseShellExecute = false; 
     process.StartInfo.CreateNoWindow = true; 
     process.StartInfo.RedirectStandardOutput = true; 
     process.StartInfo.RedirectStandardError = true; 
     process.StartInfo.FileName = "cmd.exe"; 

     process.StartInfo.Arguments = "/c C:\\Windows\\System32\\InfDefaultInstall.exe " + driverPath; // where driverPath is path of .inf file 
     process.Start(); 
     process.WaitForExit(); 
     process.Dispose(); 
     MessageBox.Show(@"Driver has been installed"); 
    } 
관련 문제