sys7.1-doc-wip/Interfaces/CIncludes/PPCToolBox.h
2019-07-27 22:37:48 +08:00

442 lines
17 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/************************************************************
Created: Sunday, January 6, 1991 at 9:38 PM
PPCToolBox.h
C Interface to the Macintosh Libraries
Copyright Apple Computer, Inc. 1989-1992
All rights reserved
Change History (most recent first):
<35> 6/26/92 DCL Get Rid of constant ppcStoreAndForward. Miner Formatting
Changes. Digging deep for things to do. Getting the file ready
for ETO 8.
<34> 4/17/92 JSM Dont define gestaltPPCSupportsStoreAndForward or
gestaltPPCVersionAttr.
<33> 4/15/92 JSM Get rid of all the theFuture and CubeE conditionals, the future
is the same as CubeE for now.
<32> 10/4/91 JSM Change PsychoticFarmerOrLater conditionals to TheFuture.
<31> 9/29/91 DTY For CubeE, add conditional use of resFlag instead of
noAuthRequired.
<30> 7/24/91 JL Fixed the build. PPCOpenPBRec's field noAuthRequired was
resFlag.
<29> 7/24/91 JL Updated Copyright. Restored comments.
<28> 6/4/91 EMT Roll in StoreAndForward Revisions
<27> 1/30/91 JL Checked in database generated file from DSG.
<25> 11/8/90 EMT <stb>Get rid of loginCancelErr and use userCancelledErr
<24> 11/4/90 dba got rid of some extraneous parameter names; changed some
parameters from StringPtr to various string types; used
constStr255Parameter and constStr32Parameter
<23> 11/1/90 DFH Fixed PPCInit inline to have #pragma parameter __D0.
<22> 10/24/90 EMT Remove useless error codes, and add noUserNameErr.
<21> 10/21/90 gbm (with dba) Made compatible with 3.2 C compiler (and incompatible
with previous compilers).
<21> 10/10/90 JAL New style #Pragma Parameters for MPW 3.2 C. Added Sync and Async calls.
<20> 9/25/90 EMT Fix bug in StartSecureSession prototype.
<19> 9/18/90 EMT Change noUserNameErr to the more appropriate noMachineNameErr
nomenclature.
<18> 9/15/90 ngk Change to new, way-cool constants and field names
#### warning this was a major change ####
<17> 9/15/90 EMT Flip bytes in PortInfo structure, required to maintain
compatiblity with older versions on the same network.
<16> 9/15/90 EMT oops, remove the reserved field (for now).
<15> 9/15/90 EMT Add reserved field to LocName to make it big enough for future
systems.
<14> 9/14/90 EMT Change field location, and support opening with type only
<13> 9/14/90 JSM Add theLocNBPType parameter to PPCBrowser().
<12> 3/20/90 S No Change. Changed Some Comments.
<11> 3/20/90 S To Include a reserved field and also include a new field called
requestType in PPCInform Call.
<10> 3/19/90 JSM PPCBrowser now returns PortInfo instead of PortName.
<8> 2/27/90 S To Remove authRequest from PPCOpen Call & include
guestNotAllowedErr.
<7> 2/19/90 JSM Add PPCBrowser interface.
<6> 1/30/90 S Added some Error Codes.
<5> 1/23/90 S Change New style comments to old style comments for LightSpeed C
Compatiblity.
<4> 1/9/90 S Removed some Commented Definitions
<1.1> 11/28/89 CVC Added the StartSecureSession call.
<1.0> 11/1/89 CVC First add the file to CInclude folder.
Old Revision History:
07/25/89 Sangam Added portClosedErr and sessClosedErr codes
08/10/89 Sangam Made Changes to IPCListPorts call
08/10/89 Sangam Changed error code values (Now they are alloted to PPCToolBox !!)
08/10/89 Sangam userEntry filed in PPCRead and PPCWrite calls (RefCon for Multifinder)
09/18/89 Sangam Changed to new definition of PortName, Support for User Authentication
browse by portType (Interface changes to PPCOpen PPCStart, PPCInform
PPCWrite (to suppor 'more' flag) and IPCListPorts).
09/28/89 Sangam Added C++ compatible definitions
10/09/89 Sangam Changed constants for lookupType and portTypes,
changed nameType in LocName structure to short.
1/4/90 Sangam Removed Pad byte in the PortName Type Definition
1/5/90 Sangam Changed the heade structre such that cmdCompletion and cmdResult
to align with similar filed in driver. Some changes to error codes.(Capitalization)
************************************************************/
#ifndef __PPCTOOLBOX__
#define __PPCTOOLBOX__
#ifndef __APPLETALK__
#include <AppleTalk.h>
#endif
#ifndef __MEMORY__
#include <Memory.h>
#endif
#ifndef __TYPES__
#include <Types.h>
#endif
typedef unsigned char PPCServiceType;
enum {
ppcServiceRealTime = 1
};
typedef short PPCLocationKind;
enum {
ppcNoLocation = 0, /* There is no PPCLocName */
ppcNBPLocation = 1, /* Use AppleTalk NBP */
ppcNBPTypeLocation = 2 /* Used for specifying a location name type during PPCOpen only */
};
typedef short PPCPortKinds;
enum {
ppcByCreatorAndType = 1, /* Port type is specified as colloquial Mac creator and type */
ppcByString = 2 /* Port type is in pascal string format */
};
typedef unsigned char PPCSessionOrigin; /* Values returned for request field in PPCInform call */
enum {
/* Values returned for requestType field in PPCInform call */
ppcLocalOrigin = 1, /* session originated from this machine */
ppcRemoteOrigin = 2 /* session originated from remote machine */
};
typedef short PPCPortRefNum;
typedef long PPCSessRefNum;
struct PPCPortRec {
ScriptCode nameScript; /* script of name */
Str32 name; /* name of port as seen in browser */
PPCPortKinds portKindSelector; /* which variant */
union {
Str32 portTypeStr; /* pascal type string */
struct {
OSType creator;
OSType type;
} port;
} u;
};
typedef struct PPCPortRec PPCPortRec;
typedef PPCPortRec *PPCPortPtr;
struct LocationNameRec {
PPCLocationKind locationKindSelector; /* which variant */
union {
EntityName nbpEntity; /* NBP name entity */
Str32 nbpType; /* just the NBP type string, for PPCOpen */
} u;
};
typedef struct LocationNameRec LocationNameRec;
typedef LocationNameRec *LocationNamePtr;
struct PortInfoRec {
unsigned char filler1;
Boolean authRequired;
PPCPortRec name;
};
typedef struct PortInfoRec PortInfoRec;
typedef PortInfoRec *PortInfoPtr;
typedef PortInfoRec *PortInfoArrayPtr;
typedef pascal Boolean (*PPCFilterProcPtr)(LocationNamePtr, PortInfoPtr);
/* Procedures you will need to write */
/* ex: void MyCompletionRoutine(PPCParamBlkPtr pb) */
/* ex: pascal Boolean MyPortFilter(LocationNamePtr, PortInfoPtr) */
typedef ProcPtr PPCCompProcPtr;
#define PPCHeader \
Ptr qLink; /* PPC's Internal Use */\
unsigned short csCode; /* Requested PPC command */\
unsigned short intUse; /* Internal Use */\
Ptr intUsePtr; /* Internal Use */\
/* 12 --> */\
PPCCompProcPtr ioCompletion; /* Completion Routine */\
/* 16 <-- */\
OSErr ioResult; /* Command Result Code */\
unsigned long Reserved[5]; /* Reserved for PPC, Don't use */
struct PPCOpenPBRec {
PPCHeader
PPCPortRefNum portRefNum; /* 38 <-- Port Reference */
long filler1;
PPCServiceType serviceType; /* 44 --> Bit field describing the requested port service */
unsigned char resFlag; /* Must be set to 0 */
PPCPortPtr portName; /* 46 --> PortName for PPC */
LocationNamePtr locationName; /* 50 --> If NBP Registration is required */
Boolean networkVisible; /* 54 --> make this network visible on network */
Boolean nbpRegistered; /* 55 <-- The given location name was registered on the network */
};
typedef struct PPCOpenPBRec PPCOpenPBRec;
typedef PPCOpenPBRec *PPCOpenPBPtr;
struct PPCInformPBRec {
PPCHeader
PPCPortRefNum portRefNum; /* 38 --> Port Identifier */
PPCSessRefNum sessRefNum; /* 40 <-- Session Reference */
PPCServiceType serviceType; /* 44 <-- Status Flags for type of session, local, remote */
Boolean autoAccept; /* 45 --> if true session will be accepted automatically */
PPCPortPtr portName; /* 46 --> Buffer for Source PPCPortRec */
LocationNamePtr locationName; /* 50 --> Buffer for Source LocationNameRec */
StringPtr userName; /* 54 --> Buffer for Soure user's name trying to link. */
unsigned long userData; /* 58 <-- value included in PPCStart's userData */
PPCSessionOrigin requestType; /* 62 <-- Local or Network */
};
typedef struct PPCInformPBRec PPCInformPBRec;
typedef PPCInformPBRec *PPCInformPBPtr;
struct PPCStartPBRec {
PPCHeader
PPCPortRefNum portRefNum; /* 38 --> Port Identifier */
PPCSessRefNum sessRefNum; /* 40 <-- Session Reference */
PPCServiceType serviceType; /* 44 <-- Actual service method (realTime) */
unsigned char resFlag; /* 45 --> Must be set to 0 */
PPCPortPtr portName; /* 46 --> Destination portName */
LocationNamePtr locationName; /* 50 --> NBP or NAS style service location name */
unsigned long rejectInfo; /* 54 <-- reason for rejecting the session request */
unsigned long userData; /* 58 --> Copied to destination PPCInform parameter block */
unsigned long userRefNum; /* 62 --> userRefNum (obtained during login process) */
};
typedef struct PPCStartPBRec PPCStartPBRec;
typedef PPCStartPBRec *PPCStartPBPtr;
struct PPCAcceptPBRec {
PPCHeader
short filler1;
PPCSessRefNum sessRefNum; /* 40 --> Session Reference */
};
typedef struct PPCAcceptPBRec PPCAcceptPBRec;
typedef PPCAcceptPBRec *PPCAcceptPBPtr;
struct PPCRejectPBRec {
PPCHeader
short filler1;
PPCSessRefNum sessRefNum; /* 40 --> Session Reference */
short filler2;
long filler3;
long filler4;
unsigned long rejectInfo; /* 54 --> reason for rejecting the session request */
};
typedef struct PPCRejectPBRec PPCRejectPBRec;
typedef PPCRejectPBRec *PPCRejectPBPtr;
struct PPCWritePBRec {
PPCHeader
short filler1;
PPCSessRefNum sessRefNum; /* 40 --> Session Reference */
Size bufferLength; /* 44 --> Length of the message buffer */
Size actualLength; /* 48 <-- Actual Length Written */
Ptr bufferPtr; /* 52 --> Pointer to message buffer */
Boolean more; /* 56 --> if more data in this block will be written */
unsigned char filler2;
unsigned long userData; /* 58 --> Message block userData Uninterpreted by PPC */
OSType blockCreator; /* 62 --> Message block creator Uninterpreted by PPC */
OSType blockType; /* 66 --> Message block type Uninterpreted by PPC */
};
typedef struct PPCWritePBRec PPCWritePBRec;
typedef PPCWritePBRec *PPCWritePBPtr;
struct PPCReadPBRec {
PPCHeader
short filler1;
PPCSessRefNum sessRefNum; /* 40 --> Session Reference */
Size bufferLength; /* 44 --> Length of the message buffer */
Size actualLength; /* 48 <-- Actual length read */
Ptr bufferPtr; /* 52 --> Pointer to message buffer */
Boolean more; /* 56 <-- if true more data in this block to be read */
unsigned char filler2;
unsigned long userData; /* 58 <-- Message block userData Uninterpreted by PPC */
OSType blockCreator; /* 62 <-- Message block creator Uninterpreted by PPC */
OSType blockType; /* 66 <-- Message block type Uninterpreted by PPC */
};
typedef struct PPCReadPBRec PPCReadPBRec;
typedef PPCReadPBRec *PPCReadPBPtr;
struct PPCEndPBRec {
PPCHeader
short filler1;
PPCSessRefNum sessRefNum; /* 40 --> Session Reference */
};
typedef struct PPCEndPBRec PPCEndPBRec;
typedef PPCEndPBRec *PPCEndPBPtr;
struct PPCClosePBRec {
PPCHeader
PPCPortRefNum portRefNum; /* 38 --> Port Identifier */
};
typedef struct PPCClosePBRec PPCClosePBRec;
typedef PPCClosePBRec *PPCClosePBPtr;
struct IPCListPortsPBRec {
PPCHeader
short filler1;
unsigned short startIndex; /* 40 --> Start Index */
unsigned short requestCount; /* 42 --> Number of entries to be returned */
unsigned short actualCount; /* 44 <-- Actual Number of entries to be returned */
PPCPortPtr portName; /* 46 --> PortName Match */
LocationNamePtr locationName; /* 50 --> NBP or NAS type name to locate the Port Location */
PortInfoArrayPtr bufferPtr; /* 54 --> Pointer to a buffer requestCount*sizeof(PortInfo) bytes big */
};
typedef struct IPCListPortsPBRec IPCListPortsPBRec;
typedef IPCListPortsPBRec *IPCListPortsPBPtr;
union PPCParamBlockRec {
PPCOpenPBRec openParam;
PPCInformPBRec informParam;
PPCStartPBRec startParam;
PPCAcceptPBRec acceptParam;
PPCRejectPBRec rejectParam;
PPCWritePBRec writeParam;
PPCReadPBRec readParam;
PPCEndPBRec endParam;
PPCClosePBRec closeParam;
IPCListPortsPBRec listPortsParam;
};
typedef union PPCParamBlockRec PPCParamBlockRec;
typedef PPCParamBlockRec *PPCParamBlockPtr;
#ifdef __cplusplus
extern "C" {
#endif
/* PPC Calling Conventions */
#pragma parameter __D0 PPCInit
pascal OSErr PPCInit(void)
= {0x7000,0xA0DD};
pascal OSErr PPCOpen(PPCOpenPBPtr pb,Boolean async);
#pragma parameter __D0 PPCOpenSync(__A0)
pascal OSErr PPCOpenSync(PPCOpenPBPtr pb)
= {0x7001,0xA0DD};
#pragma parameter __D0 PPCOpenAsync(__A0)
pascal OSErr PPCOpenAsync(PPCOpenPBPtr pb)
= {0x7001,0xA4DD};
pascal OSErr PPCInform(PPCInformPBPtr pb,Boolean async);
#pragma parameter __D0 PPCInformSync(__A0)
pascal OSErr PPCInformSync(PPCInformPBPtr pb)
= {0x7003,0xA0DD};
#pragma parameter __D0 PPCInformAsync(__A0)
pascal OSErr PPCInformAsync(PPCInformPBPtr pb)
= {0x7003,0xA4DD};
pascal OSErr PPCStart(PPCStartPBPtr pb,Boolean async);
#pragma parameter __D0 PPCStartSync(__A0)
pascal OSErr PPCStartSync(PPCStartPBPtr pb)
= {0x7002,0xA0DD};
#pragma parameter __D0 PPCStartAsync(__A0)
pascal OSErr PPCStartAsync(PPCStartPBPtr pb)
= {0x7002,0xA4DD};
pascal OSErr PPCAccept(PPCAcceptPBPtr pb,Boolean async);
#pragma parameter __D0 PPCAcceptSync(__A0)
pascal OSErr PPCAcceptSync(PPCAcceptPBPtr pb)
= {0x7004,0xA0DD};
#pragma parameter __D0 PPCAcceptAsync(__A0)
pascal OSErr PPCAcceptAsync(PPCAcceptPBPtr pb)
= {0x7004,0xA4DD};
pascal OSErr PPCReject(PPCRejectPBPtr pb,Boolean async);
#pragma parameter __D0 PPCRejectSync(__A0)
pascal OSErr PPCRejectSync(PPCRejectPBPtr pb)
= {0x7005,0xA0DD};
#pragma parameter __D0 PPCRejectAsync(__A0)
pascal OSErr PPCRejectAsync(PPCRejectPBPtr pb)
= {0x7005,0xA4DD};
pascal OSErr PPCWrite(PPCWritePBPtr pb,Boolean async);
#pragma parameter __D0 PPCWriteSync(__A0)
pascal OSErr PPCWriteSync(PPCWritePBPtr pb)
= {0x7006,0xA0DD};
#pragma parameter __D0 PPCWriteAsync(__A0)
pascal OSErr PPCWriteAsync(PPCWritePBPtr pb)
= {0x7006,0xA4DD};
pascal OSErr PPCRead(PPCReadPBPtr pb,Boolean async);
#pragma parameter __D0 PPCReadSync(__A0)
pascal OSErr PPCReadSync(PPCReadPBPtr pb)
= {0x7007,0xA0DD};
#pragma parameter __D0 PPCReadAsync(__A0)
pascal OSErr PPCReadAsync(PPCReadPBPtr pb)
= {0x7007,0xA4DD};
pascal OSErr PPCEnd(PPCEndPBPtr pb,Boolean async);
#pragma parameter __D0 PPCEndSync(__A0)
pascal OSErr PPCEndSync(PPCEndPBPtr pb)
= {0x7008,0xA0DD};
#pragma parameter __D0 PPCEndAsync(__A0)
pascal OSErr PPCEndAsync(PPCEndPBPtr pb)
= {0x7008,0xA4DD};
pascal OSErr PPCClose(PPCClosePBPtr pb,Boolean async);
#pragma parameter __D0 PPCCloseSync(__A0)
pascal OSErr PPCCloseSync(PPCClosePBPtr pb)
= {0x7009,0xA0DD};
#pragma parameter __D0 PPCCloseAsync(__A0)
pascal OSErr PPCCloseAsync(PPCClosePBPtr pb)
= {0x7009,0xA4DD};
pascal OSErr IPCListPorts(IPCListPortsPBPtr pb,Boolean async);
#pragma parameter __D0 IPCListPortsSync(__A0)
pascal OSErr IPCListPortsSync(IPCListPortsPBPtr pb)
= {0x700A,0xA0DD};
#pragma parameter __D0 IPCListPortsAsync(__A0)
pascal OSErr IPCListPortsAsync(IPCListPortsPBPtr pb)
= {0x700A,0xA4DD};
pascal OSErr DeleteUserIdentity(unsigned long userRef);
pascal OSErr GetDefaultUser(unsigned long *userRef,
Str32 userName);
pascal OSErr StartSecureSession(PPCStartPBPtr pb,
Str32 userName,
Boolean useDefault,
Boolean allowGuest,
Boolean *guestSelected,
ConstStr255Param prompt);
pascal OSErr PPCBrowser(ConstStr255Param prompt,
ConstStr255Param applListLabel,
Boolean defaultSpecified,
LocationNameRec *theLocation,
PortInfoRec *thePortInfo,
PPCFilterProcPtr portFilter,
ConstStr32Param theLocNBPType)
= {0x303C,0x0D00,0xA82B};
#ifdef __cplusplus
}
#endif
#endif