Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!bloom-beacon!husc6!endor!siegel From: siegel@endor.harvard.edu (Rich Siegel) Newsgroups: comp.sys.mac.programmer Subject: Re: Eject Who ?? Message-ID: <1268@husc6.harvard.edu> Date: 24 Feb 89 14:55:44 GMT References: <1696@psu-cs.UUCP> Sender: news@husc6.harvard.edu Reply-To: siegel@endor.UUCP (Rich Siegel) Distribution: na Organization: Symantec/THINK Technologies, Bedford, MA Lines: 62 There's no "straightforward" way to do it, but these procedures should help somewhat. Function GetDrivInfo (vRefNum: Integer): SignedByte; Var DriveNum: Integer; DiskInfo: ^SignedByte; DriveQ: QHdrPtr; DriveElem: ^DrvQEl; wpb: WDPBRec; hpb: HParamBlockRec; err: OSErr; Begin With wpb Do Begin ioNamePtr := Nil; ioWDIndex := 0; ioVRefNum := vRefNum; ioWDProcID := LongInt('ERIK'); End; err := PBGetWDInfo(@wpb, False); With hpb Do Begin ioNamePtr := Nil; ioVRefNum := wpb.ioWDVRefNum; ioVolIndex := 0; End; err := PBHGetVInfo(@hpb, False); DriveQ := GetDrvQHdr; DriveElem := Pointer(DriveQ^.qHead); While (DriveElem^.dQDrive <> hpb.ioVDrvInfo) Do Begin If Pointer(DriveElem) = (DriveQ^.qTail) Then Leave; DriveElem := Pointer(DriveElem^.qLink); End; DiskInfo := Pointer(Ord4(@DriveElem^.qLink) - 3); GetDriveInfo := DiskInfo^; End; Function Ejectable (vRefNum: Integer): Boolean; Var DiskInfo: SignedByte; Begin DiskInfo := GetDriveInfo(vRefNum); Ejectable := (DiskInfo <> 8); End; Rich Siegel Staff Software Developer THINK Technologies Division, Symantec Corp. Internet: siegel@endor.harvard.edu UUCP: ..harvard!endor!siegel Phone: (617) 275-4800 x305