using system;
using system.collections.generic;
using system.io;
using system.linq;
using system.runtime.interopservices;
using system.text;
using system.threading.tasks;
using system.windows;
using system.windows.controls;
using system.windows.data;
using system.windows.documents;
using system.windows.input;
using system.windows.interop;
using system.windows.media;
using system.windows.media.imaging;
using system.windows.shapes;
namespace wpf_datagrid_rowdraganddrop
private void window_loaded(object sender, routedeventargs e)
}string panfu = "";
public const int wm_devicechange = 0x219;//u盤插入後,os的底層會自動檢測到,然後向應用程式傳送「硬體裝置狀態改變「的訊息
public const int dbt_devicearrival = 0x8000; //就是用來表示u盤可用的。乙個裝置或**已被插入一塊,現在可用。
public const int dbt_configchangecanceled = 0x0019; //要求更改當前的配置(或取消停靠碼頭)已被取消。
public const int dbt_configchanged = 0x0018; //當前的配置發生了變化,由於碼頭或取消固定。
public const int dbt_customevent = 0x8006; //自定義的事件發生。 的windows nt 4.0和windows 95:此值不支援。
public const int dbt_devicequeryremove = 0x8001; //審批要求刪除乙個裝置或**作品。任何應用程式也不能否認這一要求,並取消刪除。
public const int dbt_devicequeryremovefailed = 0x8002; //請求刪除乙個裝置或**片已被取消。
public const int dbt_deviceremovecomplete = 0x8004; //乙個裝置或**片已被刪除。
public const int dbt_deviceremovepending = 0x8003; //乙個裝置或**一塊即將被刪除。不能否認的。
public const int dbt_devicetypespecific = 0x8005; //乙個裝置特定事件發生。
public const int dbt_devnodes_changed = 0x0007; //一種裝置已被新增到或從系統中刪除。
public const int dbt_querychangeconfig = 0x0017; //許可是要求改變目前的配置(碼頭或取消固定)。
public const int dbt_userdefined = 0xffff; //此訊息的含義是使用者定義的
public const uint generic_read = 0x80000000;
public const int generic_write = 0x40000000;
public const int file_share_read = 0x1;
public const int file_share_write = 0x2;
public const int ioctl_storage_eject_media = 0x2d4808;
private intptr wndproc(intptr hwnd, int msg, intptr wparam, intptr lparam, ref bool handled)
return false;
});break;
case dbt_deviceremovecomplete:
messagebox.show("u盤解除安裝");
break;
default:
break;}}
return intptr.zero;
}private void dirsearch(string path)
foreach (string d in directory.getdirectories(path))
}catch (exception)
}private void button_click(object sender, routedeventargs e)
[dllimport("kernel32.dll", setlasterror = true, charset = charset.auto)]
private static extern intptr createfile(
string lpfilename,
uint dwdesireaccess,
uint dwsharemode,
intptr securityattributes,
uint dwcreationdisposition,
uint dwflagsandattributes,
intptr htemplatefile);
[dllimport("kernel32.dll", exactspelling = true, setlasterror = true, charset = charset.auto)]
private static extern bool deviceiocontrol(
intptr hdevice,
uint dwiocontrolcode,
intptr lpinbuffer,
uint ninbuffersize,
intptr lpoutbuffer,
uint noutbuffersize,
out uint lpbytesreturned,);}
}
USB裝置分類
usb裝置分類 usb從裝置的分類可以從usb裝置介面描述符 standard inte ce descriptor 對應的的binte ceclass這乙個byte得到。binte ceclass的典型 為1,2,3,6,7,8,9,10,11,255。分別代表意思為 1 audio 表示乙個音訊...
USB裝置分類
usb裝置分類 usb從裝置的分類可以從usb裝置介面描述符 standard inte ce descriptor 對應的的binte ceclass這乙個byte得到。binte ceclass的典型 為1,2,3,6,7,8,9,10,11,255。分別代表意思為 1 audio 表示乙個音訊...
USB裝置驅動
1.linux usb架構 usb通訊都是由host端發起的。usb裝置驅動程式分配並初始化乙個urb發給usb core,usb core改一改,發給usb主機控制器驅動,usb主機控制器驅動把它解析成包,在匯流排上進行傳送。usb core是由核心實現的,其實也就是把host control d...