Mac OS 9
Devices.h
Go to the documentation of this file.
1 
19 #ifndef __DEVICES__
20 #define __DEVICES__
21 
22 #ifndef __OSUTILS__
23 #include <OSUtils.h>
24 #endif
25 
26 #ifndef __FILES__
27 #include <Files.h>
28 #endif
29 
30 #ifndef __QUICKDRAW__
31 #include <Quickdraw.h>
32 #endif
33 
34 #ifndef __NAMEREGISTRY__
35 #include <NameRegistry.h>
36 #endif
37 
38 #ifndef __CODEFRAGMENTS__
39 #include <CodeFragments.h>
40 #endif
41 
42 #ifndef __MULTIPROCESSING__
43 #include <Multiprocessing.h>
44 #endif
45 
46 #ifndef __DRIVERFAMILYMATCHING__
47 #include <DriverFamilyMatching.h>
48 #endif
49 
50 #ifndef __DISKS__
51 #include <Disks.h>
52 #endif
53 
54 #if PRAGMA_ONCE
55 #pragma once
56 #endif
57 
58 #ifdef __cplusplus
59 extern "C"
60 {
61 #endif
62 
63 #if PRAGMA_IMPORT
64 #pragma import on
65 #endif
66 
67 #if PRAGMA_STRUCT_ALIGN
68 #pragma options align = mac68k
69 #elif PRAGMA_STRUCT_PACKPUSH
70 #pragma pack(push, 2)
71 #elif PRAGMA_STRUCT_PACK
72 #pragma pack(2)
73 #endif
74 
75  /* Values of the 'message' parameter to a Chooser device package */
76  enum
77  {
78  chooserInitMsg = 11, /* the user selected this device package */
79  newSelMsg = 12, /* the user made new device selections */
80  fillListMsg = 13, /* fill the device list with choices */
81  getSelMsg = 14, /* mark one or more choices as selected */
82  selectMsg = 15, /* the user made a selection */
83  deselectMsg = 16, /* the user canceled a selection */
84  terminateMsg = 17, /* allows device package to clean up */
85  buttonMsg = 19 /* the user selected a button */
86  };
87 
88  /* Values of the 'caller' parameter to a Chooser device package */
89  enum
90  {
91  chooserID = 1
92  };
93 
94  /* Values of the 'message' parameter to a Monitor 'mntr' */
95  enum
96  {
97  initMsg = 1, /*initialization*/
98  okMsg = 2, /*user clicked OK button*/
99  cancelMsg = 3, /*user clicked Cancel button*/
100  hitMsg = 4, /*user clicked control in Options dialog*/
101  nulMsg = 5, /*periodic event*/
102  updateMsg = 6, /*update event*/
103  activateMsg = 7, /*not used*/
104  deactivateMsg = 8, /*not used*/
105  keyEvtMsg = 9, /*keyboard event*/
106  superMsg = 10, /*show superuser controls*/
107  normalMsg = 11, /*show only normal controls*/
108  startupMsg = 12 /*code has been loaded*/
109  };
110 
111  /* control codes for DeskAccessories */
112  enum
113  {
114  goodbye = -1, /* heap being reinitialized */
115  killCode = 1, /* KillIO requested */
116  accEvent = 64, /* handle an event */
117  accRun = 65, /* time for periodic action */
118  accCursor = 66, /* change cursor shape */
119  accMenu = 67, /* handle menu item */
120  accUndo = 68, /* handle undo command */
121  accCut = 70, /* handle cut command */
122  accCopy = 71, /* handle copy command */
123  accPaste = 72, /* handle paste command */
124  accClear = 73 /* handle clear command */
125  };
126 
127  /* Control/Status Call Codes */
128  /* drvStsCode, ejectCode and tgBuffCode are now defined in Disks.h/p/a */
129 
130  /* miscellaneous Device Manager constants */
131  enum
132  {
133  ioInProgress = 1, /* predefined value of ioResult while I/O is pending */
134  aRdCmd = 2, /* low byte of ioTrap for Read calls */
135  aWrCmd = 3, /* low byte of ioTrap for Write calls */
136  asyncTrpBit = 10, /* trap word modifier */
137  noQueueBit = 9 /* trap word modifier */
138  };
139 
140  /* flags used in the driver header and device control entry */
141  enum
142  {
143  dReadEnable = 0, /* set if driver responds to read requests */
144  dWritEnable = 1, /* set if driver responds to write requests */
145  dCtlEnable = 2, /* set if driver responds to control requests */
146  dStatEnable = 3, /* set if driver responds to status requests */
147  dNeedGoodBye = 4, /* set if driver needs time for performing periodic tasks */
148  dNeedTime = 5, /* set if driver needs time for performing periodic tasks */
149  dNeedLock =
150  6 /* set if driver must be locked in memory as soon as it is opened */
151  };
152 
153  enum
154  {
155  dNeedLockMask = 0x4000, /* set if driver must be locked in memory as soon as
156  it is opened */
157  dNeedTimeMask =
158  0x2000, /* set if driver needs time for performing periodic tasks */
159  dNeedGoodByeMask = 0x1000, /* set if driver needs to be called before the
160  application heap is initialized */
161  dStatEnableMask = 0x0800, /* set if driver responds to status requests */
162  dCtlEnableMask = 0x0400, /* set if driver responds to control requests */
163  dWritEnableMask = 0x0200, /* set if driver responds to write requests */
164  dReadEnableMask = 0x0100 /* set if driver responds to read requests */
165  };
166 
167  /* run-time flags used in the device control entry */
168  enum
169  {
170  dVMImmuneBit = 0, /* driver does not need VM protection */
171  dOpened = 5, /* driver is open */
172  dRAMBased = 6, /* dCtlDriver is a handle (1) or pointer (0) */
173  drvrActive = 7 /* driver is currently processing a request */
174  };
175 
176  enum
177  {
178  dVMImmuneMask = 0x0001, /* driver does not need VM protection */
179  dOpenedMask = 0x0020, /* driver is open */
180  dRAMBasedMask = 0x0040, /* dCtlDriver is a handle (1) or pointer (0) */
181  drvrActiveMask = 0x0080 /* driver is currently processing a request */
182  };
183 
184  struct DRVRHeader
185  {
186  short drvrFlags;
187  short drvrDelay;
188  short drvrEMask;
189  short drvrMenu;
190  short drvrOpen;
191  short drvrPrime;
192  short drvrCtl;
193  short drvrStatus;
194  short drvrClose;
195  unsigned char drvrName[1];
196  };
197  typedef struct DRVRHeader DRVRHeader;
198  typedef DRVRHeader *DRVRHeaderPtr;
200  struct DCtlEntry
201  {
202  Ptr dCtlDriver;
203  volatile short dCtlFlags;
204  QHdr dCtlQHdr;
205  volatile long dCtlPosition;
206  Handle dCtlStorage;
207  short dCtlRefNum;
208  long dCtlCurTicks;
209  GrafPtr dCtlWindow;
210  short dCtlDelay;
211  short dCtlEMask;
212  short dCtlMenu;
213  };
214  typedef struct DCtlEntry DCtlEntry;
215  typedef DCtlEntry *DCtlPtr;
216  typedef DCtlPtr *DCtlHandle;
217  struct AuxDCE
218  {
219  Ptr dCtlDriver;
220  volatile short dCtlFlags;
221  QHdr dCtlQHdr;
222  long dCtlPosition;
223  Handle dCtlStorage;
224  short dCtlRefNum;
225  long dCtlCurTicks;
226  GrafPtr dCtlWindow;
227  short dCtlDelay;
228  short dCtlEMask;
229  short dCtlMenu;
230  SInt8 dCtlSlot;
231  SInt8 dCtlSlotId;
232  long dCtlDevBase;
233  Ptr dCtlOwner;
234  SInt8 dCtlExtDev;
235  SInt8 fillByte;
236  UInt32 dCtlNodeID;
237  };
238  typedef struct AuxDCE AuxDCE;
239  typedef AuxDCE *AuxDCEPtr;
240  typedef AuxDCEPtr *AuxDCEHandle;
241  // The NDRV Driver IO Entry Point and Commands
242  typedef UInt16 UnitNumber;
243  typedef UInt32 DriverOpenCount;
244  typedef SInt16 DriverRefNum;
245  typedef SInt16 DriverFlags;
246  typedef UInt32 IOCommandCode;
247  enum
248  {
249  kOpenCommand = 0,
250  kCloseCommand = 1,
251  kReadCommand = 2,
252  kWriteCommand = 3,
253  kControlCommand = 4,
254  kStatusCommand = 5,
255  kKillIOCommand = 6,
256  kInitializeCommand = 7, /* init driver and device*/
257  kFinalizeCommand = 8, /* shutdown driver and device*/
258  kReplaceCommand = 9, /* replace an old driver*/
259  kSupersededCommand = 10, /* prepare to be replaced by a new driver*/
260  kSuspendCommand = 11, /* prepare driver to go to sleep*/
261  kResumeCommand = 12 /* wake up sleeping driver*/
262  };
263 
264  enum
265  {
266  /* one more IOCommandCode*/
267  kPowerManagementCommand = 13 /* power management command, supercedes
268  kSuspendCommand and kResumeCommand*/
269  };
270 
271  typedef MPAddressSpaceID AddressSpaceID;
272  typedef struct OpaqueIOCommandID *IOCommandID;
273  typedef UInt32 IOCommandKind;
274  enum
275  {
276  kSynchronousIOCommandKind = 0x00000001,
277  kAsynchronousIOCommandKind = 0x00000002,
278  kImmediateIOCommandKind = 0x00000004
279  };
280 
282  {
283  DriverRefNum refNum;
284  RegEntryID deviceEntry;
285  };
286  typedef struct DriverInitInfo DriverInitInfo;
291  {
292  DriverRefNum refNum;
293  RegEntryID deviceEntry;
294  };
295  typedef struct DriverFinalInfo DriverFinalInfo;
299 
300  /* Contents are command specific*/
301 
303  {
304  ParmBlkPtr pb;
305  DriverInitInfoPtr initialInfo;
306  DriverFinalInfoPtr finalInfo;
307  DriverReplaceInfoPtr replaceInfo;
308  DriverSupersededInfoPtr supersededInfo;
309  };
310  typedef union IOCommandContents IOCommandContents;
311  typedef CALLBACK_API_C(OSErr, DriverEntryPointPtr)(AddressSpaceID SpaceID,
312  IOCommandID CommandID,
313  IOCommandContents Contents,
314  IOCommandCode Code,
315  IOCommandKind Kind);
316  /* Record to describe a file-based driver candidate */
318  {
319  FSSpec theSpec; /* file specification*/
320  MacDriverType theType; /* nameInfoStr + version number*/
321  Boolean compatibleProp; /* true if matched using a compatible name*/
322  UInt8 pad[3]; /* alignment*/
323  };
326  /* Detailed Record to describe a file-based driver candidate. Includes fragment
327  * name */
329  {
330  FileBasedDriverRecord fileBasedDriver;
331  Str63 fragName;
332  };
335 /* Driver Loader API */
336 #define DECLARE_DRIVERDESCRIPTION(N_ADDITIONAL_SERVICES) \
337  struct \
338  { \
339  DriverDescription fixed; \
340  DriverServiceInfo additional_service[N_ADDITIONAL_SERVICES - 1]; \
341  };
342 
343 #if CALL_NOT_IN_CARBON
352  SInt16
353  HigherDriverVersion(const NumVersion *driverVersion1,
354  const NumVersion *driverVersion2);
355 
364  OSErr
365  VerifyFragmentAsDriver(CFragConnectionID fragmentConnID,
366  DriverEntryPointPtr *fragmentMain,
367  DriverDescriptionPtr *driverDesc);
368 
377  OSErr
378  GetDriverMemoryFragment(Ptr memAddr, long length, ConstStr63Param fragName,
379  CFragConnectionID *fragmentConnID,
380  DriverEntryPointPtr *fragmentMain,
381  DriverDescriptionPtr *driverDesc);
382 
391  OSErr
392  GetDriverDiskFragment(FSSpecPtr fragmentSpec, CFragConnectionID *fragmentConnID,
393  DriverEntryPointPtr *fragmentMain,
394  DriverDescriptionPtr *driverDesc);
395 
404  OSErr
405  GetNamedDriverDiskFragment(FSSpecPtr fragmentSpec, ConstStr63Param fragName,
406  CFragConnectionID *fragmentConnID,
407  DriverEntryPointPtr *fragmentMain,
408  DriverDescriptionPtr *driverDesc);
409 
418  OSErr
419  InstallDriverFromFragment(CFragConnectionID fragmentConnID, RegEntryID *device,
420  UnitNumber beginningUnit, UnitNumber endingUnit,
421  DriverRefNum *refNum);
422 
431  OSErr
432  InstallDriverFromFile(FSSpecPtr fragmentSpec, RegEntryID *device,
433  UnitNumber beginningUnit, UnitNumber endingUnit,
434  DriverRefNum *refNum);
435 
444  OSErr
445  InstallDriverFromMemory(Ptr memory, long length, ConstStr63Param fragName,
446  RegEntryID *device, UnitNumber beginningUnit,
447  UnitNumber endingUnit, DriverRefNum *refNum);
448 
457  OSErr
458  InstallDriverFromResource(SInt16 theRsrcID, ConstStr255Param theRsrcName,
459  RegEntryIDPtr theDevice, UnitNumber theBeginningUnit,
460  UnitNumber theEndingUnit, DriverRefNum *theRefNum);
461 
470  OSErr
471  InstallDriverFromDisk(Ptr theDriverName, RegEntryID *theDevice,
472  UnitNumber theBeginningUnit, UnitNumber theEndingUnit,
473  DriverRefNum *theRefNum);
474 
483  OSErr
484  FindDriversForDevice(RegEntryID *device, FSSpec *fragmentSpec,
485  DriverDescription *fileDriverDesc, Ptr *memAddr,
486  long *length, StringPtr fragName,
487  DriverDescription *memDriverDesc);
488 
497  OSErr
498  FindDriverForDeviceFromFile(RegEntryID *device, FSSpec *fragmentSpec,
499  DriverDescription *driverDesc, StringPtr fragName);
500 
509  OSErr
510  FindDriverCandidates(RegEntryID *deviceID, Ptr *propBasedDriver,
511  RegPropertyValueSize *propBasedDriverSize,
512  StringPtr deviceName, MacDriverType *propBasedDriverType,
513  Boolean *gotPropBasedDriver,
514  FileBasedDriverRecordPtr fileBasedDrivers,
515  ItemCount *nFileBasedDrivers);
516 
525  OSErr
526  FindDriverCandidatesDetailed(RegEntryIDPtr deviceID, Ptr *propBasedDriver,
527  RegPropertyValueSize *propBasedDriverSize,
528  StringPtr deviceName,
529  MacDriverType *propBasedDriverType,
530  Boolean *gotPropBasedDriver,
531  FileBasedDriverDetailedPtr fileBasedDrivers,
532  ItemCount *nFileBasedDrivers);
533 
542  OSErr
544  FileBasedDriverRecordPtr fileBasedDrivers,
545  ItemCount nFileBasedDrivers,
546  FileBasedDriverRecordPtr matchingDrivers,
547  ItemCount *nMatchingDrivers);
548 
557  OSErr
559  FileBasedDriverDetailedPtr fileBasedDrivers,
560  ItemCount nFileBasedDrivers,
561  FileBasedDriverDetailedPtr matchingDrivers,
562  ItemCount *nMatchingDrivers);
563 
572  SInt16
574  DriverTypePtr propBasedCandidate,
575  FileBasedDriverRecordPtr fileBasedCandidate);
576 
585  void
586  GetCompatibleProperty(RegEntryID *device, StringPtr *compatibleNames,
587  ItemCount *nCompatibleNames);
588 
597  Boolean
598  CompatibleDriverNames(StringPtr nameInfoStr, StringPtr compatibleNames,
599  ItemCount nCompatibleNames, long *nameCount);
600 
609  OSErr
610  GetDriverForDevice(RegEntryID *device, CFragConnectionID *fragmentConnID,
611  DriverEntryPointPtr *fragmentMain,
612  DriverDescriptionPtr *driverDesc);
613 
622  OSErr
623  InstallDriverForDevice(RegEntryID *device, UnitNumber beginningUnit,
624  UnitNumber endingUnit, DriverRefNum *refNum);
625 
634  OSErr
635  GetDriverInformation(DriverRefNum refNum, UnitNumber *unitNum,
636  DriverFlags *flags, DriverOpenCount *count, StringPtr name,
637  RegEntryID *device,
638  CFragSystem7Locator *driverLoadLocation,
639  CFragConnectionID *fragmentConnID,
640  DriverEntryPointPtr *fragmentMain,
641  DriverDescription *driverDesc);
642 
651  OSErr
652  GetDriverDescription(LogicalAddress fragmentPtr,
653  DriverDescriptionPtr *theDriverDesc);
654 
663  OSStatus
664  GetNamedDriverDescFromFSSpec(FSSpecPtr fragmentSpec, StringPtr fragName,
665  DriverDescriptionPtr *driverDesc);
666 
675  OSErr
676  SetDriverClosureMemory(CFragConnectionID fragmentConnID,
677  Boolean holdDriverMemory);
678 
687  OSErr
688  ReplaceDriverWithFragment(DriverRefNum theRefNum,
689  CFragConnectionID fragmentConnID);
690 
699  OSErr
700  OpenInstalledDriver(DriverRefNum refNum, SInt8 ioPermission);
701 
710  OSErr
711  RenameDriver(DriverRefNum refNum, StringPtr newDriverName);
712 
721  OSErr
722  RemoveDriver(DriverRefNum refNum, Boolean immediate);
723 
732  OSErr
733  LookupDrivers(UnitNumber beginningUnit, UnitNumber endingUnit,
734  Boolean emptyUnits, ItemCount *returnedRefNums,
735  DriverRefNum *refNums);
736 
745  UnitNumber
747 
756  OSErr
757  DriverGestaltOn(DriverRefNum refNum);
758 
767  OSErr
768  DriverGestaltOff(DriverRefNum refNum);
769 
778  Boolean
779  DriverGestaltIsOn(DriverFlags flags);
780 
789 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
790 #pragma parameter __D0 PBOpenSync(__A0)
791 #endif
792  OSErr
793  PBOpenSync(ParmBlkPtr paramBlock);
794 
803 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
804 #pragma parameter __D0 PBOpenAsync(__A0)
805 #endif
806  OSErr
807  PBOpenAsync(ParmBlkPtr paramBlock);
808 
817 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
818 #pragma parameter __D0 PBOpenImmed(__A0)
819 #endif
820  OSErr
821  PBOpenImmed(ParmBlkPtr paramBlock);
822 
823 #endif /* CALL_NOT_IN_CARBON */
824 
833 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
834 #pragma parameter __D0 PBCloseSync(__A0)
835 #endif
836  OSErr
837  PBCloseSync(ParmBlkPtr paramBlock);
838 
847 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
848 #pragma parameter __D0 PBCloseAsync(__A0)
849 #endif
850  OSErr
852 
853 #if CALL_NOT_IN_CARBON
862 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
863 #pragma parameter __D0 PBCloseImmed(__A0)
864 #endif
865  OSErr
867 
868 #endif /* CALL_NOT_IN_CARBON */
869 
878 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
879 #pragma parameter __D0 PBReadSync(__A0)
880 #endif
881  OSErr
882  PBReadSync(ParmBlkPtr paramBlock);
883 
892 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
893 #pragma parameter __D0 PBReadAsync(__A0)
894 #endif
895  OSErr
896  PBReadAsync(ParmBlkPtr paramBlock);
897 
898 #if CALL_NOT_IN_CARBON
907 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
908 #pragma parameter __D0 PBReadImmed(__A0)
909 #endif
910  OSErr
911  PBReadImmed(ParmBlkPtr paramBlock);
912 
913 #endif /* CALL_NOT_IN_CARBON */
914 
923 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
924 #pragma parameter __D0 PBWriteSync(__A0)
925 #endif
926  OSErr
927  PBWriteSync(ParmBlkPtr paramBlock);
928 
937 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
938 #pragma parameter __D0 PBWriteAsync(__A0)
939 #endif
940  OSErr
942 
943 #if CALL_NOT_IN_CARBON
952 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
953 #pragma parameter __D0 PBWriteImmed(__A0)
954 #endif
955  OSErr
957 
963 #endif /* CALL_NOT_IN_CARBON */
964 
973  OSErr
974  PBWaitIOComplete(ParmBlkPtr paramBlock, Duration timeout);
975 
976  /* AddDrive and GetDrvQHdr are now defined in Disks.h/p/a */
977 
978 #if CALL_NOT_IN_CARBON
987  DCtlHandle
988  GetDCtlEntry(short refNum);
989 
1010 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1011 #pragma parameter __D0 DriverInstall(__A0, __D0)
1012 #endif
1013  OSErr
1014  DriverInstall(DRVRHeaderPtr drvrPtr, short refNum);
1015 
1024 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1025 #pragma parameter __D0 DriverInstallReserveMem(__A0, __D0)
1026 #endif
1027  OSErr
1028  DriverInstallReserveMem(DRVRHeaderPtr drvrPtr, short refNum);
1029 
1047 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1048 #pragma parameter __D0 DrvrRemove(__D0)
1049 #endif
1050  OSErr
1051  DrvrRemove(short refNum);
1052 
1053 #endif /* CALL_NOT_IN_CARBON */
1054 
1055 #define DriverRemove(refNum) DrvrRemove(refNum)
1056 
1057 #if CALL_NOT_IN_CARBON
1066 #if TARGET_OS_MAC
1067 #define MacOpenDriver OpenDriver
1068 #endif
1069  OSErr
1070  MacOpenDriver(ConstStr255Param name, short *drvrRefNum);
1071 
1080 #if TARGET_OS_MAC
1081 #define MacCloseDriver CloseDriver
1082 #endif
1083  OSErr
1084  MacCloseDriver(short refNum);
1085 
1094  OSErr
1095  Control(short refNum, short csCode, const void *csParamPtr);
1096 
1105  OSErr
1106  Status(short refNum, short csCode, void *csParamPtr);
1107 
1127  OSErr
1128  KillIO(short refNum);
1129 
1138 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1139 #pragma parameter __D0 Fetch(__A1)
1140 #endif
1141  long
1143 
1152 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1153 #pragma parameter __D0 Stash(__A1, __D0)
1154 #endif
1155  long
1156  Stash(DCtlPtr dce, char data);
1157 
1166 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1167 #pragma parameter IODone(__A1, __D0)
1168 #endif
1169  void
1170  IODone(DCtlPtr dce, OSErr ioResult);
1171 
1172 #endif /* CALL_NOT_IN_CARBON */
1173 
1174 #if CALL_NOT_IN_CARBON
1183 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1184 #pragma parameter __D0 PBControlSync(__A0)
1185 #endif
1186  OSErr
1188 
1197 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1198 #pragma parameter __D0 PBControlAsync(__A0)
1199 #endif
1200  OSErr
1202 
1211 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1212 #pragma parameter __D0 PBControlImmed(__A0)
1213 #endif
1214  OSErr
1216 
1225 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1226 #pragma parameter __D0 PBStatusSync(__A0)
1227 #endif
1228  OSErr
1230 
1239 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1240 #pragma parameter __D0 PBStatusAsync(__A0)
1241 #endif
1242  OSErr
1244 
1253 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1254 #pragma parameter __D0 PBStatusImmed(__A0)
1255 #endif
1256  OSErr
1258 
1267 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1268 #pragma parameter __D0 PBKillIOSync(__A0)
1269 #endif
1270  OSErr
1272 
1281 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1282 #pragma parameter __D0 PBKillIOAsync(__A0)
1283 #endif
1284  OSErr
1286 
1295 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1296 #pragma parameter __D0 PBKillIOImmed(__A0)
1297 #endif
1298  OSErr
1300 
1309  short
1310  OpenDeskAcc(ConstStr255Param deskAccName);
1311 
1342  if (HiWord(mr) == FILE_MENU)
1343  { /* in File menu? */
1344  if (LoWord(mr) == CLOSE_ITM)
1345  { /* Close Item ? */
1346  if (isMyWindow(FrontWindow()))
1347  {
1348  /* if it's mine */
1349  /* ... close one of my application's windows ..*/
1350  }
1351  else
1352  { /* must be a DA window */
1353  wPeek = (WindowPeek)FrontWindow();
1354  CloseDeskAcc(wPeek->windowKind);
1355  }
1356  }
1357  </ pre>
1358  * \copyright THINK Reference © 1991 - 1992 Symantec Corporation
1359  * \non_carbon_cfm in InterfaceLib 7.1 and
1360  later
1361  * \carbon_lib not available * \mac_os_x not available *
1362  /
1363  void
1364  CloseDeskAcc(short refNum);
1365 
1366 #endif /* CALL_NOT_IN_CARBON */
1367 
1368 #if CALL_NOT_IN_CARBON
1377  short
1378  opendeskacc(const char *deskAccName);
1379 
1388  OSErr
1389  opendriver(const char *driverName, short *refNum);
1390 
1391 #endif /* CALL_NOT_IN_CARBON */
1392 
1398 #define PBControl(pb, async) ((async) ? PBControlAsync(pb) : PBControlSync(pb))
1399 #define PBStatus(pb, async) ((async) ? PBStatusAsync(pb) : PBStatusSync(pb))
1400 #define PBKillIO(pb, async) ((async) ? PBKillIOAsync(pb) : PBKillIOSync(pb))
1401 
1402 #define PBOpen(pb, async) ((async) ? PBOpenAsync(pb) : PBOpenSync(pb))
1403 #define PBClose(pb, async) ((async) ? PBCloseAsync(pb) : PBCloseSync(pb))
1404 #define PBRead(pb, async) ((async) ? PBReadAsync(pb) : PBReadSync(pb))
1405 #define PBWrite(pb, async) ((async) ? PBWriteAsync(pb) : PBWriteSync(pb))
1406 
1407 #if PRAGMA_STRUCT_ALIGN
1408 #pragma options align = reset
1409 #elif PRAGMA_STRUCT_PACKPUSH
1410 #pragma pack(pop)
1411 #elif PRAGMA_STRUCT_PACK
1412 #pragma pack()
1413 #endif
1414 
1415 #ifdef PRAGMA_IMPORT_OFF
1416 #pragma import off
1417 #elif PRAGMA_IMPORT
1418 #pragma import reset
1419 #endif
1420 
1421 #ifdef __cplusplus
1422  }
1423 #endif
1424 
1425 #endif /* __DEVICES__ */
1426  */*/
Public Code Fragment Manager Interfaces.
OSErr PBReadSync(ParmBlkPtr paramBlock)
OSErr PBControlImmed(ParmBlkPtr paramBlock)
OSErr PBOpenSync(ParmBlkPtr paramBlock)
OSErr DriverInstallReserveMem(DRVRHeaderPtr drvrPtr, short refNum)
OSErr InstallDriverFromFragment(CFragConnectionID fragmentConnID, RegEntryID *device, UnitNumber beginningUnit, UnitNumber endingUnit, DriverRefNum *refNum)
short OpenDeskAcc(ConstStr255Param deskAccName)
OSErr DrvrRemove(short refNum)
OSErr DriverInstall(DRVRHeaderPtr drvrPtr, short refNum)
OSErr InstallDriverFromResource(SInt16 theRsrcID, ConstStr255Param theRsrcName, RegEntryIDPtr theDevice, UnitNumber theBeginningUnit, UnitNumber theEndingUnit, DriverRefNum *theRefNum)
OSErr GetDriverMemoryFragment(Ptr memAddr, long length, ConstStr63Param fragName, CFragConnectionID *fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescriptionPtr *driverDesc)
OSErr InstallDriverFromDisk(Ptr theDriverName, RegEntryID *theDevice, UnitNumber theBeginningUnit, UnitNumber theEndingUnit, DriverRefNum *theRefNum)
OSErr Status(short refNum, short csCode, void *csParamPtr)
OSErr PBKillIOAsync(ParmBlkPtr paramBlock)
OSErr PBWriteSync(ParmBlkPtr paramBlock)
OSErr GetNamedDriverDiskFragment(FSSpecPtr fragmentSpec, ConstStr63Param fragName, CFragConnectionID *fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescriptionPtr *driverDesc)
OSErr Control(short refNum, short csCode, const void *csParamPtr)
OSErr InstallDriverFromMemory(Ptr memory, long length, ConstStr63Param fragName, RegEntryID *device, UnitNumber beginningUnit, UnitNumber endingUnit, DriverRefNum *refNum)
OSErr PBReadAsync(ParmBlkPtr paramBlock)
OSErr PBReadImmed(ParmBlkPtr paramBlock)
OSErr MacOpenDriver(ConstStr255Param name, short *drvrRefNum)
OSErr PBWaitIOComplete(ParmBlkPtr paramBlock, Duration timeout)
long Fetch(DCtlPtr dce)
OSStatus GetNamedDriverDescFromFSSpec(FSSpecPtr fragmentSpec, StringPtr fragName, DriverDescriptionPtr *driverDesc)
OSErr VerifyFragmentAsDriver(CFragConnectionID fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescriptionPtr *driverDesc)
SInt16 HigherDriverVersion(const NumVersion *driverVersion1, const NumVersion *driverVersion2)
OSErr ReplaceDriverWithFragment(DriverRefNum theRefNum, CFragConnectionID fragmentConnID)
UnitNumber HighestUnitNumber(void)
OSErr SetDriverClosureMemory(CFragConnectionID fragmentConnID, Boolean holdDriverMemory)
OSErr PBStatusImmed(ParmBlkPtr paramBlock)
OSErr KillIO(short refNum)
Terminate all current and pending device driver reads and writes.
void GetCompatibleProperty(RegEntryID *device, StringPtr *compatibleNames, ItemCount *nCompatibleNames)
OSErr LookupDrivers(UnitNumber beginningUnit, UnitNumber endingUnit, Boolean emptyUnits, ItemCount *returnedRefNums, DriverRefNum *refNums)
OSErr GetDriverInformation(DriverRefNum refNum, UnitNumber *unitNum, DriverFlags *flags, DriverOpenCount *count, StringPtr name, RegEntryID *device, CFragSystem7Locator *driverLoadLocation, CFragConnectionID *fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescription *driverDesc)
OSErr DriverGestaltOn(DriverRefNum refNum)
OSErr PBCloseImmed(ParmBlkPtr paramBlock)
OSErr InstallDriverForDevice(RegEntryID *device, UnitNumber beginningUnit, UnitNumber endingUnit, DriverRefNum *refNum)
OSErr FindDriverCandidates(RegEntryID *deviceID, Ptr *propBasedDriver, RegPropertyValueSize *propBasedDriverSize, StringPtr deviceName, MacDriverType *propBasedDriverType, Boolean *gotPropBasedDriver, FileBasedDriverRecordPtr fileBasedDrivers, ItemCount *nFileBasedDrivers)
OSErr PBCloseAsync(ParmBlkPtr paramBlock)
OSErr GetDriverDescription(LogicalAddress fragmentPtr, DriverDescriptionPtr *theDriverDesc)
void IODone(DCtlPtr dce, OSErr ioResult)
OSErr FindDriversForDevice(RegEntryID *device, FSSpec *fragmentSpec, DriverDescription *fileDriverDesc, Ptr *memAddr, long *length, StringPtr fragName, DriverDescription *memDriverDesc)
OSErr DriverGestaltOff(DriverRefNum refNum)
OSErr FindDriverForDeviceFromFile(RegEntryID *device, FSSpec *fragmentSpec, DriverDescription *driverDesc, StringPtr fragName)
OSErr PBStatusSync(ParmBlkPtr paramBlock)
OSErr PBCloseSync(ParmBlkPtr paramBlock)
DCtlHandle GetDCtlEntry(short refNum)
Boolean DriverGestaltIsOn(DriverFlags flags)
SInt16 CompareFileCandToPropCand(RegEntryID *device, StringPtr deviceName, DriverTypePtr propBasedCandidate, FileBasedDriverRecordPtr fileBasedCandidate)
OSErr PBStatusAsync(ParmBlkPtr paramBlock)
OSErr RemoveDriver(DriverRefNum refNum, Boolean immediate)
OSErr MacCloseDriver(short refNum)
OSErr PBOpenImmed(ParmBlkPtr paramBlock)
OSErr PBKillIOImmed(ParmBlkPtr paramBlock)
OSErr ScanDriverCandidatesDetailed(RegEntryID *deviceID, FileBasedDriverDetailedPtr fileBasedDrivers, ItemCount nFileBasedDrivers, FileBasedDriverDetailedPtr matchingDrivers, ItemCount *nMatchingDrivers)
Boolean CompatibleDriverNames(StringPtr nameInfoStr, StringPtr compatibleNames, ItemCount nCompatibleNames, long *nameCount)
OSErr PBKillIOSync(ParmBlkPtr paramBlock)
OSErr InstallDriverFromFile(FSSpecPtr fragmentSpec, RegEntryID *device, UnitNumber beginningUnit, UnitNumber endingUnit, DriverRefNum *refNum)
OSErr FindDriverCandidatesDetailed(RegEntryIDPtr deviceID, Ptr *propBasedDriver, RegPropertyValueSize *propBasedDriverSize, StringPtr deviceName, MacDriverType *propBasedDriverType, Boolean *gotPropBasedDriver, FileBasedDriverDetailedPtr fileBasedDrivers, ItemCount *nFileBasedDrivers)
long Stash(DCtlPtr dce, char data)
OSErr PBControlAsync(ParmBlkPtr paramBlock)
OSErr RenameDriver(DriverRefNum refNum, StringPtr newDriverName)
OSErr PBWriteImmed(ParmBlkPtr paramBlock)
OSErr PBOpenAsync(ParmBlkPtr paramBlock)
OSErr OpenInstalledDriver(DriverRefNum refNum, SInt8 ioPermission)
OSErr GetDriverDiskFragment(FSSpecPtr fragmentSpec, CFragConnectionID *fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescriptionPtr *driverDesc)
OSErr GetDriverForDevice(RegEntryID *device, CFragConnectionID *fragmentConnID, DriverEntryPointPtr *fragmentMain, DriverDescriptionPtr *driverDesc)
OSErr PBControlSync(ParmBlkPtr paramBlock)
OSErr PBWriteAsync(ParmBlkPtr paramBlock)
OSErr ScanDriverCandidates(RegEntryID *deviceID, FileBasedDriverRecordPtr fileBasedDrivers, ItemCount nFileBasedDrivers, FileBasedDriverRecordPtr matchingDrivers, ItemCount *nMatchingDrivers)
Disk Driver Interfaces.
Interfaces for create native drivers NDRV.
File Manager (MFS, HFS, and HFS+) Interfaces.
unsigned char * StringPtr
Definition: MacTypes.h:477
unsigned char Boolean
Definition: MacTypes.h:318
WindowRef FrontWindow(void)
Return a pointer to the frontmost window.
Multiprocessing interfaces.
NameRegistry Interfaces.
UInt32 RegPropertyValueSize
Definition: NameRegistry.h:55
OS Utilities Interfaces.
Interface to Quickdraw Graphics.
Definition: ATA.h:616
Definition: Devices.h:218
Definition: CodeFragments.h:500
Definition: Devices.h:201
Definition: Devices.h:185
Definition: DriverFamilyMatching.h:177
Definition: Devices.h:291
Definition: Devices.h:282
Definition: Devices.h:329
Definition: Devices.h:318
Definition: Quickdraw.h:1648
Definition: DriverFamilyMatching.h:79
Definition: MacTypes.h:638
Definition: OSUtils.h:154
Definition: NameRegistry.h:62
Definition: MacWindows.h:754
Definition: Devices.h:303
Definition: Files.h:640