topical media & game development
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.