小编pja*_*all的帖子

用于Windows CE的snprintf

我的程序在几个平台上运行.其中,Windows CE.目前,sprintf被广泛使用,导致缓冲区溢出等问题很多.我想用snprintf调用替换它们.对于Visual Studio,我发现了这个问题,它解决了问题的win32部分:

snprintf和Visual Studio 2010

但我不能让它适用于Windows CE,因为函数_vsnprintf_s_vscprintf,以及常量_TUNCATE都不可用.有人知道在Windows CE上复制snprintf(linux)行为的方法吗?

c printf windows-ce visual-studio

5
推荐指数
1
解决办法
612
查看次数

设备驱动程序:Windows ReadFile 函数超时

我正在使用的设备驱动程序偶尔会错过来自硬件的中断。

要从设备读取数据,我使用该函数

  BOOL WINAPI ReadFile(
   __in         HANDLE hFile,
   __out        LPVOID lpBuffer,
   __in         DWORD nNumberOfBytesToRead,
   __out_opt    LPDWORD lpNumberOfBytesRead,
   __inout_opt  LPOVERLAPPED lpOverlapped
  ); 
Run Code Online (Sandbox Code Playgroud)

当设备驱动程序错过中断时,此函数将永远阻塞。这会导致程序停止运行,必须重新启动 Windows 才能解决该问题。

为了解决这个问题,我想在调用 Readfile() 时使用超时限制。但是当我使用

  BOOL WINAPI SetCommTimeouts(
   __in  HANDLE hFile,
   __in  LPCOMMTIMEOUTS lpCommTimeouts
  );
Run Code Online (Sandbox Code Playgroud)

它失败并显示错误代码 87(无效参数)。显然,我不能在设备驱动程序句柄上使用这个超时的东西。我怎样才能解决这个问题?是否有其他方法可以在设备驱动程序上设置超时限制?

谢谢

c++ windows timeout device-driver readfile

2
推荐指数
1
解决办法
5635
查看次数