TECHNOLOGIES
FORUMS
JOBS
BOOKS
EVENTS
INTERVIEWS
Live
MORE
LEARN
Training
CAREER
MEMBERS
VIDEOS
NEWS
BLOGS
Sign Up
Login
No unread comment.
View All Comments
No unread message.
View All Messages
No unread notification.
View All Notifications
Answers
Post
An Article
A Blog
A News
A Video
An EBook
An Interview Question
Ask Question
Forums
Monthly Leaders
Forum guidelines
gongdehui
NA
63
0
Why I cann't get the message device type:DBT_DEVTYP_DEVICEINTERFACE?
Oct 25 2004 6:54 AM
I can get the message device tpye DBT_DEVTYP_VOLUME,but my WndProc cann't get the DBT_DEVTYP_DEVICEINTERFACE message device type.My code is: const int WM_DEVICECHANGE = 0x0219; public enum DEVICETYPE:int { DBT_DEVTYP_OEM =0x00000000,// oem-defined device type DBT_DEVTYP_DEVNODE = 0x00000001, // devnode number DBT_DEVTYP_VOLUME = 0x00000002, // logical volume DBT_DEVTYP_PORT = 0x00000003, // serial, parallel DBT_DEVTYP_NET =0x00000004, // network resource DBT_DEVTYP_DEVICEINTERFACE =0x00000005 //device interface class } public struct _DEV_BROADCAST_HDR { public int dbch_size; public DEVICETYPE dbch_devicetype; private int dbch_reserved; } public struct _DEV_BROADCAST_VOLUME { public int dbcv_size; public DEVICETYPE dbcv_devicetype;//Set to DBT_DEVTYP_VOLUME private int dbcv_reserved; public uint dbcv_unitmask; public int dbcv_flags; } public struct _DEV_BROADCAST_DEVICEINTERFACE { public int dbcc_size; public DEVICETYPE dbcc_devicetype; //Set to DBT_DEVTYP_DEVICEINTERFACE public int dbcc_reserved; public System.Guid dbcc_classguid; //char dbcc_name[1]; } protected override void WndProc(ref Message devicemsg) { _DEV_BROADCAST_DEVICEINTERFACE DevBroadcastInterface; DEVICEEVENT Eventtype; _DEV_BROADCAST_HDR Whicheventtype; _DEV_BROADCAST_VOLUME DevBroadcastVolume; base.WndProc(ref devicemsg); if(devicemsg.Msg == WM_DEVICECHANGE) { Eventtype = (DEVICEEVENT)devicemsg.WParam.ToInt32(); switch(Eventtype) { case DEVICEEVENT.DBT_DEVICEARRIVAL: { Whicheventtype = (_DEV_BROADCAST_HDR)Marshal.PtrToStructure(devicemsg.LParam,typeof(_DEV_BROADCAST_HDR)); switch(Whicheventtype.dbch_devicetype) { case DEVICETYPE.DBT_DEVTYP_DEVICEINTERFACE: {//this case can not be retrieved,why? DevBroadcastInterface = (_DEV_BROADCAST_DEVICEINTERFACE)Marshal.PtrToStructure(devicemsg.LParam,typeof(_DEV_BROADCAST_DEVICEINTERFACE)); //do something here. break; } case DEVICETYPE.DBT_DEVTYP_VOLUME: {// but this case can be retrieved. DevBroadcastVolume = (_DEV_BROADCAST_VOLUME)Marshal.PtrToStructure(devicemsg.LParam,typeof(_DEV_BROADCAST_VOLUME)); //do something here. break; }//end case DBT_DEVTYP_VOLUME }//end switch(pDevBroadcastHdr.dbch_devicetype) }//end case DBT_DEVICEARRIVAL break; }//end switch(Eventtype) }//end if }//end WndProc() Why does the WndProc can not retrive the DBT_DEVTYP_DEVICEINTERFACE message device type? Thanks!
Reply
Answers (
1
)
objects and treeview
Call Graph