topical media & game development

talk show tell print

lib-of-vs-libs-QTDevWin-CIncludes-Disks.h / h



  /*
       File:       Disks.h
   
       Contains:   Disk Driver Interfaces.
   
       Version:    Technology: System 7.5
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1985-2001 by Apple Computer, Inc., all rights reserved
   
       Bugs?:      For bug reports, consult the following page on
                   the World Wide Web:
   
                       http://developer.apple.com/bugreporter/
   
  */
  ifndef __DISKS__
  define __DISKS__
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __OSUTILS__
  include <OSUtils.h>
  endif
  
  if PRAGMA_ONCE
  #pragma once
  endif
  
  ifdef __cplusplus
  extern "C" {
  endif
  
  if PRAGMA_IMPORT
  #pragma import on
  endif
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=mac68k
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(push, 2)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack(2)
  endif
  
  enum {
      sony                        = 0,
      hard20                      = 1
  };
  
  /* Disk Driver Status csCodes */
  enum {
      kReturnFormatList           = 6,                            /* .Sony */
      kDriveStatus                = 8,
      kMFMStatus                  = 10
  };
  
  /* Disk Driver Control csCodes */
  enum {
      kVerify                     = 5,
      kFormat                     = 6,
      kEject                      = 7,
      kSetTagBuffer               = 8,                            /* .Sony */
      kTrackCache                 = 9,                            /* .Sony */
      kDriveIcon                  = 21,
      kMediaIcon                  = 22,
      kDriveInfo                  = 23,
      kRawTrack                   = 18244                         /* .Sony: "diagnostic" raw track dump */
  };
  
  /*
      Note:
  
      qLink is usually the first field in queues, but back in the MacPlus
      days, the DrvSts record needed to be expanded.  In order to do this without
      breaking disk drivers that already added stuff to the end, the fields
      where added to the beginning.  This was originally done in assembly language
      and the record was defined to start at a negative offset, so that the qLink
      field would end up at offset zero.  When the C and pascal interfaces where
      made, they could not support negative record offsets, so qLink was no longer
      the first field.  Universal Interfaces are auto generated and don't support
      negative offsets for any language, so DrvSts in Disks.a has qLinks at a
      none zero offset.  Assembly code which switches to Universal Interfaces will
      need to compensate for that.
  
  */
  
  struct DrvSts {
      short                           track;                      /* current track */
      char                            writeProt;                  /* bit 7 = 1 if volume is locked */
      char                            diskInPlace;                /* disk in drive */
      char                            installed;                  /* drive installed */
      char                            sides;                      /* -1 for 2-sided, 0 for 1-sided */
      QElemPtr                        qLink;                      /* next queue entry */
      short                           qType;                      /* 1 for HD20 */
      short                           dQDrive;                    /* drive number */
      short                           dQRefNum;                   /* driver reference number */
      short                           dQFSID;                     /* file system ID */
      char                            twoSideFmt;                 /* after 1st rd/wrt: 0=1 side, -1=2 side */
      char                            needsFlush;                 /* -1 for MacPlus drive */
      short                           diskErrs;                   /* soft error count */
  };
  typedef struct DrvSts                   DrvSts;
  
  struct DrvSts2 {
      short                           track;
      char                            writeProt;
      char                            diskInPlace;
      char                            installed;
      char                            sides;
      QElemPtr                        qLink;
      short                           qType;
      short                           dQDrive;
      short                           dQRefNum;
      short                           dQFSID;
      short                           driveSize;
      short                           driveS1;
      short                           driveType;
      short                           driveManf;
      short                           driveChar;
      char                            driveMisc;
  };
  typedef struct DrvSts2                  DrvSts2;
  enum {
      kdqManualEjectBit           = 5
  };
  
  if CALL_NOT_IN_CARBON
  if CALL_NOT_IN_CARBON
  EXTERN_API( OSErr )
  DiskEject                       (short                  drvNum);
  
  EXTERN_API( OSErr )
  SetTagBuffer                    (void *                 buffPtr);
  
  EXTERN_API( OSErr )
  DriveStatus                     (short                  drvNum,
                                   DrvSts *               status);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  endif  /* CALL_NOT_IN_CARBON */
  
  if PRAGMA_STRUCT_ALIGN
      #pragma options align=reset
  #elif PRAGMA_STRUCT_PACKPUSH
      #pragma pack(pop)
  #elif PRAGMA_STRUCT_PACK
      #pragma pack()
  endif
  
  ifdef PRAGMA_IMPORT_OFF
  #pragma import off
  #elif PRAGMA_IMPORT
  #pragma import reset
  endif
  
  ifdef __cplusplus
  }
  endif
  
  endif /* __DISKS__ */
  
  


(C) Æliens 04/09/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.