topical media & game development

talk show tell print

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



  /*
       File:       Processes.h
   
       Contains:   Process Manager Interfaces.
   
       Version:    Technology: Mac OS 8
                   Release:    QuickTime 6.0.2
   
       Copyright:  (c) 1989-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 __PROCESSES__
  define __PROCESSES__
  
  ifndef __MACTYPES__
  include <MacTypes.h>
  endif
  
  ifndef __EVENTS__
  include <Events.h>
  endif
  
  ifndef __FILES__
  include <Files.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
  
  /* type for unique process identifier */
  
  struct ProcessSerialNumber {
      unsigned long                   highLongOfPSN;
      unsigned long                   lowLongOfPSN;
  };
  typedef struct ProcessSerialNumber      ProcessSerialNumber;
  typedef ProcessSerialNumber *           ProcessSerialNumberPtr;
  enum {
                                                                  /* Process identifier - Various reserved process serial numbers */
      kNoProcess                  = 0,
      kSystemProcess              = 1,
      kCurrentProcess             = 2
  };
  
  /* Definition of the parameter block passed to _Launch */
  /* Typedef and flags for launchControlFlags field*/
  
  typedef unsigned short                  LaunchFlags;
  enum {
      launchContinue              = 0x4000,
      launchNoFileFlags           = 0x0800,
      launchUseMinimum            = 0x0400,
      launchDontSwitch            = 0x0200,
      launchAllow24Bit            = 0x0100,
      launchInhibitDaemon         = 0x0080
  };
  
  /* Format for first AppleEvent to pass to new process.  The size of the overall
    buffer variable: the message body immediately follows the messageLength */
  
  struct AppParameters {
      EventRecord                     theMsgEvent;
      unsigned long                   eventRefCon;
      unsigned long                   messageLength;
  };
  typedef struct AppParameters            AppParameters;
  typedef AppParameters *                 AppParametersPtr;
  /* Parameter block to _Launch */
  
  struct LaunchParamBlockRec {
      unsigned long                   reserved1;
      unsigned short                  reserved2;
      unsigned short                  launchBlockID;
      unsigned long                   launchEPBLength;
      unsigned short                  launchFileFlags;
      LaunchFlags                     launchControlFlags;
      FSSpecPtr                       launchAppSpec;
      ProcessSerialNumber             launchProcessSN;
      unsigned long                   launchPreferredSize;
      unsigned long                   launchMinimumSize;
      unsigned long                   launchAvailableSize;
      AppParametersPtr                launchAppParameters;
  };
  typedef struct LaunchParamBlockRec      LaunchParamBlockRec;
  
  typedef LaunchParamBlockRec *           LaunchPBPtr;
  /* Set launchBlockID to extendedBlock to specify that extensions exist.
   Set launchEPBLength to extendedBlockLen for compatibility.*/
  enum {
      extendedBlock               = 0x4C43,                       /* 'LC' */
      extendedBlockLen            = sizeof(LaunchParamBlockRec) - 12
  };
  
  enum {
                                                                  /* Definition of the information block returned by GetProcessInformation */
      modeReserved                = 0x01000000,
      modeControlPanel            = 0x00080000,
      modeLaunchDontSwitch        = 0x00040000,
      modeDeskAccessory           = 0x00020000,
      modeMultiLaunch             = 0x00010000,
      modeNeedSuspendResume       = 0x00004000,
      modeCanBackground           = 0x00001000,
      modeDoesActivateOnFGSwitch  = 0x00000800,
      modeOnlyBackground          = 0x00000400,
      modeGetFrontClicks          = 0x00000200,
      modeGetAppDiedMsg           = 0x00000100,
      mode32BitCompatible         = 0x00000080,
      modeHighLevelEventAware     = 0x00000040,
      modeLocalAndRemoteHLEvents  = 0x00000020,
      modeStationeryAware         = 0x00000010,
      modeUseTextEditServices     = 0x00000008,
      modeDisplayManagerAware     = 0x00000004
  };
  
  /* Record returned by GetProcessInformation */
  
  struct ProcessInfoRec {
      unsigned long                   processInfoLength;
      StringPtr                       processName;
      ProcessSerialNumber             processNumber;
      unsigned long                   processType;
      OSType                          processSignature;
      unsigned long                   processMode;
      Ptr                             processLocation;
      unsigned long                   processSize;
      unsigned long                   processFreeMem;
      ProcessSerialNumber             processLauncher;
      unsigned long                   processLaunchDate;
      unsigned long                   processActiveTime;
      FSSpecPtr                       processAppSpec;
  };
  typedef struct ProcessInfoRec           ProcessInfoRec;
  typedef ProcessInfoRec *                ProcessInfoRecPtr;
  /* Record corresponding to the SIZE resource definition */
  
  struct SizeResourceRec {
      unsigned short                  flags;
      unsigned long                   preferredHeapSize;
      unsigned long                   minimumHeapSize;
  };
  typedef struct SizeResourceRec          SizeResourceRec;
  typedef SizeResourceRec *               SizeResourceRecPtr;
  typedef SizeResourceRecPtr *            SizeResourceRecHandle;
                                                                                              #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
                                                                                              #pragma parameter __D0 LaunchApplication(__A0)
                                                                                              #endif
  EXTERN_API( OSErr )
  LaunchApplication               (LaunchPBPtr            LaunchParams)                       ONEWORDINLINE(0xA9F2);
  
  if CALL_NOT_IN_CARBON
  EXTERN_API( OSErr )
  LaunchDeskAccessory             (const FSSpec *         pFileSpec,
                                   ConstStr255Param       pDAName)                            THREEWORDINLINE(0x3F3C, 0x0036, 0xA88F);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  if TARGET_OS_MAC
      #define MacGetCurrentProcess GetCurrentProcess
  endif
  EXTERN_API( OSErr )
  MacGetCurrentProcess            (ProcessSerialNumber *  PSN)                                THREEWORDINLINE(0x3F3C, 0x0037, 0xA88F);
  
  EXTERN_API( OSErr )
  GetFrontProcess                 (ProcessSerialNumber *  PSN)                                FIVEWORDINLINE(0x70FF, 0x2F00, 0x3F3C, 0x0039, 0xA88F);
  
  EXTERN_API( OSErr )
  GetNextProcess                  (ProcessSerialNumber *  PSN)                                THREEWORDINLINE(0x3F3C, 0x0038, 0xA88F);
  
  EXTERN_API( OSErr )
  GetProcessInformation           (const ProcessSerialNumber * PSN,
                                   ProcessInfoRec *       info)                               THREEWORDINLINE(0x3F3C, 0x003A, 0xA88F);
  
  EXTERN_API( OSErr )
  SetFrontProcess                 (const ProcessSerialNumber * PSN)                           THREEWORDINLINE(0x3F3C, 0x003B, 0xA88F);
  
  EXTERN_API( OSErr )
  WakeUpProcess                   (const ProcessSerialNumber * PSN)                           THREEWORDINLINE(0x3F3C, 0x003C, 0xA88F);
  
  EXTERN_API( OSErr )
  SameProcess                     (const ProcessSerialNumber * PSN1,
                                   const ProcessSerialNumber * PSN2,
                                   Boolean *              result)                             THREEWORDINLINE(0x3F3C, 0x003D, 0xA88F);
  
  /*  ExitToShell was previously in SegLoad.h*/
  EXTERN_API( void )
  ExitToShell                     (void)                                                      ONEWORDINLINE(0xA9F4);
  
  /*
     LaunchControlPanel is similar to LaunchDeskAccessory, but for Control Panel files instead.
     It launches a control panel in an application shell maintained by the Process Manager.
  */
  if CALL_NOT_IN_CARBON
  EXTERN_API( OSErr )
  LaunchControlPanel              (const FSSpec *         pFileSpec)                          THREEWORDINLINE(0x3F3C, 0x007B, 0xA88F);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  /* Values of the 'message' parameter to a Control Panel 'cdev' */
  enum {
      initDev                     = 0,                            /*Time for cdev to initialize itself*/
      hitDev                      = 1,                            /*Hit on one of my items*/
      closeDev                    = 2,                            /*Close yourself*/
      nulDev                      = 3,                            /*Null event*/
      updateDev                   = 4,                            /*Update event*/
      activDev                    = 5,                            /*Activate event*/
      deactivDev                  = 6,                            /*Deactivate event*/
      keyEvtDev                   = 7,                            /*Key down/auto key*/
      macDev                      = 8,                            /*Decide whether or not to show up*/
      undoDev                     = 9,
      cutDev                      = 10,
      copyDev                     = 11,
      pasteDev                    = 12,
      clearDev                    = 13,
      cursorDev                   = 14
  };
  
  /* Special values a Control Panel 'cdev' can return */
  enum {
      cdevGenErr                  = -1,                           /*General error; gray cdev w/o alert*/
      cdevMemErr                  = 0,                            /*Memory shortfall; alert user please*/
      cdevResErr                  = 1,                            /*Couldn't get a needed resource; alert*/
      cdevUnset                   = 3                             /* cdevValue is initialized to this*/
  };
  
  /* Control Panel Default Proc */
  typedef CALLBACK_API( long , ControlPanelDefProcPtr )(short message, short item, short numItems, short cPanelID, EventRecord *theEvent, long cdevValue, DialogPtr cpDialog);
  typedef STACK_UPP_TYPE(ControlPanelDefProcPtr)                  ControlPanelDefUPP;
  if OPAQUE_UPP_TYPES
  if CALL_NOT_IN_CARBON
      EXTERN_API(ControlPanelDefUPP)
      NewControlPanelDefUPP          (ControlPanelDefProcPtr  userRoutine);
  
      EXTERN_API(void)
      DisposeControlPanelDefUPP      (ControlPanelDefUPP      userUPP);
  
      EXTERN_API(long)
      InvokeControlPanelDefUPP       (short                   message,
                                      short                   item,
                                      short                   numItems,
                                      short                   cPanelID,
                                      EventRecord *           theEvent,
                                      long                    cdevValue,
                                      DialogPtr               cpDialog,
                                      ControlPanelDefUPP      userUPP);
  
  endif  /* CALL_NOT_IN_CARBON */
  
  else
      enum { uppControlPanelDefProcInfo = 0x000FEAB0 };               /* pascal 4_bytes Func(2_bytes, 2_bytes, 2_bytes, 2_bytes, 4_bytes, 4_bytes, 4_bytes) */
      #define NewControlPanelDefUPP(userRoutine)                      (ControlPanelDefUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlPanelDefProcInfo, GetCurrentArchitecture())
      #define DisposeControlPanelDefUPP(userUPP)                      DisposeRoutineDescriptor(userUPP)
      #define InvokeControlPanelDefUPP(message, item, numItems, cPanelID, theEvent, cdevValue, cpDialog, userUPP)  (long)CALL_SEVEN_PARAMETER_UPP((userUPP), uppControlPanelDefProcInfo, (message), (item), (numItems), (cPanelID), (theEvent), (cdevValue), (cpDialog))
  endif
  /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  define NewControlPanelDefProc(userRoutine)                     NewControlPanelDefUPP(userRoutine)
  define CallControlPanelDefProc(userRoutine, message, item, numItems, cPanelID, theEvent, cdevValue, cpDialog) InvokeControlPanelDefUPP(message, item, numItems, cPanelID, theEvent, cdevValue, cpDialog, userRoutine)
  
  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 /* __PROCESSES__ */
  
  


(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.