none
c# code에서 디바이스 드라이버를 Install/UnInstall 하는 방법 문의 드립니다. RRS feed

  • 질문

  • 안녕하세요.

    c#에서 디바이스 드라이버를 설치 하는 방법 좀 알려주세요.

    Googling을 해보니..

    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); 

    위와 같은 방법이 있더라구요.

    inf 파일과 sys 파일의 위치는 실행 폴더와 동일한 위치로 하고,

    "my path" 라고 되어 있는 부분만, InstallHinfSection(IntPtr.Zero, IntPtr.Zero, Application.StartupPath, 0); 로 바꾸었습니다.

    그런데 잘 안되서 문의 드립니다.

    도와주세요.

    2012년 11월 26일 월요일 오전 2:24

답변

  • 그럼, 일단 C# 이라는 것은 잊고 rundll32로 실행해 보세요.

    InstallHinfSection Function
    ; http://msdn.microsoft.com/en-us/library/aa376957(v=vs.85).aspx

    위의 글에 보면 rundll32로 직접 실행하는 방법을 보여주고 있습니다. 위의 방법으로 잘 된다면 C# 에서 P/Invoke 를 잘못 호출한 것이겠지만, 여전히 안된다면 작성하신 INF 파일에 문제가 없는지 확인이 필요할 것 같습니다.

    • 답변으로 표시됨 SEOinETRI 2012년 11월 29일 목요일 오전 9:53
    2012년 11월 29일 목요일 오전 3:16

모든 응답

  • http://blogs.msdn.com/b/adam_nathan/archive/2003/04/25/56643.aspx

    위의 글을 참고하시면 Win32 Error 코드를 받을 수 있는데요. 무슨 값이 나오는지 확인해 보세요.

    2012년 11월 27일 화요일 오전 1:59
  • 답변 감사드립니다.

                InstallHinfSection(IntPtr.Zero, IntPtr.Zero, Application.StartupPath + "/cyusb3.inf", 0);
                MessageBox.Show(Marshal.GetLastWin32Error().ToString());

    에러 코는 0 이 나왔습니다.

    에러가 없다는 말인것 같은데, 장치 관리자에서 확인해보면 드라이버 설치가 이루어지지 않은 상태(느낌표)로 남아 있습니다.

    2012년 11월 27일 화요일 오전 3:20
  • 그럼, 일단 C# 이라는 것은 잊고 rundll32로 실행해 보세요.

    InstallHinfSection Function
    ; http://msdn.microsoft.com/en-us/library/aa376957(v=vs.85).aspx

    위의 글에 보면 rundll32로 직접 실행하는 방법을 보여주고 있습니다. 위의 방법으로 잘 된다면 C# 에서 P/Invoke 를 잘못 호출한 것이겠지만, 여전히 안된다면 작성하신 INF 파일에 문제가 없는지 확인이 필요할 것 같습니다.

    • 답변으로 표시됨 SEOinETRI 2012년 11월 29일 목요일 오전 9:53
    2012년 11월 29일 목요일 오전 3:16