windows - Sådan fastslår du hvilke drev (volumener) dukker op i dialogboksen 'Safely Remove Hardware'?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har en applikation, der kigger på filsystemhændelser. Dette kræver et permanent åbent håndtag til målvolumenerne. Dette er fint for ting som systemstartdrev og andre faste enheder, men meget uønsket, hvis vi beskæftiger os med mængder, der er hostet på flytbare enheder som eSATA, USB, Firewire, iSCSI osv., Da brugeren måske vil fjerne stikkene fra disse tid, men det åbne håndtag forhindrer 'Sikker fjernelse af hardware' fra at lykkes.


Ideelt set vil jeg gerne forhindre, at min ansøgning låses på et hvilket som helst volumen, hvis forælder kan vises i 'Safely Remove Hardware' som standard. Problemet er, at det ikke synes at være en dokumenteret måde at bestemme, hvilke enheder der vises der og hvilke enheder don? t. Mangler jeg noget? Har nogen lederskab?


Bemærk at det er muligt at forespørge en bustype for en enhed, og dette får næsten jobbet for mig:


typedef enum \_STORAGE\_BUS\_TYPE {
  BusTypeUnknown             = 0x00,
  BusTypeScsi                = 0x1,
  BusTypeAtapi               = 0x2,
  BusTypeAta                 = 0x3,
  BusType1394                = 0x4,
  BusTypeSsa                 = 0x5,
  BusTypeFibre               = 0x6,
  BusTypeUsb                 = 0x7,
  BusTypeRAID                = 0x8,
  BusTypeiScsi               = 0x9,
  BusTypeSas                 = 0xA,
  BusTypeSata                = 0xB,
  BusTypeSd                  = 0xC,
  BusTypeMmc                 = 0xD,
  BusTypeVirtual             = 0xE,
  BusTypeFileBackedVirtual   = 0xF,
  BusTypeMax                 = 0x10,
  BusTypeMaxReserved         = 0x7F 
} STORAGE\_BUS\_TYPE, *PSTORAGE\_BUS\_TYPE;


Imidlertid returnerer IOCTL BusTypeSata til både SATA og eSATA - men OS genkender sidstnævnte som noget, der skal vises i dialogboksen 'Sikker fjernelse'.

Bedste reference


Du kan lytte til enhedsbegivenheder for at vide, hvornår du skal lukke dine håndtag:


http://msdn.microsoft.com/en-us/library/aa363217(v=vs.85).aspx[2]


Bemærk at du også har brug for dette til faste enheder, ellers kan dit åbne håndtag forhindre, at ting som chkdsk løber fra (for at du skal lytte til låse/afmontere begivenheder).


-Scott