热插拔的设备的拔出与插入的响应

    case WM_DEVICECHANGE:
        {
                DbgPrint(_T("WM_DEVICECHANGE/n"));
                switch (wParam)
                {
                case DBT_DEVICEARRIVAL:
                    {
                        PDEV_BROADCAST_HDR pDBHdr = (PDEV_BROADCAST_HDR)lParam;
                        switch(pDBHdr->dbch_devicetype)
                        {
                        case DBT_DEVTYP_DEVICEINTERFACE:
                            {
                                PDEV_BROADCAST_DEVICEINTERFACE pDBInteface = (PDEV_BROADCAST_DEVICEINTERFACE)pDBHdr;

                                LPOLESTR pGuid = NULL;
                                StringFromCLSID(pDBInteface->dbcc_classguid,&pGuid);

                                DbgPrint(_T("DBT_DEVTYP_DEVICEINTERFACE,Device CLSID = %s,Device Name = %s/n"),pGuid,pDBInteface->dbcc_name);
                                CoTaskMemFree(pGuid);                           

                                break;
                            }
                        case DBT_DEVTYP_HANDLE:
                            {
                                PDEV_BROADCAST_HANDLE pDBHandler = (PDEV_BROADCAST_HANDLE)pDBHdr;

                                LPOLESTR pGuid = NULL;
                                StringFromCLSID(pDBHandler->dbch_eventguid,&pGuid);

                                DbgPrint(_T("DBT_DEVTYP_HANDLE,Device CLSID = %s/n"),pGuid);
                                CoTaskMemFree(pGuid);
                                break;
                            }
                        case DBT_DEVTYP_OEM:
                            DbgPrint( _T("DBT_DEVTYP_OEM!/n"));
                            break;
                        case DBT_DEVTYP_PORT:
                            {
                                PDEV_BROADCAST_PORT pDBPort = (PDEV_BROADCAST_PORT)pDBHdr;
                                DbgPrint(_T("DBT_DEVTYP_PORT = %s/n"),pDBPort->dbcp_name);
                                break;
                            }
                        case DBT_DEVTYP_VOLUME:
                            DbgPrint( _T("DBT_DEVTYP_VOLUME!/n"));
                            break;
                        }
                        break;
                    }
                case DBT_DEVICEREMOVECOMPLETE:
                    {
                        PDEV_BROADCAST_HDR pDBHdr = (PDEV_BROADCAST_HDR)lParam;
                        switch(pDBHdr->dbch_devicetype)
                        {
                        case DBT_DEVTYP_DEVICEINTERFACE:
                            {
                                PDEV_BROADCAST_DEVICEINTERFACE pDBInteface = (PDEV_BROADCAST_DEVICEINTERFACE)pDBHdr;

                                LPOLESTR pGuid = NULL;
                                StringFromCLSID(pDBInteface->dbcc_classguid,&pGuid);

                                DbgPrint(_T("DBT_DEVICEREMOVECOMPLETE,Device CLSID = %s,Device Name = %s/n"),pGuid,pDBInteface->dbcc_name);
                                CoTaskMemFree(pGuid);

                                break;
                            }
                        case DBT_DEVTYP_HANDLE:
                            {
                                PDEV_BROADCAST_HANDLE pDBHandler = (PDEV_BROADCAST_HANDLE)pDBHdr;

                                LPOLESTR pGuid = NULL;
                                StringFromCLSID(pDBHandler->dbch_eventguid,&pGuid);

                                DbgPrint(_T("DBT_DEVTYP_HANDLE,Device CLSID = %s/n"),pGuid);
                                CoTaskMemFree(pGuid);
                                break;
                            }
                        case DBT_DEVTYP_OEM:
                            DbgPrint( _T("DBT_DEVTYP_OEM!/n"));
                            break;
                        case DBT_DEVTYP_PORT:
                            {
                                PDEV_BROADCAST_PORT pDBPort = (PDEV_BROADCAST_PORT)pDBHdr;

                                DbgPrint(_T("DBT_DEVTYP_PORT = %s/n"),pDBPort->dbcp_name);

                                break;
                            }
                        case DBT_DEVTYP_VOLUME:
                            DbgPrint( _T("DBT_DEVTYP_VOLUME!/n"));
                            break;
                        }
                        break;
                    }
            }
            return LRESULT(TRUE);
        }

你可能感兴趣的:(热插拔的设备的拔出与插入的响应)