C# 응용 프로그램의 Kernel32.dll에서 CreateFile 메서드를 호출하려고하는데 잘못된 핸들을 반환하고 있습니다. 나는이 문제를 해결하지 못했습니다.C#의 Windows CreateFile이 잘못된 핸들을 반환합니다.
상수 :
const UInt64 GENERIC_READ = 0x80000000L;
const UInt64 GENERIC_WRITE = 0x40000000L;
const UInt64 GENERIC_EXECUTE = 0x20000000L;
const UInt64 GENERIC_ALL = 0x10000000L;
const uint FILE_SHARE_READ = 0x00000001;
const uint FILE_SHARE_WRITE = 0x00000002;
const uint OPEN_EXISTING = 0x00000003;
const uint FILE_FLAG_DELETE_ON_CLOSE = 0x04000000;
방법을 가져 오기 : 여기에 관련 코드로드하기
[DllImport("kernel32.dll", SetLastError = true)]
static extern unsafe SafeFileHandle CreateFile(
string FileName,
ulong DesiredAccess,
uint ShareMode,
IntPtr SecurityAttributes,
uint CreationDisposition,
uint FlagsAndAttributes,
IntPtr hTemplateFile
);
SafeFileHandle JFifoDrv = LoadDriver();
방법은 드라이버 :
는unsafe private SafeFileHandle LoadDriver()
{
SafeFileHandle hDrv = (SafeFileHandle)null;
try
{
hDrv = CreateFile("\\\\.\\JFIFODRV",
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
(IntPtr)null,
OPEN_EXISTING,
FILE_FLAG_DELETE_ON_CLOSE,
(IntPtr)null);
DriverLoaded = true;
}
catch
{
poll.Stop();
DriverLoaded = false;
}
return hDrv;
}
는 사람은 나에게 문제를 알아내는 데 도움이 수 ?
그게 문제였습니다. 고마워. 끊임없는 선언이 길다는 사실은 저를 버렸습니다. – Luke