检测从Windows服务的SD卡插入?

检测从Windows服务的SD卡插入?,第1张

概述检测从Windows服务的SD卡插入

我需要从windows服务中检测可移动媒体插入。 使用一个不可见的窗口,我可以使用RegisterDeviceNotification成功检测到USB thumbdrives,但SD卡certificate更加困难。 我发现使用SHChangeNotifyRegister代码,但进一步调查后,我只能从窗口应用程序得到它的工作。

(从codeprojectfind代码: http : //www.codeproject.com/Articles/3946/TrapPing-windows-messages? msg = 2897423#xx2897423xx)

namespace globals{ SHChangeNotifyEntry shcne[1]; } ... globals::shcne[0].pIDl = NulL; globals::shcne[0].fRecursive = TRUE; globals::hNotify = SHChangeNotifyRegister(globals::hwnd,SHCNE_disKEVENTS,SHCNE_MEDIAINSERTED | SHCNE_MEDIAREMOVED,WM_MEDIA_CHANGE,1,globals::shcne);

我收到的错误是

122(ERROR_INSUFFICIENT_BUFFER – “传递给系统调用的数据区域太小”)

作为Upstart服务启动时,无法读取UTF-8文件名

什么时候我们应该在IIS中托pipeWCF服务,什么时候我们应该托pipe一个windows服务?

windows服务可以接收windows消息吗?

windows服务权限来读取共享文件夹

Systemctl依赖性失败,停止依赖服务

尽pipe调用是相同的,我的Win32,窗口应用程序testing程序中不会发生此错误。

编辑:我已经通过注册服务与SERVICE_INteraCTIVE_PROCESS标志解决了错误消息(sorting),但我仍然没有收到我的WndProc消息。

我将不胜感激任何帮助。

收集每个服务的显示名称和状态

如何只知道.exe文件的名称在cmd中停止服务?

尝试写入文件夹时,C#windows服务访问被拒绝

如何在CreateEvent的SDDLstring中添加同步权限

windows服务通信,套接字,C#

即使我在这里复活旧线:

只需使用DEVICE_NOTIFY_SERVICE_HANDLE使用RegisterDeviceNotification ,你当然必须通过RegisterServiceCtrlHandlerEx来注册你的ControlHandler,并且不要忘记这个句柄需要在开始服务之前注册(也提到@ MSDN)。 您可以安全地将函数指针转换为LPHANDLER_FUNCTION_EX ,只要您的函数签名与MSDN示例匹配,这些类型转换通常都是安全的。

最后,您现在可以使用GUID_DEVINTERFACE_SMARTCARD_READER作为RegisterDeviceNotification参数

您的回调必须具有此签名: http : //msdn.microsoft.com/en-us/library/windows/desktop/ms683241(v=vs.85).aspx

总结

以上是内存溢出为你收集整理的检测从Windows服务的SD卡插入?全部内容,希望文章能够帮你解决检测从Windows服务的SD卡插入?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1284114.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存