2012-09-19 2 views
1

나는 CreateFile 함수를 사용하여 HID 장치 핸들을 만듭니다. 다음은 샘플 코드입니다. 코드를 실행 한 후에는 항상 HidHandle 값 -1을 가져오고 있습니다. 어떤 제안을하시기 바랍니다. GetLastWin32Error() 반환 값 5를 호출CreateFile in C#

public int CreateFile(string FileName) 
{ 
    HidHandle = CreateFile(FileName,GENERIC_READ | GENERIC_WRITE, 
     FILE_SHARE_READ | FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);   
} 

[DllImport("kernel32.dll", SetLastError = true)] 
    private static extern int CreateFile(
     string lpFileName,       
     uint dwDesiredAccess,      
     uint dwShareMode,       
     uint lpSecurityAttributes,    
     uint dwCreationDisposition,     
     uint dwFlagsAndAttributes,     
     uint hTemplateFile       
     ); 

.

+1

에 그 변경으로 더 나은뿐만 아니라 호출을 추가하려고합니다. –

+2

더 자세한 오류 정보를 얻기 위해 GetLastError를 호출 해 보셨습니까? –

+0

[page at pinvoke.net] (http://www.pinvoke.net/default.aspx/kernel32.createfile)에는 더 많은 정보를 얻기 위해 약간 다른 sig와 샘플이 있습니다. –

답변

4

CreateFile은 오류를 나타내는 INVALID_HANDLE_VALUE을 반환합니다. 그런 다음 GetLastWin32Error()을 호출하여 5를 반환합니다. 이것은 ERROR_ACCESS_DENIED입니다. 즉, 프로세스에 해당 파일을 여는 데 필요한 권한이 없습니다.

1

public int CreateFile(string FileName) 
{ 
    return CreateFile(FileName,GENERIC_READ | GENERIC_WRITE, 
     FILE_SHARE_READ | FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);   
} 
+0

어, 그건 정확히 똑같은 코드입니다! –