在驱动中使用RegistryNotifyCallback导致驱动加载不了!

arvinchang   2010-1-7 21:20 楼主
想在注册表中检测手机的打电话的状态,在驱动中调用RegistryNotifyCallback,但发现一直加载不了(logo都没打印),搞了好久了,哎,各位大侠做过的指点一下吧,谢谢了!!!

  1. DWORD WINAPI ThreadProc(
  2.                         LPVOID lpParameter
  3.                         )
  4. {
  5.         HKEY hKey=NULL;
  6.         RegOpenKeyEx(HKEY_LOCAL_MACHINE,L"System\\State\\Phone",0,0,&hKey);
  7.         printf("Enter ThreadProcThreadProc$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n\n\n\n\n\n\n\n\n\n\n");
  8.         if(hKey != NULL)
  9.         {
  10.                 printf("Enter hKeyhKeyhKeyhKey$$$$$$$$$$$$$$$$$$$$$$$$$$$\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
  11.                 while(!IsAPIReady(SH_SHELL) || !IsAPIReady(SH_WMGR) || !IsAPIReady(SH_GDI))
  12.                 {
  13.                         Sleep(250);
  14.                 }
  15.                 printf("Sleep Over....Sleep Over....Sleep Over....Sleep Over....Sleep Over....\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
  16.                 UpdatePowerKeyFunc();
  17.                 RegistryNotifyCallback(hKey,L"System\\States\\Phone",L"Status",RegistryNotifyCallbackFunc,0,NULL,&g_hNotify);
  18.                 WaitForSingleObject(g_hevent,INFINITE);
  19.                 RegistryCloseNotification(g_hNotify);
  20.                 RegCloseKey(hKey);
  21.         }
  22.         return 0;
  23. }

我是在驱动中开了一个专门的线程来调用RegistryNotifyCallback的。其中的logo都打印不出来。

回复评论 (4)

我顶!
点赞  2010-1-8 10:44
哦吼,搞定!
点赞  2010-1-8 14:50
LZ可以总结一下经验,方便我们后来人撒~~~
点赞  2010-1-9 21:12
引用: 引用 3 楼 xilidecai 的回复:
LZ可以总结一下经验,方便我们后来人撒~~~

动态加载这个函数RegistryNotifyCallback
点赞  2010-1-16 17:03
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复