为啥NT式驱动打开2次 就失败
为什么NT式驱动打开2次 就失败?
#include <windows.h>
#include <stdio.h>
int main()
{
HANDLE hDevice =
CreateFile("\\\\.\\HelloDDKB",
GENERIC_READ | GENERIC_WRITE,
0, // share mode none
NULL, // no security
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL ); // no template
if (hDevice == INVALID_HANDLE_VALUE)
{
printf("Failed to obtain file handle to device "
"with Win32 error code: %d\n",
GetLastError() );
return 1;
}
HANDLE hDevice1 =
CreateFile("\\\\.\\HelloDDKB",
GENERIC_READ | GENERIC_WRITE,
0, // share mode none
NULL, // no security
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL ); // no template
if (hDevice1 == INVALID_HANDLE_VALUE)
{
printf("Failed to obtain file handle to device "
"with Win32 error code: %d\n",
GetLastError() );
return 1;
}
DWORD dRet;
ReadFile(hDevice,NULL,0,&dRet,NULL);
CloseHandle(hDevice);
return 0;
}
当我调用第二次CreateFile时候,我就失败。失败码是5。
求高手指点迷津
------解决方案--------------------
记得设备是只能打开一次的,打开就是占用了,你再打开是不行的吧。
------解决方案--------------------
你可以试着把第三个参数改一下,0是独占的。改成 FILE_SHARE_READ
------解决方案--------------------
FILE_SHARE_WRITE
如果还不行,我也没办法了。
------解决方案--------------------
两个的都要改成FILE_SHARE_READ
------解决方案--------------------
FILE_SHARE_WRITE
------解决方案--------------------
第二次CreateFile之前,先CloseHandle之前的
------解决方案--------------------
这是驱动本身决定的吧
文件确实可以共享访问
但是串口就不支持多次打开啊
#include <windows.h>
#include <stdio.h>
int main()
{
HANDLE hDevice =
CreateFile("\\\\.\\HelloDDKB",
GENERIC_READ | GENERIC_WRITE,
0, // share mode none
NULL, // no security
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL ); // no template
if (hDevice == INVALID_HANDLE_VALUE)
{
printf("Failed to obtain file handle to device "
"with Win32 error code: %d\n",
GetLastError() );
return 1;
}
HANDLE hDevice1 =
CreateFile("\\\\.\\HelloDDKB",
GENERIC_READ | GENERIC_WRITE,
0, // share mode none
NULL, // no security
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL ); // no template
if (hDevice1 == INVALID_HANDLE_VALUE)
{
printf("Failed to obtain file handle to device "
"with Win32 error code: %d\n",
GetLastError() );
return 1;
}
DWORD dRet;
ReadFile(hDevice,NULL,0,&dRet,NULL);
CloseHandle(hDevice);
return 0;
}
当我调用第二次CreateFile时候,我就失败。失败码是5。
求高手指点迷津
------解决方案--------------------
记得设备是只能打开一次的,打开就是占用了,你再打开是不行的吧。
------解决方案--------------------
你可以试着把第三个参数改一下,0是独占的。改成 FILE_SHARE_READ
------解决方案--------------------
FILE_SHARE_WRITE
如果还不行,我也没办法了。
------解决方案--------------------
两个的都要改成FILE_SHARE_READ
------解决方案--------------------
FILE_SHARE_WRITE
------解决方案--------------------
第二次CreateFile之前,先CloseHandle之前的
------解决方案--------------------
这是驱动本身决定的吧
文件确实可以共享访问
但是串口就不支持多次打开啊