Создать файл в C#
Я использую CreateFile
функция для создания HID Device Handle. Ниже приведен пример кода. После выполнения кода я всегда получаю значение HidHandle -1
, чего не должно быть. Любые предложения, пожалуйста.
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
);
призвание GetLastWin32Error()
возвращает значение 5
,
2 ответа
CreateFile
возвращается INVALID_HANDLE_VALUE
что указывает на неудачу. Вы тогда звоните GetLastWin32Error()
который возвращает 5. Это ERROR_ACCESS_DENIED
, Другими словами, у вашего процесса недостаточно прав для открытия этого файла.
Попробуйте изменить это на
public int CreateFile(string FileName)
{
return CreateFile(FileName,GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
}
CreateFile не является экспортируемой функцией из kernel32.dll. Kernel32.dll экспортирует либо CreateFileW, либо CreateFileA.
Вы должны использовать
[DllImport("Kernel32.dll", SetLastError = истина)] частных статических ехЬегп ИНТ CreateFileW(
[MarshalAs(UnmanagedType.LPWStr)] строка lpFileName,
UINT dwDesiredAccess,
UINT dwShareMode,
IntPtr lpSecurityAttributes,
UINT dwCreationDisposition,
UINT dwFlagsAndAttributes,
IntPtr hTemplateFile
);