找回密码
 注册
搜索
楼主: cuijw

[讨论] 如何编程实现Windows自动停止U盘?

[复制链接]
发表于 2006-5-1 00:48:00 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>gjinxue</I>在2006-4-20 14:58:00的发言:</B>



你还使用"网络执法官".你太恨了</DIV>


呵呵! 没有办法啊!
点评回复

使用道具 举报

发表于 2006-5-26 05:01:00 | 显示全部楼层
我手头有一个   你要是要发个邮件给我   我发给你    loveryun120223@yahoo.com.cn
点评回复

使用道具 举报

发表于 2006-6-29 13:16:00 | 显示全部楼层
<P>大家参考一下吧!</P><P>int EjectUSBDevice()
{   
   HDEVINFO hDevInfo;   
   SP_DEVINFO_DATA DeviceInfoData;
   DWORD i;</P><P>   
   hDevInfo = SetupDiGetClassDevs((LPGUID)&amp;GUID_CLASS_USB_DEVICE,
       0,
       0,
       DIGCF_PRESENT | DIGCF_DEVICEINTERFACE );
   if (hDevInfo == INVALID_HANDLE_VALUE)
   {      
       ::AfxMessageBox("ERROR - SetupDiGetClassDevs()");
       return 1;
   }
   
   DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
   CString cc;
   for (i=0;SetupDiEnumDeviceInfo(hDevInfo, i, &amp;DeviceInfoData);i++)
   {
  cc = DeviceInfoData.ClassGuid.Data4;
  if(cc.Find("VDEST") == -1)
   continue;
        LPTSTR buffer = NULL;
        PVOID buffer2 = NULL;
        DWORD buffersize = 0;
        ULONG len;
        CONFIGRET   cr;
        PNP_VETO_TYPE pnpvietotype;
        CHAR vetoname[MAX_PATH];
        ULONG ulStatus;
        ULONG ulProblemNumber;</P><P>        cr = CM_Get_DevNode_Status( &amp;ulStatus,
                                    &amp;ulProblemNumber,
                                    DeviceInfoData.DevInst,
                                    0);
        if ( CR_SUCCESS == cr )
        {
            TRACE("OK - CM_Get_DevNode_Status()[%d]\n", cr);
            TRACE("OK - CM_Get_DevNode_Status() sts [%x]\n", ulStatus);
            TRACE("OK - CM_Get_DevNode_Status() pro [%x]\n", ulProblemNumber);
        } else
        {
            TRACE("ERROR - CM_Get_DevNode_Status()[%d]\n", cr);
            TRACE("ERROR - CM_Get_DevNode_Status()[%d]\n", GetLastError());
        }
        if ((DN_DISABLEABLE &amp; ulStatus ) != 0 )
        {
            TRACE("- DN_DISABLEABLE()[%x]\n", DN_DISABLEABLE &amp; ulStatus);
        } else
        {
           continue;
        }
        
        if ((DN_REMOVABLE &amp; ulStatus ) != 0 )
        {
            TRACE("- DN_REMOVABLE()[%x]\n", DN_REMOVABLE &amp; ulStatus);
        }
        else
        {
           continue;
        }</P><P>        len = MAX_PATH;
        // pnpvietotype = PNP_VetoDevice;
        cr = CM_Request_Device_Eject(DeviceInfoData.DevInst,
             &amp;pnpvietotype,
                                     vetoname,
                                     len,
                                     0);
        if ( CR_SUCCESS == cr )
        {
            TRACE("OK - CM_Request_Device_Eject()[%d]\n", cr);
        }
        else
        {
            TRACE("ERROR - CM_Request_Device_Eject()[%d]\n", cr);
            TRACE("ERROR - CM_Request_Device_Eject()[%d]\n", GetLastError());
   return 1;
        }
   }
      
      
   if ( GetLastError()!=NO_ERROR &amp;&amp; GetLastError()!=ERROR_NO_MORE_ITEMS )
   {
       // Insert error handling here.
       return 1;
   }
      
   //Cleanup
   SetupDiDestroyDeviceInfoList(hDevInfo);</P><P>   return 0;
}</P>[br]<p align=right><font color=red>+3 RD币</font></p>
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-9-23 22:31 , Processed in 0.045186 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表