OCEAuthDir.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:242k
源码类别:

多媒体编程

开发平台:

Visual C++

  1.     OSErr                           ioResult;
  2.     unsigned long                   saveA5;
  3.     short                           reqCode;
  4.     long                            reserved[2];
  5.     AddrBlock                       serverHint;
  6.     short                           dsRefNum;
  7.     unsigned long                   callID;
  8.     AuthIdentity                    identity;
  9.     long                            gReserved1;
  10.     long                            gReserved2;
  11.     long                            gReserved3;
  12.     long                            clientData;
  13.     RecordIDPtr                     aRecord;                    /*  --> */
  14.     RStringPtr                      startingName;               /*  --> */
  15.     RStringPtr                      startingType;               /*  --> */
  16.     long                            dReserved;                  /*  --  */
  17.     long                            eReserved;                  /*  --  */
  18.     long                            fReserved;                  /*  --  */
  19.     long                            gReserved;                  /*  --  */
  20.     long                            hReserved;                  /*  --  */
  21.     Boolean                         includeStartingPoint;       /*  --> if true return the Pseudonym specified by starting point will be included */
  22.     Byte                            padByte;
  23.     short                           i1Reserved;                 /*  --  */
  24.     void *                          getBuffer;                  /*  --> */
  25.     unsigned long                   getBufferSize;              /*  --> */
  26. };
  27. typedef struct DirEnumeratePseudonymGetPB DirEnumeratePseudonymGetPB;
  28. /* The call-back function is defined as follows: */
  29. typedef CALLBACK_API( Boolean , ForEachRecordIDProcPtr )(long clientData, const RecordID *recordID);
  30. typedef STACK_UPP_TYPE(ForEachRecordIDProcPtr)                  ForEachRecordIDUPP;
  31. typedef ForEachRecordIDUPP              ForEachRecordID;
  32. /*
  33. EnumeratePseudonymParse:
  34. The pseudonyms returned in the 'getBuffer' from the EnumeratePseudonymGet call
  35. can be extracted by using the EnumeratePseudonymParse call. 'eachRecordID'
  36. will be called for each pseudonym.
  37. Returning true from any call-back will terminate the EnumeratePseudonymParse call.
  38. For synchronous calls, the call-back routine actually runs as part of the same thread
  39. of execution as the thread that made the EnumeratePseudonymParse call.  That means that the
  40. same low-memory globals, A5, stack, etc. are in effect during the call-back
  41. that were in effect when the call was made.  Because of this, the call-back
  42. routine has the same restrictions as the caller of EnumeratePseudonymParse:
  43. if EnumeratePseudonymParse was not called from interrupt level, then the call-
  44. back routine can allocate memory. For asynchronous calls, call-back routine is
  45. like a ioCompletion except that A5 will be preserved for the application.
  46. */
  47. struct DirEnumeratePseudonymParsePB {
  48.     void *                          qLink;
  49.     long                            reserved1;
  50.     long                            reserved2;
  51.     DirIOCompletionUPP              ioCompletion;
  52.     OSErr                           ioResult;
  53.     unsigned long                   saveA5;
  54.     short                           reqCode;
  55.     long                            reserved[2];
  56.     AddrBlock                       serverHint;
  57.     short                           dsRefNum;
  58.     unsigned long                   callID;
  59.     AuthIdentity                    identity;
  60.     long                            gReserved1;
  61.     long                            gReserved2;
  62.     long                            gReserved3;
  63.     long                            clientData;
  64.     RecordIDPtr                     aRecord;                    /*  --> same as DirEnumerateAliasesGetPB */
  65.     long                            bReserved;                  /*  --  */
  66.     long                            cReserved;                  /*  --  */
  67.     ForEachRecordID                 eachRecordID;               /*  --> */
  68.     long                            eReserved;                  /*  --  */
  69.     long                            fReserved;                  /*  --  */
  70.     long                            gReserved;                  /*  --  */
  71.     long                            hReserved;                  /*  --  */
  72.     long                            iReserved;                  /*  --  */
  73.     void *                          getBuffer;                  /*  --> */
  74.     unsigned long                   getBufferSize;              /*  --> */
  75. };
  76. typedef struct DirEnumeratePseudonymParsePB DirEnumeratePseudonymParsePB;
  77. /* GetNameAndType */
  78. struct DirGetNameAndTypePB {
  79.     void *                          qLink;
  80.     long                            reserved1;
  81.     long                            reserved2;
  82.     DirIOCompletionUPP              ioCompletion;
  83.     OSErr                           ioResult;
  84.     unsigned long                   saveA5;
  85.     short                           reqCode;
  86.     long                            reserved[2];
  87.     AddrBlock                       serverHint;
  88.     short                           dsRefNum;
  89.     unsigned long                   callID;
  90.     AuthIdentity                    identity;
  91.     long                            gReserved1;
  92.     long                            gReserved2;
  93.     long                            gReserved3;
  94.     long                            clientData;
  95.     RecordIDPtr                     aRecord;                    /*  --> */
  96. };
  97. typedef struct DirGetNameAndTypePB      DirGetNameAndTypePB;
  98. /*
  99. aRecord must contain valid RLI and a CreationID.  It
  100. must also contain pointers to maximum-length RStrings (name and type fields)
  101. in which will be returned the record's distinguished name and type.
  102. */
  103. /*
  104. SetNameAndType:
  105. This call can be used to change a name and type for a record. The record
  106. to be renamed is specified using 'aRecord'.
  107. 'newName' and 'newType' indicate the name and type to be set.
  108. 'allowDuplicate' if true indicates that name is to be set even if another
  109. name and type exactly matches the newName and newType specified.
  110. 'newName' and 'newType' are required since the catalogs not supporting
  111. CreationID require name and type fields in the recordID to identify a given
  112. record.
  113. */
  114. struct DirSetNameAndTypePB {
  115.     void *                          qLink;
  116.     long                            reserved1;
  117.     long                            reserved2;
  118.     DirIOCompletionUPP              ioCompletion;
  119.     OSErr                           ioResult;
  120.     unsigned long                   saveA5;
  121.     short                           reqCode;
  122.     long                            reserved[2];
  123.     AddrBlock                       serverHint;
  124.     short                           dsRefNum;
  125.     unsigned long                   callID;
  126.     AuthIdentity                    identity;
  127.     long                            gReserved1;
  128.     long                            gReserved2;
  129.     long                            gReserved3;
  130.     long                            clientData;
  131.     RecordIDPtr                     aRecord;                    /*  --> */
  132.     Boolean                         allowDuplicate;             /*  --> */
  133.     Byte                            padByte;
  134.     RStringPtr                      newName;                    /*  --> new name for the record */
  135.     RStringPtr                      newType;                    /*  --> new type for the record */
  136. };
  137. typedef struct DirSetNameAndTypePB      DirSetNameAndTypePB;
  138. /*
  139. DirGetMetaRecordInfo: This call can be made to obtain
  140. the MetaRecordInfo for a given record. Information returned
  141. is 16 bytes of OPAQUE information about the record.
  142. */
  143. struct DirGetRecordMetaInfoPB {
  144.     void *                          qLink;
  145.     long                            reserved1;
  146.     long                            reserved2;
  147.     DirIOCompletionUPP              ioCompletion;
  148.     OSErr                           ioResult;
  149.     unsigned long                   saveA5;
  150.     short                           reqCode;
  151.     long                            reserved[2];
  152.     AddrBlock                       serverHint;
  153.     short                           dsRefNum;
  154.     unsigned long                   callID;
  155.     AuthIdentity                    identity;
  156.     long                            gReserved1;
  157.     long                            gReserved2;
  158.     long                            gReserved3;
  159.     long                            clientData;
  160.     RecordIDPtr                     aRecord;                    /*  --> */
  161.     DirMetaInfo                     metaInfo;                   /* <--  */
  162. };
  163. typedef struct DirGetRecordMetaInfoPB   DirGetRecordMetaInfoPB;
  164. /*
  165. DirGetDNodeMetaInfo: This call can be made to obtain
  166. the DNodeMetaInfo for a given Packed RLI. Information returned
  167. is 16 bytes of OPAQUE information about the DNode.
  168. */
  169. struct DirGetDNodeMetaInfoPB {
  170.     void *                          qLink;
  171.     long                            reserved1;
  172.     long                            reserved2;
  173.     DirIOCompletionUPP              ioCompletion;
  174.     OSErr                           ioResult;
  175.     unsigned long                   saveA5;
  176.     short                           reqCode;
  177.     long                            reserved[2];
  178.     AddrBlock                       serverHint;
  179.     short                           dsRefNum;
  180.     unsigned long                   callID;
  181.     AuthIdentity                    identity;
  182.     long                            gReserved1;
  183.     long                            gReserved2;
  184.     long                            gReserved3;
  185.     long                            clientData;
  186.     PackedRLIPtr                    pRLI;                       /*  --> */
  187.     DirMetaInfo                     metaInfo;                   /* <--  */
  188. };
  189. typedef struct DirGetDNodeMetaInfoPB    DirGetDNodeMetaInfoPB;
  190. /*
  191. EnumerateDirectoriesGet:
  192. A user can enumerate all the catalogs installed. This includes installed
  193. ADAP and CSAM catalogs. The user can specify a signature as input to restrict
  194. the results. kDirADAPKind will return only ADAP catalogs, kDirDSAMKind
  195. will return all CSAM catalogs. kDirAllKinds will get both ADAP & CSAM catalogs.
  196. A specific signature (e.g. X.500) may be used to get catalogs with an X.500 signature.
  197. The information for each catalog returned will have directoryName, discriminator and features.
  198. If the user receives 'noErr' or 'kOCEMoreData', the buffer will contain valid results. A user
  199. can extract the results in the 'getBuffer' by making an DirEnumerateDirectories call.
  200. If 'kOCEMoreData' is received, the user can continue enumeration by using the last catalog and
  201. discriminator as startingDirectoryName and staringDirDiscriminator in the next call.
  202. If 'includeStartingPoint' is true and a starting point is specified,
  203. the staring point will be returned in the result. If false, it is not included.
  204. */
  205. struct DirEnumerateDirectoriesGetPB {
  206.     void *                          qLink;
  207.     long                            reserved1;
  208.     long                            reserved2;
  209.     DirIOCompletionUPP              ioCompletion;
  210.     OSErr                           ioResult;
  211.     unsigned long                   saveA5;
  212.     short                           reqCode;
  213.     long                            reserved[2];
  214.     AddrBlock                       serverHint;
  215.     short                           dsRefNum;
  216.     unsigned long                   callID;
  217.     AuthIdentity                    identity;
  218.     long                            gReserved1;
  219.     long                            gReserved2;
  220.     long                            gReserved3;
  221.     long                            clientData;
  222.     OCEDirectoryKind                directoryKind;              /*  --> enumerate catalogs bearing this signature */
  223.     DirectoryNamePtr                startingDirectoryName;      /*  --> staring catalog name */
  224.     DirDiscriminator                startingDirDiscriminator;   /*  --> staring catalog discriminator */
  225.     long                            eReserved;                  /*  --  */
  226.     long                            fReserved;                  /*  --  */
  227.     long                            gReserved;                  /*  --  */
  228.     long                            hReserved;                  /*  --  */
  229.     Boolean                         includeStartingPoint;       /*  --> if true return the catalog specified by starting point */
  230.     Byte                            padByte;
  231.     short                           i1Reserved;                 /*  --  */
  232.     void *                          getBuffer;                  /*  --> */
  233.     unsigned long                   getBufferSize;              /*  --> */
  234. };
  235. typedef struct DirEnumerateDirectoriesGetPB DirEnumerateDirectoriesGetPB;
  236. typedef CALLBACK_API( Boolean , ForEachDirectoryProcPtr )(long clientData, const DirectoryName *dirName, const DirDiscriminator *discriminator, DirGestalt features);
  237. typedef STACK_UPP_TYPE(ForEachDirectoryProcPtr)                 ForEachDirectoryUPP;
  238. typedef ForEachDirectoryUPP             ForEachDirectory;
  239. /*
  240. EnumerateDirectoriesParse:
  241. The catalog info returned in 'getBuffer' from the EnumerateDirectoriesGet call
  242. can be extracted using the EnumerateDirectoriesParse call. 'eachDirectory' will
  243. be called for each catalog.
  244. Returning true from any call-back will terminate the EnumerateDirectoriesParse call.
  245. For synchronous calls, the call-back routine actually runs as part of the same thread
  246. of execution as the thread that made the EnumerateDirectoriesParse call.  That means that the
  247. same low-memory globals, A5, stack, etc. are in effect during the call-back
  248. that were in effect when the call was made.  Because of this, the call-back
  249. routine has the same restrictions as the caller of EnumerateDirectoriesParse:
  250. if EnumerateDirectoriesParse was not called from interrupt level, then the call-
  251. back routine can allocate memory. For asynchronous calls, call-back routine is
  252. like a ioCompletion except that A5 will be preserved for the application.
  253. eachDirectory will be called each time to return to the client a
  254. DirectoryName, DirDiscriminator, and features for that catalog.
  255. */
  256. struct DirEnumerateDirectoriesParsePB {
  257.     void *                          qLink;
  258.     long                            reserved1;
  259.     long                            reserved2;
  260.     DirIOCompletionUPP              ioCompletion;
  261.     OSErr                           ioResult;
  262.     unsigned long                   saveA5;
  263.     short                           reqCode;
  264.     long                            reserved[2];
  265.     AddrBlock                       serverHint;
  266.     short                           dsRefNum;
  267.     unsigned long                   callID;
  268.     AuthIdentity                    identity;
  269.     long                            gReserved1;
  270.     long                            gReserved2;
  271.     long                            gReserved3;
  272.     long                            clientData;
  273.     long                            aReserved;                  /*  --  */
  274.     long                            bReserved;                  /*  --  */
  275.     long                            cReserved;                  /*  --  */
  276.     long                            dReserved;                  /*  --  */
  277.     ForEachDirectory                eachDirectory;              /*  --> */
  278.     long                            fReserved;                  /*  --  */
  279.     long                            gReserved;                  /*  --  */
  280.     long                            hReserved;                  /*  --  */
  281.     long                            iReserved;                  /*  --  */
  282.     void *                          getBuffer;                  /*  --> */
  283.     unsigned long                   getBufferSize;              /*  --> */
  284. };
  285. typedef struct DirEnumerateDirectoriesParsePB DirEnumerateDirectoriesParsePB;
  286. /*
  287. The Following five call are specific to ADAP Catalogs. Toolbox
  288. remembers a list of catalogs across boots. If any catalog service
  289. call is intended for a ADAP catalog, then it must be in the list.
  290. In order for managing this list, A client (Probably DE will use these
  291. calls.
  292. DirAddADAPDirectoryPB: Add a new ADAP catalog to the list.
  293. DirRemoveADAPDirectory: Remove a ADAP catalog from the list.
  294. DirNetSearchADAPDirectoriesGet:   search an internet for adas catalogs.
  295. DirNetSearchADAPDirectoriesParse: extract the results obtained NetSearchADAPDirectoriesGet.
  296. DirFindADAPDirectoryByNetSearch: Find a specified catalog through net search.
  297. */
  298. /*
  299. NetSearchADAPDirectoriesGet:
  300. This call can be used to make a network wide search for finding ADAP catalogs.
  301. This call will be supported only by 'ADAP' and involve highly expensive
  302. network operations, so the user is advised to use utmost discretion before
  303. making this call. The results will be collected in the 'getbuffer' and can be
  304. extracted using NetSearchADAPDirectoriesParse call. The directoryName,
  305. the directoryDiscriminator, features and serverHint (AppleTalk address for
  306. a PathFinder serving that catalog) are collected for each catalog found
  307. on the network. If buffer is too small to hold all the catalogs found on
  308. the network, a 'kOCEMoreData' error will be returned.
  309. */
  310. struct DirNetSearchADAPDirectoriesGetPB {
  311.     void *                          qLink;
  312.     long                            reserved1;
  313.     long                            reserved2;
  314.     DirIOCompletionUPP              ioCompletion;
  315.     OSErr                           ioResult;
  316.     unsigned long                   saveA5;
  317.     short                           reqCode;
  318.     long                            reserved[2];
  319.     AddrBlock                       serverHint;
  320.     short                           dsRefNum;
  321.     unsigned long                   callID;
  322.     AuthIdentity                    identity;
  323.     long                            gReserved1;
  324.     long                            gReserved2;
  325.     long                            gReserved3;
  326.     long                            clientData;
  327.     void *                          getBuffer;                  /*  --> */
  328.     unsigned long                   getBufferSize;              /*  --> */
  329.     long                            cReserved;                  /*  --  */
  330. };
  331. typedef struct DirNetSearchADAPDirectoriesGetPB DirNetSearchADAPDirectoriesGetPB;
  332. typedef CALLBACK_API( Boolean , ForEachADAPDirectoryProcPtr )(long clientData, const DirectoryName *dirName, const DirDiscriminator *discriminator, DirGestalt features, AddrBlock serverHint);
  333. typedef STACK_UPP_TYPE(ForEachADAPDirectoryProcPtr)             ForEachADAPDirectoryUPP;
  334. typedef ForEachADAPDirectoryUPP         ForEachADAPDirectory;
  335. /*
  336. DirNetSearchADAPDirectoriesParse:
  337. This call can be used to extract the results obtained in the 'getBuffer'.
  338. The directoryName, directoryDiscriminator, features and
  339. serverHint (AppleTalk address for a PathFinder serving that catalog) are
  340. returned in each call-back. These values may be used to make an
  341. AddADAPDirectory call.
  342. Returning TRUE from any call-back will terminate the NetSearchADAPDirectoriesParse request.
  343. For synchronous calls, the call-back routine actually runs as part of the same thread
  344. of execution as the thread that made the DirNetSearchADAPDirectoriesParse call. That means that the
  345. same low-memory globals, A5, stack, etc. are in effect during the call-back
  346. that were in effect when the call was made.  Because of this, the call-back
  347. routine has the same restrictions as the caller of DirNetSearchADAPDirectoriesParse:
  348. if DirNetSearchADAPDirectoriesParse was not called from interrupt level, then the call-
  349. back routine can allocate memory. For asynchronous calls, call-back routine is
  350. like a ioCompletion except that A5 will be preserved for the application.
  351. */
  352. struct DirNetSearchADAPDirectoriesParsePB {
  353.     void *                          qLink;
  354.     long                            reserved1;
  355.     long                            reserved2;
  356.     DirIOCompletionUPP              ioCompletion;
  357.     OSErr                           ioResult;
  358.     unsigned long                   saveA5;
  359.     short                           reqCode;
  360.     long                            reserved[2];
  361.     AddrBlock                       serverHint;
  362.     short                           dsRefNum;
  363.     unsigned long                   callID;
  364.     AuthIdentity                    identity;
  365.     long                            gReserved1;
  366.     long                            gReserved2;
  367.     long                            gReserved3;
  368.     long                            clientData;
  369.     void *                          getBuffer;                  /*  --> */
  370.     unsigned long                   getBufferSize;              /*  --> */
  371.     ForEachADAPDirectory            eachADAPDirectory;          /*  --> */
  372. };
  373. typedef struct DirNetSearchADAPDirectoriesParsePB DirNetSearchADAPDirectoriesParsePB;
  374. /*
  375. DirFindADAPDirectoryByNetSearch:
  376. This call can be used to make a network wide search to find an ADAP catalog.
  377. This call will be supported only by 'ADAP' and involves highly expensive
  378. network operations, so the user is advised to use utmost discretion before
  379. making this call. The catalog is specified using directoryName and discriminator.
  380. If 'addToOCESetup' is true, the catalog will be automatically added to the setup
  381. list and will be visible through the EnumerateDirectories call and also
  382. also a creationID to the directoryRecord will be returned.
  383. If this parameter is set to 'false', the catalog will be added to temporary list
  384. and will be available for making other catalog service calls. The catalogs
  385. which are not in the preference catalog list will not be visible through the
  386. EnumerateDirectories call.
  387. */
  388. struct DirFindADAPDirectoryByNetSearchPB {
  389.     void *                          qLink;
  390.     long                            reserved1;
  391.     long                            reserved2;
  392.     DirIOCompletionUPP              ioCompletion;
  393.     OSErr                           ioResult;
  394.     unsigned long                   saveA5;
  395.     short                           reqCode;
  396.     long                            reserved[2];
  397.     AddrBlock                       serverHint;
  398.     short                           dsRefNum;
  399.     unsigned long                   callID;
  400.     AuthIdentity                    identity;
  401.     long                            gReserved1;
  402.     long                            gReserved2;
  403.     long                            gReserved3;
  404.     long                            clientData;
  405.     DirectoryNamePtr                directoryName;              /*  --> catalog name */
  406.     DirDiscriminator                discriminator;              /*  --> discriminate between dup catalog names */
  407.     Boolean                         addToOCESetup;              /*  --> add this catalog to OCE Setup List */
  408.     Byte                            padByte;
  409.     CreationID                      directoryRecordCID;         /* <--  creationID for the catalog record */
  410. };
  411. typedef struct DirFindADAPDirectoryByNetSearchPB DirFindADAPDirectoryByNetSearchPB;
  412. /*
  413. DirAddADAPDirectory:
  414. The catalog specified by 'directoryName' and 'discriminator' will be
  415. added to the list of catalogs maintained by the Toolbox. Once added,
  416. the catalog is available across boots, until the catalog is removed
  417. explicitly through a DirRemoveADAPDirectory call.
  418. If 'serverHint' is not nil, the address provided will be used
  419. to contact a PathFinder for the catalog specified.
  420. If 'serverHint' is nil or does not point to a valid PathFinder server
  421. for that catalog, this call will fail.
  422. If 'addToOCESetup' is true, the catalog will be automatically added to the setup
  423. catalog list and will be visible through EnumerateDirectories calls and
  424. also a creationID to the directoryRecord will be returned.
  425. If this parameter is set to 'false', catalog will be added to temprary list
  426. and will be available for making other catalog service calls. The catalogs
  427. which are not in the setup  list will not be visible through
  428. EnumerateDirectories call.
  429. */
  430. struct DirAddADAPDirectoryPB {
  431.     void *                          qLink;
  432.     long                            reserved1;
  433.     long                            reserved2;
  434.     DirIOCompletionUPP              ioCompletion;
  435.     OSErr                           ioResult;
  436.     unsigned long                   saveA5;
  437.     short                           reqCode;
  438.     long                            reserved[2];
  439.     AddrBlock                       serverHint;
  440.     short                           dsRefNum;
  441.     unsigned long                   callID;
  442.     AuthIdentity                    identity;
  443.     long                            gReserved1;
  444.     long                            gReserved2;
  445.     long                            gReserved3;
  446.     long                            clientData;
  447.     DirectoryNamePtr                directoryName;              /*  --> catalog name */
  448.     DirDiscriminator                discriminator;              /*  --> discriminate between dup catalog names */
  449.     Boolean                         addToOCESetup;              /*  --> add this catalog to OCE Setup */
  450.     Byte                            padByte;
  451.     CreationID                      directoryRecordCID;         /* <--  creationID for the catalog record */
  452. };
  453. typedef struct DirAddADAPDirectoryPB    DirAddADAPDirectoryPB;
  454. /*
  455. GetDirectoryInfo:
  456. DirGetDirectoryInfo will do:
  457. If a 'dsRefNum' is non-Zero, the catalog information for
  458.     the corresponding  PAB will be  returned.
  459.  If 'dsRefNum' is zero and 'serverHint' is non-zero, If the
  460.  'serverHint' points to a valid ADAP Catalog Server(Path Finder),
  461.  the catalog information (i.e. directoryName, discriminator, features)
  462.  for that catalog will be returned.
  463.     If a  valid catalog name and discriminator are provided
  464.     features (Set of capability flags) for that catalog will be returned.
  465. */
  466. struct DirGetDirectoryInfoPB {
  467.     void *                          qLink;
  468.     long                            reserved1;
  469.     long                            reserved2;
  470.     DirIOCompletionUPP              ioCompletion;
  471.     OSErr                           ioResult;
  472.     unsigned long                   saveA5;
  473.     short                           reqCode;
  474.     long                            reserved[2];
  475.     AddrBlock                       serverHint;
  476.     short                           dsRefNum;
  477.     unsigned long                   callID;
  478.     AuthIdentity                    identity;
  479.     long                            gReserved1;
  480.     long                            gReserved2;
  481.     long                            gReserved3;
  482.     long                            clientData;
  483.     DirectoryNamePtr                directoryName;              /*  --> catalog name */
  484.     DirDiscriminator                discriminator;              /* <--> descriminate between dup catalog names */
  485.     DirGestalt                      features;                   /* <--  capability bit flags */
  486. };
  487. typedef struct DirGetDirectoryInfoPB    DirGetDirectoryInfoPB;
  488. /*
  489.  * Note on Access Controls:
  490.  * Access control is based on a list model.
  491.  * You can get access controls list which gives dsObject and accMask for each dsObject.
  492.  * GetAccessControl can be limited to currently supplied identity by setting forCurrentUserOnly.
  493.  * There are special DSObjects are defined in ADASTypes.h for each of the category
  494.  * supported in ADAS Catalogs. (kOwner, kFriends, kAuthenticatedToCluster, 
  495.  * kAuthenticatedToDirectory, kGuest) and DUGetActlDSSpec call can be used
  496.  * to obtain appropraiate DSSpec before making set calls to ADAS catalogs.
  497.  *
  498.  */
  499. /*
  500.     GetDNodeAccessControlGet:
  501.     This call can be done to get back access control list for a DNode.
  502.     pRLI -> RLI of the DNode whose access control list is sought
  503.     curUserAccMask -> If this is 'true', Access controls for the user specified by
  504.                       the identity parameter will be returned other wise entire list
  505.                       will be returned.
  506.     startingDsObj  -> If this is not nil, list should be started after this object.
  507.     startingPointInclusive -> If staringDsObj is specified, include that in the returned
  508.                               results.
  509.                               
  510.     The results will be collected in the 'getBuffer' supplied by the user.
  511.     If buffer can not hold all the data returned 'daMoreData' error will be returned.
  512.      
  513.     If user receives 'noErr' or 'daMoreData', buffer will contain valid results. A user
  514.     can extract the results in the 'getBuffer' by making 'DsGetDNodeAccessControlParse' call.
  515.     
  516.     Results returned for each DSObject will contain DSSpecPtr and three sets of access mask. 
  517. */
  518. struct DirGetDNodeAccessControlGetPB {
  519.     void *                          qLink;
  520.     long                            reserved1;
  521.     long                            reserved2;
  522.     DirIOCompletionUPP              ioCompletion;
  523.     OSErr                           ioResult;
  524.     unsigned long                   saveA5;
  525.     short                           reqCode;
  526.     long                            reserved[2];
  527.     AddrBlock                       serverHint;
  528.     short                           dsRefNum;
  529.     unsigned long                   callID;
  530.     AuthIdentity                    identity;
  531.     long                            gReserved1;
  532.     long                            gReserved2;
  533.     long                            gReserved3;
  534.     long                            clientData;
  535.     PackedRLIPtr                    pRLI;                       /*  -> RLI of the cluster whose access control list is sought  */
  536.     long                            bReserved;                  /*  -- unused */
  537.     long                            cReserved;                  /*  -- unused */
  538.     long                            dReserved;                  /*  -- unused */
  539.     long                            eResreved;                  /* --> */
  540.     Boolean                         forCurrentUserOnly;         /* -->  */
  541.     Boolean                         filler1;
  542.     DSSpec *                        startingPoint;              /* --> starting Point */
  543.     Boolean                         includeStartingPoint;       /* --> if true return the DsObject specified in starting point */
  544.     Boolean                         filler2;
  545.     void *                          getBuffer;                  /*    -> */
  546.     unsigned long                   getBufferSize;              /*  -> */
  547. };
  548. typedef struct DirGetDNodeAccessControlGetPB DirGetDNodeAccessControlGetPB;
  549. /* The Access Control call-back function is defined as follows: */
  550. typedef CALLBACK_API( Boolean , ForEachDNodeAccessControlProcPtr )(long clientData, const DSSpec *dsObj, AccessMask activeDnodeAccMask, AccessMask defaultRecordAccMask, AccessMask defaultAttributeAccMask);
  551. typedef STACK_UPP_TYPE(ForEachDNodeAccessControlProcPtr)        ForEachDNodeAccessControlUPP;
  552. typedef ForEachDNodeAccessControlUPP    ForEachDNodeAccessControl;
  553. /*
  554.     GetDNodeAccessControlParse:
  555.     After an GetDNodeAccessControlGet call has completed, 
  556.     call GetDNodeAccessControlParse to parse through the buffer that
  557.     that was filled in GetDNodeAccessControlGet.
  558.     
  559.     'eachObject' will be called each time to return to the client a
  560.     DsObject and a set of three accMasks (three long words) for that object.
  561.     Acceesmasks returned apply to the dsObject in the callback :
  562.     1. Currently Active Access mask for the specified DNode.
  563.     2. Default Access mask for any Record in the DNode
  564.     3. Default Access mask for any Attribute in the DNode
  565.     The clientData parameter that you pass in the parameter block will be passed
  566.     to 'eachObject'.  You are free to put anything in clientData - it is intended
  567.     to allow you some way to match the call-back to the original call (for
  568.     example, you make more then one aysynchronous GetDNodeAccessControlGet calls and you want to
  569.     associate returned results in some way).
  570.     
  571.     The client should return FALSE from 'eachObject' to continue
  572.     processing of the GetDNodeAccessControlParse request.  Returning TRUE will
  573.     terminate the GetDNodeAccessControlParse request.
  574.     For synchronous calls, the call-back routine actually runs as part of the same thread 
  575.     of execution as the thread that made the GetDNodeAccessControlParse call.  That means that the
  576.     same low-memory globals, A5, stack, etc. are in effect during the call-back
  577.     that were in effect when the call was made.  Because of this, the call-back
  578.     routine has the same restrictions as the caller of GetDNodeAccessControlParse:
  579.     if GetDNodeAccessControlParse was not called from interrupt level, then the call-
  580.     back routine can allocate memory. For asynchronous calls, call-back routine is
  581.     like a ioCompletion except that A5 will be preserved for the application.
  582. */
  583. struct DirGetDNodeAccessControlParsePB {
  584.     void *                          qLink;
  585.     long                            reserved1;
  586.     long                            reserved2;
  587.     DirIOCompletionUPP              ioCompletion;
  588.     OSErr                           ioResult;
  589.     unsigned long                   saveA5;
  590.     short                           reqCode;
  591.     long                            reserved[2];
  592.     AddrBlock                       serverHint;
  593.     short                           dsRefNum;
  594.     unsigned long                   callID;
  595.     AuthIdentity                    identity;
  596.     long                            gReserved1;
  597.     long                            gReserved2;
  598.     long                            gReserved3;
  599.     long                            clientData;
  600.     PackedRLIPtr                    pRLI;                       /*  -> RLI of the cluster  */
  601.     long                            bReserved;                  /*  -- unused */
  602.     long                            cReserved;                  /*  -- unused */
  603.     long                            dReserved;                  /*  -- unused */
  604.     ForEachDNodeAccessControl       eachObject;                 /* --> */
  605.     Boolean                         forCurrentUserOnly;         /* -->  */
  606.     Boolean                         filler1;
  607.     DSSpec *                        startingPoint;              /* --> starting Point */
  608.     Boolean                         includeStartingPoint;       /* --> if true return the record specified in starting point */
  609.     Boolean                         filler2;
  610.     void *                          getBuffer;                  /*    -> */
  611.     unsigned long                   getBufferSize;              /*  -> */
  612. };
  613. typedef struct DirGetDNodeAccessControlParsePB DirGetDNodeAccessControlParsePB;
  614. /*
  615.     GetRecordAccessControlGet:
  616.     This call can be done to get back access control list for a RecordID.
  617.     aRecord -> RecordID to which access control list is sought
  618.     curUserAccMask -> If this is 'true', Access controls for the user specified by
  619.                       the identity parameter will be returned other wise entire list
  620.                       will be returned.
  621.     startingDsObj  -> If this is not nil, list should be started after this object.
  622.     startingPointInclusive -> If staringDsObj is specified, include that in the returned
  623.                               results.
  624.                               
  625.     The results will be collected in the 'getBuffer' supplied by the user.
  626.     If buffer can not hold all the data returned 'daMoreData' error will be returned.
  627.      
  628.     If user receives 'noErr' or 'daMoreData', buffer will contain valid results. A user
  629.     can extract the results in the 'getBuffer' by making 'DsGetDNodeAccessControlParse' call.
  630.     
  631.     Results returned for each DSObject will contain DSSpecPtr and accMask. 
  632. */
  633. struct DirGetRecordAccessControlGetPB {
  634.     void *                          qLink;
  635.     long                            reserved1;
  636.     long                            reserved2;
  637.     DirIOCompletionUPP              ioCompletion;
  638.     OSErr                           ioResult;
  639.     unsigned long                   saveA5;
  640.     short                           reqCode;
  641.     long                            reserved[2];
  642.     AddrBlock                       serverHint;
  643.     short                           dsRefNum;
  644.     unsigned long                   callID;
  645.     AuthIdentity                    identity;
  646.     long                            gReserved1;
  647.     long                            gReserved2;
  648.     long                            gReserved3;
  649.     long                            clientData;
  650.     RecordIDPtr                     aRecord;                    /*  -> RecordID to which access control list is sought list is sought  */
  651.     long                            bReserved;                  /*  -- unused */
  652.     long                            cReserved;                  /*  -- unused */
  653.     long                            dReserved;                  /*  -- unused */
  654.     long                            eResreved;                  /* --> */
  655.     Boolean                         forCurrentUserOnly;         /* -->  */
  656.     Boolean                         filler1;
  657.     DSSpec *                        startingPoint;              /* --> starting Point */
  658.     Boolean                         includeStartingPoint;       /* --> if true return the record specified in starting point */
  659.     Boolean                         filler2;
  660.     void *                          getBuffer;                  /*    -> */
  661.     unsigned long                   getBufferSize;              /*  -> */
  662. };
  663. typedef struct DirGetRecordAccessControlGetPB DirGetRecordAccessControlGetPB;
  664. /* The Access Control call-back function is defined as follows: */
  665. typedef CALLBACK_API( Boolean , ForEachRecordAccessControlProcPtr )(long clientData, const DSSpec *dsObj, AccessMask activeDnodeAccMask, AccessMask activeRecordAccMask, AccessMask defaultAttributeAccMask);
  666. typedef STACK_UPP_TYPE(ForEachRecordAccessControlProcPtr)       ForEachRecordAccessControlUPP;
  667. typedef ForEachRecordAccessControlUPP   ForEachRecordAccessControl;
  668. /*
  669.     GetRecordAccessControlParse:
  670.     After an GetRecordAccessControlGet call has completed, 
  671.     call GetRecordAccessControlParse to parse through the buffer that
  672.     that was filled in GetRecordAccessControlGet.
  673.     
  674.     'eachObject' will be called each time to return to the client a
  675.     DsObject and a set of three accMasks (three long words) for that object.
  676.     Acceesmasks returned apply to the dsObject in the callback :
  677.     1. Active Access mask for the DNode Containing the Record.
  678.     2. Active Access mask for the Record specified.
  679.     3. Defualt Access mask for Attributes in the record.
  680.     The clientData parameter that you pass in the parameter block will be passed
  681.     to 'eachObject'.  You are free to put anything in clientData - it is intended
  682.     to allow you some way to match the call-back to the original call (for
  683.     example, you make more then one aysynchronous GetRecordAccessControlGet calls and you want to
  684.     associate returned results in some way).
  685.     
  686.     The client should return FALSE from 'eachObject' to continue
  687.     processing of the GetRecordAccessControlParse request.  Returning TRUE will
  688.     terminate the GetRecordAccessControlParse request.
  689.     For synchronous calls, the call-back routine actually runs as part of the same thread 
  690.     of execution as the thread that made the GetRecordAccessControlParse call.  That means that the
  691.     same low-memory globals, A5, stack, etc. are in effect during the call-back
  692.     that were in effect when the call was made.  Because of this, the call-back
  693.     routine has the same restrictions as the caller of GetRecordAccessControlParse:
  694.     if GetRecordAccessControlParse was not called from interrupt level, then the call-
  695.     back routine can allocate memory. For asynchronous calls, call-back routine is
  696.     like a ioCompletion except that A5 will be preserved for the application.
  697. */
  698. struct DirGetRecordAccessControlParsePB {
  699.     void *                          qLink;
  700.     long                            reserved1;
  701.     long                            reserved2;
  702.     DirIOCompletionUPP              ioCompletion;
  703.     OSErr                           ioResult;
  704.     unsigned long                   saveA5;
  705.     short                           reqCode;
  706.     long                            reserved[2];
  707.     AddrBlock                       serverHint;
  708.     short                           dsRefNum;
  709.     unsigned long                   callID;
  710.     AuthIdentity                    identity;
  711.     long                            gReserved1;
  712.     long                            gReserved2;
  713.     long                            gReserved3;
  714.     long                            clientData;
  715.     RecordIDPtr                     aRecord;                    /*  -> RecordID to which access control list is sought list is sought  */
  716.     long                            bReserved;                  /*  -- unused */
  717.     long                            cReserved;                  /*  -- unused */
  718.     long                            dReserved;                  /*  -- unused */
  719.     ForEachRecordAccessControl      eachObject;                 /* --> */
  720.     Boolean                         forCurrentUserOnly;         /* -->  */
  721.     Boolean                         filler1;
  722.     DSSpec *                        startingPoint;              /* --> starting Point */
  723.     Boolean                         includeStartingPoint;       /* --> if true return the record specified in starting point */
  724.     Boolean                         filler2;
  725.     void *                          getBuffer;                  /*    -> */
  726.     unsigned long                   getBufferSize;              /*  -> */
  727. };
  728. typedef struct DirGetRecordAccessControlParsePB DirGetRecordAccessControlParsePB;
  729. /*
  730.     GetAttributeAccessControlGet:
  731.     This call can be done to get back access control list for a attributeType with in a RecordID.
  732.     aRecord -> RecordID to which access control list is sought
  733.     aType   -> Attribute Type to which access controls are sought
  734.     curUserAccMask -> If this is 'true', Access controls for the user specified by
  735.                       the identity parameter will be returned other wise entire list
  736.                       will be returned.
  737.     startingDsObj  -> If this is not nil, list should be started after this object.
  738.     startingPointInclusive -> If staringDsObj is specified, include that in the returned
  739.                               results.
  740.                               
  741.     The results will be collected in the 'getBuffer' supplied by the user.
  742.     If buffer can not hold all the data returned 'daMoreData' error will be returned.
  743.      
  744.     If user receives 'noErr' or 'daMoreData', buffer will contain valid results. A user
  745.     can extract the results in the 'getBuffer' by making 'DsGetDNodeAccessControlParse' call.
  746.     
  747.     Results returned for each DSObject will contain DSSpecPtr and accMask. 
  748. */
  749. struct DirGetAttributeAccessControlGetPB {
  750.     void *                          qLink;
  751.     long                            reserved1;
  752.     long                            reserved2;
  753.     DirIOCompletionUPP              ioCompletion;
  754.     OSErr                           ioResult;
  755.     unsigned long                   saveA5;
  756.     short                           reqCode;
  757.     long                            reserved[2];
  758.     AddrBlock                       serverHint;
  759.     short                           dsRefNum;
  760.     unsigned long                   callID;
  761.     AuthIdentity                    identity;
  762.     long                            gReserved1;
  763.     long                            gReserved2;
  764.     long                            gReserved3;
  765.     long                            clientData;
  766.     RecordIDPtr                     aRecord;                    /*  -> RecordID to which access control list is sought list is sought  */
  767.     AttributeTypePtr                aType;                      /*  -> Attribute Type to which access controls are sought          */
  768.     long                            cReserved;                  /*  -- unused */
  769.     long                            dReserved;                  /*  -- unused */
  770.     long                            eResreved;                  /* --> */
  771.     Boolean                         forCurrentUserOnly;         /* -->  */
  772.     Boolean                         filler1;
  773.     DSSpec *                        startingPoint;              /* --> starting Point */
  774.     Boolean                         includeStartingPoint;       /* --> if true return the record specified in starting point */
  775.     Boolean                         filler2;
  776.     void *                          getBuffer;                  /*    -> */
  777.     unsigned long                   getBufferSize;              /*  -> */
  778. };
  779. typedef struct DirGetAttributeAccessControlGetPB DirGetAttributeAccessControlGetPB;
  780. /* The Access Control call-back function is defined as follows: */
  781. typedef CALLBACK_API( Boolean , ForEachAttributeAccessControlProcPtr )(long clientData, const DSSpec *dsObj, AccessMask activeDnodeAccMask, AccessMask activeRecordAccMask, AccessMask activeAttributeAccMask);
  782. typedef STACK_UPP_TYPE(ForEachAttributeAccessControlProcPtr)    ForEachAttributeAccessControlUPP;
  783. typedef ForEachAttributeAccessControlUPP  ForEachAttributeAccessControl;
  784. /*
  785.     GetAttributeAccessControlParse:
  786.     After an GetAttributeAccessControlGet call has completed, 
  787.     call GetAttributeAccessControlParse to parse through the buffer that
  788.     that was filled in GetAttributeAccessControlGet.
  789.     
  790.     'eachObject' will be called each time to return to the client a
  791.     DsObject and a set of three accMasks (three long words) for that object.
  792.     Acceesmasks returned apply to the dsObject in the callback :
  793.     1. Active Access mask for the DNode Containing the Attribute.
  794.     2. Active Access mask for the Record in the Containing the Attribute.
  795.     3. Active Access mask for the specified Attribute.
  796.     The clientData parameter that you pass in the parameter block will be passed
  797.     to 'eachObject'.  You are free to put anything in clientData - it is intended
  798.     to allow you some way to match the call-back to the original call (for
  799.     example, you make more then one aysynchronous GetAttributeAccessControlGet calls and you want to
  800.     associate returned results in some way).
  801.     
  802.     The client should return FALSE from 'eachObject' to continue
  803.     processing of the GetAttributeAccessControlParse request.  Returning TRUE will
  804.     terminate the GetAttributeAccessControlParse request.
  805.     For synchronous calls, the call-back routine actually runs as part of the same thread 
  806.     of execution as the thread that made the GetAttributeAccessControlParse call.  That means that the
  807.     same low-memory globals, A5, stack, etc. are in effect during the call-back
  808.     that were in effect when the call was made.  Because of this, the call-back
  809.     routine has the same restrictions as the caller of GetAttributeAccessControlParse:
  810.     if GetAttributeAccessControlParse was not called from interrupt level, then the call-
  811.     back routine can allocate memory. For asynchronous calls, call-back routine is
  812.     like a ioCompletion except that A5 will be preserved for the application.
  813. */
  814. struct DirGetAttributeAccessControlParsePB {
  815.     void *                          qLink;
  816.     long                            reserved1;
  817.     long                            reserved2;
  818.     DirIOCompletionUPP              ioCompletion;
  819.     OSErr                           ioResult;
  820.     unsigned long                   saveA5;
  821.     short                           reqCode;
  822.     long                            reserved[2];
  823.     AddrBlock                       serverHint;
  824.     short                           dsRefNum;
  825.     unsigned long                   callID;
  826.     AuthIdentity                    identity;
  827.     long                            gReserved1;
  828.     long                            gReserved2;
  829.     long                            gReserved3;
  830.     long                            clientData;
  831.     RecordIDPtr                     aRecord;                    /*  -> RecordID to which access control list is sought list is sought  */
  832.     AttributeTypePtr                aType;                      /*  -> Attribute Type to which access controls are sought          */
  833.     long                            cReserved;                  /*  -- unused */
  834.     long                            dReserved;                  /*  -- unused */
  835.     ForEachAttributeAccessControl   eachObject;                 /* --> */
  836.     Boolean                         forCurrentUserOnly;         /* -->  */
  837.     Boolean                         filler1;
  838.     DSSpec *                        startingPoint;              /* --> starting Point */
  839.     Boolean                         includeStartingPoint;       /* --> if true return the record specified in starting point */
  840.     Boolean                         filler2;
  841.     void *                          getBuffer;                  /*    -> */
  842.     unsigned long                   getBufferSize;              /*  -> */
  843. };
  844. typedef struct DirGetAttributeAccessControlParsePB DirGetAttributeAccessControlParsePB;
  845. /*
  846. MapPathNameToDNodeNumber:
  847. This call maps a given PathName within a catalog to its DNodeNumber.
  848. */
  849. struct DirMapPathNameToDNodeNumberPB {
  850.     void *                          qLink;
  851.     long                            reserved1;
  852.     long                            reserved2;
  853.     DirIOCompletionUPP              ioCompletion;
  854.     OSErr                           ioResult;
  855.     unsigned long                   saveA5;
  856.     short                           reqCode;
  857.     long                            reserved[2];
  858.     AddrBlock                       serverHint;
  859.     short                           dsRefNum;
  860.     unsigned long                   callID;
  861.     AuthIdentity                    identity;
  862.     long                            gReserved1;
  863.     long                            gReserved2;
  864.     long                            gReserved3;
  865.     long                            clientData;
  866.     DirectoryNamePtr                directoryName;              /*  --> catalog name */
  867.     DirDiscriminator                discriminator;              /*  --> discriminator */
  868.     DNodeNum                        dNodeNumber;                /* <--  dNodenumber to the path */
  869.     PackedPathNamePtr               path;                       /*  --> Path Name to be mapped */
  870. };
  871. typedef struct DirMapPathNameToDNodeNumberPB DirMapPathNameToDNodeNumberPB;
  872. /*
  873. PathName in the path field will be mapped to the cooresponding dNodeNumber and
  874. returned in the DNodeNumber field. directoryName and descriminator Fields are
  875. ignored. DSRefNum is used to identify the catalog.
  876. */
  877. /*
  878. MapDNodeNumberToPathName:
  879. This call will map a given DNodeNumber with in a catalog to the
  880. corresponding PathName.
  881. */
  882. struct DirMapDNodeNumberToPathNamePB {
  883.     void *                          qLink;
  884.     long                            reserved1;
  885.     long                            reserved2;
  886.     DirIOCompletionUPP              ioCompletion;
  887.     OSErr                           ioResult;
  888.     unsigned long                   saveA5;
  889.     short                           reqCode;
  890.     long                            reserved[2];
  891.     AddrBlock                       serverHint;
  892.     short                           dsRefNum;
  893.     unsigned long                   callID;
  894.     AuthIdentity                    identity;
  895.     long                            gReserved1;
  896.     long                            gReserved2;
  897.     long                            gReserved3;
  898.     long                            clientData;
  899.     DirectoryNamePtr                directoryName;              /*  --> catalog name */
  900.     DirDiscriminator                discriminator;              /*  --> discriminator */
  901.     DNodeNum                        dNodeNumber;                /*  --> dNodenumber to be mapped */
  902.     PackedPathNamePtr               path;                       /* <--  Packed Path Name returned */
  903.     unsigned short                  lengthOfPathName;           /*  --> length of packed pathName structure*/
  904. };
  905. typedef struct DirMapDNodeNumberToPathNamePB DirMapDNodeNumberToPathNamePB;
  906. /*
  907. dNodeNumber in the DNodeNumber field will be mapped to the cooresponding
  908. pathName and returned in the PackedPathName field.
  909. lengthOfPathName is to be set the length of pathName structure.
  910. If length of PackedPathName is larger then the lengthOfPathName, kOCEMoreData
  911. OSErr will be returned.
  912. */
  913. /*
  914. GetLocalNetworkSpec:
  915. This call will return the Local NetworkSpec. Client should supply
  916. an RString big enough to hold the NetworkSpec.
  917. */
  918. struct DirGetLocalNetworkSpecPB {
  919.     void *                          qLink;
  920.     long                            reserved1;
  921.     long                            reserved2;
  922.     DirIOCompletionUPP              ioCompletion;
  923.     OSErr                           ioResult;
  924.     unsigned long                   saveA5;
  925.     short                           reqCode;
  926.     long                            reserved[2];
  927.     AddrBlock                       serverHint;
  928.     short                           dsRefNum;
  929.     unsigned long                   callID;
  930.     AuthIdentity                    identity;
  931.     long                            gReserved1;
  932.     long                            gReserved2;
  933.     long                            gReserved3;
  934.     long                            clientData;
  935.     DirectoryNamePtr                directoryName;              /*  --> catalog name */
  936.     DirDiscriminator                discriminator;              /*  --> discriminator */
  937.     NetworkSpecPtr                  networkSpec;                /* <--  NetworkSpec */
  938. };
  939. typedef struct DirGetLocalNetworkSpecPB DirGetLocalNetworkSpecPB;
  940. /*
  941. PathName in the path field must be set to nil. internetName should be large
  942. enough to hold the internetName. InterNetname returned indicates path finder's
  943. local internet (configured by administrator).
  944. */
  945. /*
  946. GetDNodeInfo:
  947. This call will return the information (internetName and descriptor)
  948. for the given RLI of a DNode.
  949. */
  950. struct DirGetDNodeInfoPB {
  951.     void *                          qLink;
  952.     long                            reserved1;
  953.     long                            reserved2;
  954.     DirIOCompletionUPP              ioCompletion;
  955.     OSErr                           ioResult;
  956.     unsigned long                   saveA5;
  957.     short                           reqCode;
  958.     long                            reserved[2];
  959.     AddrBlock                       serverHint;
  960.     short                           dsRefNum;
  961.     unsigned long                   callID;
  962.     AuthIdentity                    identity;
  963.     long                            gReserved1;
  964.     long                            gReserved2;
  965.     long                            gReserved3;
  966.     long                            clientData;
  967.     PackedRLIPtr                    pRLI;                       /*  --> packed RLI whose info is requested */
  968.     DirNodeKind                     descriptor;                 /* <--  dNode descriptor */
  969.     NetworkSpecPtr                  networkSpec;                /* <--  cluster's networkSpec if kIsCluster */
  970. };
  971. typedef struct DirGetDNodeInfoPB        DirGetDNodeInfoPB;
  972. /*
  973. If DnodeNumber is set to a non zero value, path should be set to nil.
  974. if DnodeNumber is set to zero, pathName should point to a packed path name.
  975. internetName should be large enough to hold
  976. the internetName. (If the internetName is same as the one got by
  977. GetLocalInternetName call, it indicates cluster is reachable  without
  978. forwarders, --> Tell me if I am wrong)
  979. */
  980. /*
  981. DirCreatePersonalDirectory:
  982. A new  personal catalog can be created by specifying an FSSpec for
  983. the file. If a file already exists dupFNErr will be returned. This call is
  984. supported 'synchronous' mode only.
  985. */
  986. struct DirCreatePersonalDirectoryPB {
  987.     void *                          qLink;
  988.     long                            reserved1;
  989.     long                            reserved2;
  990.     DirIOCompletionUPP              ioCompletion;
  991.     OSErr                           ioResult;
  992.     unsigned long                   saveA5;
  993.     short                           reqCode;
  994.     long                            reserved[2];
  995.     AddrBlock                       serverHint;
  996.     short                           dsRefNum;
  997.     unsigned long                   callID;
  998.     AuthIdentity                    identity;
  999.     long                            gReserved1;
  1000.     long                            gReserved2;
  1001.     long                            gReserved3;
  1002.     long                            clientData;
  1003.     FSSpecPtr                       fsSpec;                     /*  --> FSSpec for the Personal Catalog */
  1004.     OSType                          fdType;                     /*  --> file type for the Personal Catalog */
  1005.     OSType                          fdCreator;                  /*  --> file creator for the Personal Catalog */
  1006. };
  1007. typedef struct DirCreatePersonalDirectoryPB DirCreatePersonalDirectoryPB;
  1008. /*
  1009. DirOpenPersonalDirectory:
  1010. An existing personal catalog can be opened using this call.
  1011. User can specify the personal catalog by FSSpec for the AddressBook file.
  1012. 'accessRequested' field specifies open permissions. 'fsRdPerm'  & 'fsRdWrPerm'
  1013. are the only accepted open modes for the address book.
  1014. When the call completes successfully, a dsRefNum will be returned. The 'dsRefNum'
  1015. field is in the DSParamBlockHeader. In addittion 'accessGranted' indicates
  1016. actual permission with personal catalog is opened and 'features' indicate the capabilty flags
  1017. associated with the personal catalog.
  1018. This call is supported 'synchronous' mode only.
  1019. */
  1020. struct DirOpenPersonalDirectoryPB {
  1021.     void *                          qLink;
  1022.     long                            reserved1;
  1023.     long                            reserved2;
  1024.     DirIOCompletionUPP              ioCompletion;
  1025.     OSErr                           ioResult;
  1026.     unsigned long                   saveA5;
  1027.     short                           reqCode;
  1028.     long                            reserved[2];
  1029.     AddrBlock                       serverHint;
  1030.     short                           dsRefNum;
  1031.     unsigned long                   callID;
  1032.     AuthIdentity                    identity;
  1033.     long                            gReserved1;
  1034.     long                            gReserved2;
  1035.     long                            gReserved3;
  1036.     long                            clientData;
  1037.     FSSpecPtr                       fsSpec;                     /*  --> Open an existing Personal Catalog */
  1038.     SInt8                           accessRequested;            /*  --> Open: permissions Requested(byte)*/
  1039.     SInt8                           accessGranted;              /*  <-- Open: permissions (byte) (Granted)*/
  1040.     DirGestalt                      features;                   /* <--  features for Personal Catalog */
  1041. };
  1042. typedef struct DirOpenPersonalDirectoryPB DirOpenPersonalDirectoryPB;
  1043. /*
  1044. DirClosePersonalDirectory: This call lets a client close AddressBook opened by DirOpenPersonalDirectory.
  1045. The Personal Catalog specified by the 'dsRefNum' will be closed.
  1046. This call is supported 'synchronous' mode only.
  1047. */
  1048. struct DirClosePersonalDirectoryPB {
  1049.     void *                          qLink;
  1050.     long                            reserved1;
  1051.     long                            reserved2;
  1052.     DirIOCompletionUPP              ioCompletion;
  1053.     OSErr                           ioResult;
  1054.     unsigned long                   saveA5;
  1055.     short                           reqCode;
  1056.     long                            reserved[2];
  1057.     AddrBlock                       serverHint;
  1058.     short                           dsRefNum;
  1059.     unsigned long                   callID;
  1060.     AuthIdentity                    identity;
  1061.     long                            gReserved1;
  1062.     long                            gReserved2;
  1063.     long                            gReserved3;
  1064.     long                            clientData;
  1065. };
  1066. typedef struct DirClosePersonalDirectoryPB DirClosePersonalDirectoryPB;
  1067. /*
  1068. DirMakePersonalDirectoryRLI: With this call a client can make an RLI
  1069. for a Personal Catalog opened by DirOpenPersonalDirectory Call.
  1070. A packed RLI is created for the Personal Catalog specified by the 'dsRefNum'.
  1071. If a client has a need to make the AddressBook reference to persistent
  1072. acrross boots it should make use of this call. In the current implementaion
  1073. PackedRLI has an embeeded System7.0 'alias'. If in later time
  1074. If client has a need to make reference to the AddressBook, it must use
  1075. ADAPLibrary call 'DUExtractAlias' and resole the 'alias' to 'FSSpec' and
  1076. make DirOpenPersonalDirectory call to get a 'dsRefNum'.
  1077.   'fromFSSpec'          FSPecPtr from which relative alias to be created. If nil,
  1078.                         absolute alias is created.
  1079.  'pRLIBufferSize' indicates the size of buffer pointed by 'pRLI'
  1080.  'pRLISize' indicates the actual length of 'pRLI'. If the call
  1081.                         fails with 'kOCEMoreData' error a client can reissue
  1082.                     this call with a larger buffer of this length.
  1083.   'pRLI' is pointer to the buffer in which 'PackedRLI' is
  1084.   returned.
  1085. This call is supported in 'synchronous' mode only.
  1086. */
  1087. struct DirMakePersonalDirectoryRLIPB {
  1088.     void *                          qLink;
  1089.     long                            reserved1;
  1090.     long                            reserved2;
  1091.     DirIOCompletionUPP              ioCompletion;
  1092.     OSErr                           ioResult;
  1093.     unsigned long                   saveA5;
  1094.     short                           reqCode;
  1095.     long                            reserved[2];
  1096.     AddrBlock                       serverHint;
  1097.     short                           dsRefNum;
  1098.     unsigned long                   callID;
  1099.     AuthIdentity                    identity;
  1100.     long                            gReserved1;
  1101.     long                            gReserved2;
  1102.     long                            gReserved3;
  1103.     long                            clientData;
  1104.     FSSpecPtr                       fromFSSpec;                 /*  --> FSSpec for creating relative alia */
  1105.     unsigned short                  pRLIBufferSize;             /*  --> Length of 'pRLI' buffer */
  1106.     unsigned short                  pRLISize;                   /* <--  Length of actual 'pRLI' */
  1107.     PackedRLIPtr                    pRLI;                       /* <--  pRLI for the specified AddressBook */
  1108. };
  1109. typedef struct DirMakePersonalDirectoryRLIPB DirMakePersonalDirectoryRLIPB;
  1110. /*****************************************************************************
  1111. The calls described below apply only for CSAM Drivers:
  1112. The following three calls provide capability to Install/Remove a CSAM at RunTime.
  1113.     DirAddDSAM
  1114.     DirRemoveDSAM
  1115.     DirInstantiateDSAM
  1116. The following two calls provide capability to Install/Remove a CSAM Catalog at RunTime.
  1117.     DirAddDSAMDirectory
  1118.     DirRemoveDirectory
  1119. DirGetDirectoryIcon call is used by clients to get any special icon associated
  1120. with a CSAM catalog.
  1121. *****************************************************************************/
  1122. /*
  1123. DirAddDSAM: This call can be used to inorm the availability of a CSAM file
  1124. after discovering the CSAM file.
  1125.     dsamName -> is generic CSAM name e.g. Untitled X.500 directory
  1126.     dsamSignature -> could be generic CSAM kind e.g. 'X500'.
  1127.     fsSpec -> is the FileSpec for the file containing CSAM resources.
  1128. If the call is successfull 'DSAMRecordCID' will be returned. If the
  1129. call returns 'daDSAMRecordCIDExists', record was already there and
  1130. 'dsamRecordCID' will be returned.
  1131. This call can be done only in synchronous mode.
  1132. */
  1133. struct DirAddDSAMPB {
  1134.     void *                          qLink;
  1135.     long                            reserved1;
  1136.     long                            reserved2;
  1137.     DirIOCompletionUPP              ioCompletion;
  1138.     OSErr                           ioResult;
  1139.     unsigned long                   saveA5;
  1140.     short                           reqCode;
  1141.     long                            reserved[2];
  1142.     AddrBlock                       serverHint;
  1143.     short                           dsRefNum;
  1144.     unsigned long                   callID;
  1145.     AuthIdentity                    identity;
  1146.     long                            gReserved1;
  1147.     long                            gReserved2;
  1148.     long                            gReserved3;
  1149.     long                            clientData;
  1150.     CreationID                      dsamRecordCID;              /* <--  CreationID for the CSAM record */
  1151.     RStringPtr                      dsamName;                   /*  --> CSAM name */
  1152.     OCEDirectoryKind                dsamKind;                   /*  --> CSAM kind */
  1153.     FSSpecPtr                       fsSpec;                     /*  --> FSSpec for the file containing CSAM */
  1154. };
  1155. typedef struct DirAddDSAMPB             DirAddDSAMPB;
  1156. /*
  1157. DirInstantiateDSAM: This call should be used by the CSAM driver in response
  1158. Driver Open call to indicate the toolbox about the availability of the CSAM.
  1159.     dsamName -> is generic CSAM name e.g. Untitled X.500 directory
  1160.     dsamKind -> could be generic CSAM kind e.g. 'X500'.
  1161.     dsamData -> pointer to private DSAMData. This will be paased back to the CSAM
  1162.     when the CSAM functions (DSAMDirProc,DSAMDirParseProc, DSAMAuthProc) are called.
  1163.     CSAM should already be setup using DirAddDSAM call.
  1164.     DSAMDirProc -> This procedure will be called when  any catalog service
  1165.     call intended for the CSAM (other then parse calls)
  1166.     DSAMDirParseProc -> This procedure will be called when any of the parse calls
  1167.     are called.
  1168.     DSAMAuthProc -> This procedure will be called when any of the Authentication Calls
  1169.     are made to the CSAM. If the CSAM does not support authentication, this can be nil.
  1170. This call can be done only in synchronous mode.
  1171. */
  1172. typedef CALLBACK_API( OSErr , DSAMDirProcPtr )(void *dsamData, DirParamBlockPtr paramBlock, Boolean async);
  1173. typedef STACK_UPP_TYPE(DSAMDirProcPtr)                          DSAMDirUPP;
  1174. typedef DSAMDirUPP                      DSAMDirProc;
  1175. typedef CALLBACK_API( OSErr , DSAMDirParseProcPtr )(void *dsamData, DirParamBlockPtr paramBlock, Boolean async);
  1176. typedef STACK_UPP_TYPE(DSAMDirParseProcPtr)                     DSAMDirParseUPP;
  1177. typedef DSAMDirParseUPP                 DSAMDirParseProc;
  1178. typedef CALLBACK_API( OSErr , DSAMAuthProcPtr )(void *dsamData, AuthParamBlockPtr pb, Boolean async);
  1179. typedef STACK_UPP_TYPE(DSAMAuthProcPtr)                         DSAMAuthUPP;
  1180. typedef DSAMAuthUPP                     DSAMAuthProc;
  1181. struct DirInstantiateDSAMPB {
  1182.     void *                          qLink;
  1183.     long                            reserved1;
  1184.     long                            reserved2;
  1185.     DirIOCompletionUPP              ioCompletion;
  1186.     OSErr                           ioResult;
  1187.     unsigned long                   saveA5;
  1188.     short                           reqCode;
  1189.     long                            reserved[2];
  1190.     AddrBlock                       serverHint;
  1191.     short                           dsRefNum;
  1192.     unsigned long                   callID;
  1193.     AuthIdentity                    identity;
  1194.     long                            gReserved1;
  1195.     long                            gReserved2;
  1196.     long                            gReserved3;
  1197.     long                            clientData;
  1198.     RStringPtr                      dsamName;                   /*  --> dsamName name */
  1199.     OCEDirectoryKind                dsamKind;                   /*  --> DSAMKind */
  1200.     void *                          dsamData;                   /*  --> dsamData  */
  1201.     DSAMDirUPP                      dsamDirProc;                /*  --> of type DSAMDirProc: for catalog service calls */
  1202.     DSAMDirParseUPP                 dsamDirParseProc;           /*  --> of type DSAMDirParseProc: for catalog service parse calls */
  1203.     DSAMAuthUPP                     dsamAuthProc;               /*  --> of type DSAMAuthProc: for authetication service calls */
  1204. };
  1205. typedef struct DirInstantiateDSAMPB     DirInstantiateDSAMPB;
  1206. /*
  1207. DirRemoveDSAM: This call can be used to remove  a CSAM file from the OCE Setup.
  1208.     dsamRecordCID -> is the creationID of the CSAM record.
  1209. This call can be made only in synchronous mode.
  1210. */
  1211. struct DirRemoveDSAMPB {
  1212.     void *                          qLink;
  1213.     long                            reserved1;
  1214.     long                            reserved2;
  1215.     DirIOCompletionUPP              ioCompletion;
  1216.     OSErr                           ioResult;
  1217.     unsigned long                   saveA5;
  1218.     short                           reqCode;
  1219.     long                            reserved[2];
  1220.     AddrBlock                       serverHint;
  1221.     short                           dsRefNum;
  1222.     unsigned long                   callID;
  1223.     AuthIdentity                    identity;
  1224.     long                            gReserved1;
  1225.     long                            gReserved2;
  1226.     long                            gReserved3;
  1227.     long                            clientData;
  1228.     CreationID                      dsamRecordCID;              /* <--  CreationID for the CSAM record */
  1229. };
  1230. typedef struct DirRemoveDSAMPB          DirRemoveDSAMPB;
  1231. /*
  1232. DirAddDSAMDirectory: This call can be used to inorm the availability of a CSAM catalog.
  1233.     dsamRecordCID ->  recordID for the CSAM serving this catalog
  1234.     directoryName ->  name of the catalog
  1235.     discriminator -> discriminator for the catalog
  1236.     directoryRecordCID -> If the call is successful, creationID for the record will
  1237.                             be returned.
  1238. */
  1239. struct DirAddDSAMDirectoryPB {
  1240.     void *                          qLink;
  1241.     long                            reserved1;
  1242.     long                            reserved2;
  1243.     DirIOCompletionUPP              ioCompletion;
  1244.     OSErr                           ioResult;
  1245.     unsigned long                   saveA5;
  1246.     short                           reqCode;
  1247.     long                            reserved[2];
  1248.     AddrBlock                       serverHint;
  1249.     short                           dsRefNum;
  1250.     unsigned long                   callID;
  1251.     AuthIdentity                    identity;
  1252.     long                            gReserved1;
  1253.     long                            gReserved2;
  1254.     long                            gReserved3;
  1255.     long                            clientData;
  1256.     CreationID                      dsamRecordCID;              /*  --> CreationID for the CSAM record */
  1257.     DirectoryNamePtr                directoryName;              /*  --> catalog name */
  1258.     DirDiscriminator                discriminator;              /*  --> catalog discriminator */
  1259.     DirGestalt                      features;                   /*  --> capabilty flags for the catalog */
  1260.     CreationID                      directoryRecordCID;         /* <--  creationID for the catalog record */
  1261. };
  1262. typedef struct DirAddDSAMDirectoryPB    DirAddDSAMDirectoryPB;
  1263. /*
  1264. DirRemoveDirectory: This call can be used to inform the toolbox that
  1265. catalog specified by 'directoryRecordCID'
  1266. */
  1267. struct DirRemoveDirectoryPB {
  1268.     void *                          qLink;
  1269.     long                            reserved1;
  1270.     long                            reserved2;
  1271.     DirIOCompletionUPP              ioCompletion;
  1272.     OSErr                           ioResult;
  1273.     unsigned long                   saveA5;
  1274.     short                           reqCode;
  1275.     long                            reserved[2];
  1276.     AddrBlock                       serverHint;
  1277.     short                           dsRefNum;
  1278.     unsigned long                   callID;
  1279.     AuthIdentity                    identity;
  1280.     long                            gReserved1;
  1281.     long                            gReserved2;
  1282.     long                            gReserved3;
  1283.     long                            clientData;
  1284.     CreationID                      directoryRecordCID;         /*  --> creationID for the catalog record */
  1285. };
  1286. typedef struct DirRemoveDirectoryPB     DirRemoveDirectoryPB;
  1287. /*
  1288.  * DSGetExtendedDirectoriesInfo::  This call can be used to get
  1289.  * the information of various foreign catalogs supported.
  1290.  * Typically a DE Template  may make this call to create a
  1291.  * Address template or a Gateway may make this call to findout
  1292.  * catalog name space in which MSAM may would support. 
  1293.  * Client will supply a buffer pointed by 'bufferPtr' of size 'bufferLength'. 
  1294.  * When the call completes with 'daMoreData' error, client can examine 'totalEntries'
  1295.  * returned and reissue the call with increaing buffer.
  1296.  * Toolbox will findout the private information of each of the Foreign Catalogs
  1297.  * by polling CSAM's, Gateways, and MnMServers. The Information returned
  1298.  * for each catalog will be packed in the format: 
  1299.  * typedef struct EachDirectoryData {
  1300.  *  PackedRLI                       pRLI;          //  packed RLI for the catalog
  1301.  *  OSType                          entnType;      //  Entn Type
  1302.  *  long                            hasMailSlot;   //  If this catalog has mail slot this will be 1 otherwise zero
  1303.  *  ProtoRString                    RealName;      //  Packed RString for Real Name (padded to even boundary) 
  1304.  *  ProtoRString                    comment;       //  Packed RString holding any comment for Display (padded to even boundary)
  1305.  *  long                            length;        //  data length
  1306.  *  char                            data[length];  //  data padded to even boundary
  1307.  * };
  1308.  *
  1309.  *
  1310.  *
  1311.  * typedef struct myData {
  1312.  *      EachDirectoryData   data[numberOfEntries];    // data packed in the above format
  1313.  *  };
  1314.  *
  1315.  */
  1316. struct DirGetExtendedDirectoriesInfoPB {
  1317.     void *                          qLink;
  1318.     long                            reserved1;
  1319.     long                            reserved2;
  1320.     DirIOCompletionUPP              ioCompletion;
  1321.     OSErr                           ioResult;
  1322.     unsigned long                   saveA5;
  1323.     short                           reqCode;
  1324.     long                            reserved[2];
  1325.     AddrBlock                       serverHint;
  1326.     short                           dsRefNum;
  1327.     unsigned long                   callID;
  1328.     AuthIdentity                    identity;
  1329.     long                            gReserved1;
  1330.     long                            gReserved2;
  1331.     long                            gReserved3;
  1332.     long                            clientData;
  1333.     void *                          buffer;                     /*  --> Pointer to a buufer where data will be returned */
  1334.     unsigned long                   bufferSize;                 /*  --> Length of the buffer, Length of actual data will be returned here */
  1335.     unsigned long                   totalEntries;               /* <--  Total Number of Catalogs found */
  1336.     unsigned long                   actualEntries;              /* <--  Total Number of Catalogs entries returned */
  1337. };
  1338. typedef struct DirGetExtendedDirectoriesInfoPB DirGetExtendedDirectoriesInfoPB;
  1339. /*
  1340. DirGetDirectoryIconPB: With this call a client can find out about
  1341. the icons supported by the Catalog.
  1342. Both ADAP and Personal Catalog will not support this call for now.
  1343. A CSAM can support a call so that DE Extension can use this
  1344. call to find appropriate Icons.
  1345. Returns kOCEBufferTooSmall if icon is too small, but will update iconSize.
  1346. */
  1347. struct DirGetDirectoryIconPB {
  1348.     void *                          qLink;
  1349.     long                            reserved1;
  1350.     long                            reserved2;
  1351.     DirIOCompletionUPP              ioCompletion;
  1352.     OSErr                           ioResult;
  1353.     unsigned long                   saveA5;
  1354.     short                           reqCode;
  1355.     long                            reserved[2];
  1356.     AddrBlock                       serverHint;
  1357.     short                           dsRefNum;
  1358.     unsigned long                   callID;
  1359.     AuthIdentity                    identity;
  1360.     long                            gReserved1;
  1361.     long                            gReserved2;
  1362.     long                            gReserved3;
  1363.     long                            clientData;
  1364.     PackedRLIPtr                    pRLI;                       /*  --> packed RLI for the catalog */
  1365.     OSType                          iconType;                   /*  --> Type of Icon requested */
  1366.     void *                          iconBuffer;                 /*  --> Buffer to hold Icon Data */
  1367.     unsigned long                   bufferSize;                 /*  <-> size of buffer to hold icon data */
  1368. };
  1369. typedef struct DirGetDirectoryIconPB    DirGetDirectoryIconPB;
  1370. /*
  1371. DirGetOCESetupRefNum: This call will return 'dsRefnum' for the OCE Setup Personal Catalog
  1372. and oceSetupRecordCID for the oceSetup Record.
  1373. Clients interested in manipulating OCE Setup Personal Catalog directly should
  1374. make this call to get 'dsRefNum'.
  1375. 'dsRefNum' will be returned in the standard field in the DirParamHeader.
  1376. */
  1377. struct DirGetOCESetupRefNumPB {
  1378.     void *                          qLink;
  1379.     long                            reserved1;
  1380.     long                            reserved2;
  1381.     DirIOCompletionUPP              ioCompletion;
  1382.     OSErr                           ioResult;
  1383.     unsigned long                   saveA5;
  1384.     short                           reqCode;
  1385.     long                            reserved[2];
  1386.     AddrBlock                       serverHint;
  1387.     short                           dsRefNum;
  1388.     unsigned long                   callID;
  1389.     AuthIdentity                    identity;
  1390.     long                            gReserved1;
  1391.     long                            gReserved2;
  1392.     long                            gReserved3;
  1393.     long                            clientData;
  1394.     CreationID                      oceSetupRecordCID;          /* --> creationID for the catalog record */
  1395. };
  1396. typedef struct DirGetOCESetupRefNumPB   DirGetOCESetupRefNumPB;
  1397. /*****************************************************************************/
  1398. /* Catalog and Authentication control blocks and operation definitions */
  1399. union AuthParamBlock {
  1400.     struct {
  1401.         void *                          qLink;
  1402.         long                            reserved1;
  1403.         long                            reserved2;
  1404.         AuthIOCompletionUPP             ioCompletion;
  1405.         OSErr                           ioResult;
  1406.         unsigned long                   saveA5;
  1407.         short                           reqCode;
  1408.         long                            reserved[2];
  1409.         AddrBlock                       serverHint;
  1410.         short                           dsRefNum;
  1411.         unsigned long                   callID;
  1412.         AuthIdentity                    identity;
  1413.         long                            gReserved1;
  1414.         long                            gReserved2;
  1415.         long                            gReserved3;
  1416.         long                            clientData;
  1417.     }                                 header;
  1418.     AuthBindSpecificIdentityPB      bindIdentityPB;
  1419.     AuthUnbindSpecificIdentityPB    unbindIdentityPB;
  1420.     AuthResolveCreationIDPB         resolveCreationIDPB;
  1421.     AuthGetSpecificIdentityInfoPB   getIdentityInfoPB;
  1422.     AuthAddKeyPB                    addKeyPB;
  1423.     AuthChangeKeyPB                 changeKeyPB;
  1424.     AuthDeleteKeyPB                 deleteKeyPB;
  1425.     AuthPasswordToKeyPB             passwordToKeyPB;
  1426.     AuthGetCredentialsPB            getCredentialsPB;
  1427.     AuthDecryptCredentialsPB        decryptCredentialsPB;
  1428.     AuthMakeChallengePB             makeChallengePB;
  1429.     AuthMakeReplyPB                 makeReplyPB;
  1430.     AuthVerifyReplyPB               verifyReplyPB;
  1431.     AuthGetUTCTimePB                getUTCTimePB;
  1432.     AuthMakeProxyPB                 makeProxyPB;
  1433.     AuthTradeProxyForCredentialsPB  tradeProxyForCredentialsPB;
  1434.     AuthGetLocalIdentityPB          getLocalIdentityPB;
  1435.     AuthUnlockLocalIdentityPB       unLockLocalIdentityPB;
  1436.     AuthLockLocalIdentityPB         lockLocalIdentityPB;
  1437.     AuthAddToLocalIdentityQueuePB   localIdentityQInstallPB;
  1438.     AuthRemoveFromLocalIdentityQueuePB  localIdentityQRemovePB;
  1439.     AuthSetupLocalIdentityPB        setupLocalIdentityPB;
  1440.     AuthChangeLocalIdentityPB       changeLocalIdentityPB;
  1441.     AuthRemoveLocalIdentityPB       removeLocalIdentityPB;
  1442.     OCESetupAddDirectoryInfoPB      setupDirectoryIdentityPB;
  1443.     OCESetupChangeDirectoryInfoPB   changeDirectoryIdentityPB;
  1444.     OCESetupRemoveDirectoryInfoPB   removeDirectoryIdentityPB;
  1445.     OCESetupGetDirectoryInfoPB      getDirectoryIdentityInfoPB;
  1446. };
  1447. union DirParamBlock {
  1448.     struct {
  1449.         void *                          qLink;
  1450.         long                            reserved1;
  1451.         long                            reserved2;
  1452.         DirIOCompletionUPP              ioCompletion;
  1453.         OSErr                           ioResult;
  1454.         unsigned long                   saveA5;
  1455.         short                           reqCode;
  1456.         long                            reserved[2];
  1457.         AddrBlock                       serverHint;
  1458.         short                           dsRefNum;
  1459.         unsigned long                   callID;
  1460.         AuthIdentity                    identity;
  1461.         long                            gReserved1;
  1462.         long                            gReserved2;
  1463.         long                            gReserved3;
  1464.         long                            clientData;
  1465.     }                                 header;
  1466.     DirAddRecordPB                  addRecordPB;
  1467.     DirDeleteRecordPB               deleteRecordPB;
  1468.     DirEnumerateGetPB               enumerateGetPB;
  1469.     DirEnumerateParsePB             enumerateParsePB;
  1470.     DirFindRecordGetPB              findRecordGetPB;
  1471.     DirFindRecordParsePB            findRecordParsePB;
  1472.     DirLookupGetPB                  lookupGetPB;
  1473.     DirLookupParsePB                lookupParsePB;
  1474.     DirAddAttributeValuePB          addAttributeValuePB;
  1475.     DirDeleteAttributeTypePB        deleteAttributeTypePB;
  1476.     DirDeleteAttributeValuePB       deleteAttributeValuePB;
  1477.     DirChangeAttributeValuePB       changeAttributeValuePB;
  1478.     DirVerifyAttributeValuePB       verifyAttributeValuePB;
  1479.     DirFindValuePB                  findValuePB;
  1480.     DirEnumeratePseudonymGetPB      enumeratePseudonymGetPB;
  1481.     DirEnumeratePseudonymParsePB    enumeratePseudonymParsePB;
  1482.     DirAddPseudonymPB               addPseudonymPB;
  1483.     DirDeletePseudonymPB            deletePseudonymPB;
  1484.     DirAddAliasPB                   addAliasPB;
  1485.     DirEnumerateAttributeTypesGetPB  enumerateAttributeTypesGetPB;
  1486.     DirEnumerateAttributeTypesParsePB  enumerateAttributeTypesParsePB;
  1487.     DirGetNameAndTypePB             getNameAndTypePB;
  1488.     DirSetNameAndTypePB             setNameAndTypePB;
  1489.     DirGetRecordMetaInfoPB          getRecordMetaInfoPB;
  1490.     DirGetDNodeMetaInfoPB           getDNodeMetaInfoPB;
  1491.     DirGetDirectoryInfoPB           getDirectoryInfoPB;
  1492.     DirGetDNodeAccessControlGetPB   getDNodeAccessControlGetPB;
  1493.     DirGetDNodeAccessControlParsePB  getDNodeAccessControlParsePB;
  1494.     DirGetRecordAccessControlGetPB  getRecordAccessControlGetPB;
  1495.     DirGetRecordAccessControlParsePB  getRecordAccessControlParsePB;
  1496.     DirGetAttributeAccessControlGetPB  getAttributeAccessControlGetPB;
  1497.     DirGetAttributeAccessControlParsePB  getAttributeAccessControlParsePB;
  1498.     DirEnumerateDirectoriesGetPB    enumerateDirectoriesGetPB;
  1499.     DirEnumerateDirectoriesParsePB  enumerateDirectoriesParsePB;
  1500.     DirAddADAPDirectoryPB           addADAPDirectoryPB;
  1501.     DirRemoveDirectoryPB            removeDirectoryPB;
  1502.     DirNetSearchADAPDirectoriesGetPB  netSearchADAPDirectoriesGetPB;
  1503.     DirNetSearchADAPDirectoriesParsePB  netSearchADAPDirectoriesParsePB;
  1504.     DirFindADAPDirectoryByNetSearchPB  findADAPDirectoryByNetSearchPB;
  1505.     DirMapDNodeNumberToPathNamePB   mapDNodeNumberToPathNamePB;
  1506.     DirMapPathNameToDNodeNumberPB   mapPathNameToDNodeNumberPB;
  1507.     DirGetLocalNetworkSpecPB        getLocalNetworkSpecPB;
  1508.     DirGetDNodeInfoPB               getDNodeInfoPB;
  1509.     DirCreatePersonalDirectoryPB    createPersonalDirectoryPB;
  1510.     DirOpenPersonalDirectoryPB      openPersonalDirectoryPB;
  1511.     DirClosePersonalDirectoryPB     closePersonalDirectoryPB;
  1512.     DirMakePersonalDirectoryRLIPB   makePersonalDirectoryRLIPB;
  1513.     DirAddDSAMPB                    addDSAMPB;
  1514.     DirInstantiateDSAMPB            instantiateDSAMPB;
  1515.     DirRemoveDSAMPB                 removeDSAMPB;
  1516.     DirAddDSAMDirectoryPB           addDSAMDirectoryPB;
  1517.     DirGetExtendedDirectoriesInfoPB  getExtendedDirectoriesInfoPB;
  1518.     DirGetDirectoryIconPB           getDirectoryIconPB;
  1519.     DirGetOCESetupRefNumPB          dirGetOCESetupRefNumPB;
  1520.     DirAbortPB                      abortPB;
  1521. };
  1522. #if OPAQUE_UPP_TYPES
  1523. #if CALL_NOT_IN_CARBON
  1524.     EXTERN_API(AuthIOCompletionUPP)
  1525.     NewAuthIOCompletionUPP         (AuthIOCompletionProcPtr userRoutine);
  1526.     EXTERN_API(NotificationUPP)
  1527.     NewNotificationUPP             (NotificationProcPtr     userRoutine);
  1528.     EXTERN_API(DirIOCompletionUPP)
  1529.     NewDirIOCompletionUPP          (DirIOCompletionProcPtr  userRoutine);
  1530.     EXTERN_API(ForEachDirEnumSpecUPP)
  1531.     NewForEachDirEnumSpecUPP       (ForEachDirEnumSpecProcPtr userRoutine);
  1532.     EXTERN_API(ForEachRecordUPP)
  1533.     NewForEachRecordUPP            (ForEachRecordProcPtr    userRoutine);
  1534.     EXTERN_API(ForEachLookupRecordIDUPP)
  1535.     NewForEachLookupRecordIDUPP    (ForEachLookupRecordIDProcPtr userRoutine);
  1536.     EXTERN_API(ForEachAttrTypeLookupUPP)
  1537.     NewForEachAttrTypeLookupUPP    (ForEachAttrTypeLookupProcPtr userRoutine);
  1538.     EXTERN_API(ForEachAttrValueUPP)
  1539.     NewForEachAttrValueUPP         (ForEachAttrValueProcPtr userRoutine);
  1540.     EXTERN_API(ForEachAttrTypeUPP)
  1541.     NewForEachAttrTypeUPP          (ForEachAttrTypeProcPtr  userRoutine);
  1542.     EXTERN_API(ForEachRecordIDUPP)
  1543.     NewForEachRecordIDUPP          (ForEachRecordIDProcPtr  userRoutine);
  1544.     EXTERN_API(ForEachDirectoryUPP)
  1545.     NewForEachDirectoryUPP         (ForEachDirectoryProcPtr userRoutine);
  1546.     EXTERN_API(ForEachADAPDirectoryUPP)
  1547.     NewForEachADAPDirectoryUPP     (ForEachADAPDirectoryProcPtr userRoutine);
  1548.     EXTERN_API(ForEachDNodeAccessControlUPP)
  1549.     NewForEachDNodeAccessControlUPP    (ForEachDNodeAccessControlProcPtr userRoutine);
  1550.     EXTERN_API(ForEachRecordAccessControlUPP)
  1551.     NewForEachRecordAccessControlUPP    (ForEachRecordAccessControlProcPtr userRoutine);
  1552.     EXTERN_API(ForEachAttributeAccessControlUPP)
  1553.     NewForEachAttributeAccessControlUPP    (ForEachAttributeAccessControlProcPtr userRoutine);
  1554.     EXTERN_API(DSAMDirUPP)
  1555.     NewDSAMDirUPP                  (DSAMDirProcPtr          userRoutine);
  1556.     EXTERN_API(DSAMDirParseUPP)
  1557.     NewDSAMDirParseUPP             (DSAMDirParseProcPtr     userRoutine);
  1558.     EXTERN_API(DSAMAuthUPP)
  1559.     NewDSAMAuthUPP                 (DSAMAuthProcPtr         userRoutine);
  1560.     EXTERN_API(void)
  1561.     DisposeAuthIOCompletionUPP     (AuthIOCompletionUPP     userUPP);
  1562.     EXTERN_API(void)
  1563.     DisposeNotificationUPP         (NotificationUPP         userUPP);
  1564.     EXTERN_API(void)
  1565.     DisposeDirIOCompletionUPP      (DirIOCompletionUPP      userUPP);
  1566.     EXTERN_API(void)
  1567.     DisposeForEachDirEnumSpecUPP    (ForEachDirEnumSpecUPP  userUPP);
  1568.     EXTERN_API(void)
  1569.     DisposeForEachRecordUPP        (ForEachRecordUPP        userUPP);
  1570.     EXTERN_API(void)
  1571.     DisposeForEachLookupRecordIDUPP    (ForEachLookupRecordIDUPP userUPP);
  1572.     EXTERN_API(void)
  1573.     DisposeForEachAttrTypeLookupUPP    (ForEachAttrTypeLookupUPP userUPP);
  1574.     EXTERN_API(void)
  1575.     DisposeForEachAttrValueUPP     (ForEachAttrValueUPP     userUPP);
  1576.     EXTERN_API(void)
  1577.     DisposeForEachAttrTypeUPP      (ForEachAttrTypeUPP      userUPP);
  1578.     EXTERN_API(void)
  1579.     DisposeForEachRecordIDUPP      (ForEachRecordIDUPP      userUPP);
  1580.     EXTERN_API(void)
  1581.     DisposeForEachDirectoryUPP     (ForEachDirectoryUPP     userUPP);
  1582.     EXTERN_API(void)
  1583.     DisposeForEachADAPDirectoryUPP    (ForEachADAPDirectoryUPP userUPP);
  1584.     EXTERN_API(void)
  1585.     DisposeForEachDNodeAccessControlUPP    (ForEachDNodeAccessControlUPP userUPP);
  1586.     EXTERN_API(void)
  1587.     DisposeForEachRecordAccessControlUPP    (ForEachRecordAccessControlUPP userUPP);
  1588.     EXTERN_API(void)
  1589.     DisposeForEachAttributeAccessControlUPP    (ForEachAttributeAccessControlUPP userUPP);
  1590.     EXTERN_API(void)
  1591.     DisposeDSAMDirUPP              (DSAMDirUPP              userUPP);
  1592.     EXTERN_API(void)
  1593.     DisposeDSAMDirParseUPP         (DSAMDirParseUPP         userUPP);
  1594.     EXTERN_API(void)
  1595.     DisposeDSAMAuthUPP             (DSAMAuthUPP             userUPP);
  1596.     EXTERN_API(void)
  1597.     InvokeAuthIOCompletionUPP      (AuthParamBlockPtr       paramBlock,
  1598.                                     AuthIOCompletionUPP     userUPP);
  1599.     EXTERN_API(Boolean)
  1600.     InvokeNotificationUPP          (long                    clientData,
  1601.                                     AuthLocalIdentityOp     callValue,
  1602.                                     AuthLocalIdentityLockAction actionValue,
  1603.                                     LocalIdentity           identity,
  1604.                                     NotificationUPP         userUPP);
  1605.     EXTERN_API(void)
  1606.     InvokeDirIOCompletionUPP       (DirParamBlockPtr        paramBlock,
  1607.                                     DirIOCompletionUPP      userUPP);
  1608.     EXTERN_API(Boolean)
  1609.     InvokeForEachDirEnumSpecUPP    (long                    clientData,
  1610.                                     const DirEnumSpec *     enumSpec,
  1611.                                     ForEachDirEnumSpecUPP   userUPP);
  1612.     EXTERN_API(Boolean)
  1613.     InvokeForEachRecordUPP         (long                    clientData,
  1614.                                     const DirEnumSpec *     enumSpec,
  1615.                                     PackedRLIPtr            pRLI,
  1616.                                     ForEachRecordUPP        userUPP);
  1617.     EXTERN_API(Boolean)
  1618.     InvokeForEachLookupRecordIDUPP    (long                 clientData,
  1619.                                     const RecordID *        recordID,
  1620.                                     ForEachLookupRecordIDUPP userUPP);
  1621.     EXTERN_API(Boolean)
  1622.     InvokeForEachAttrTypeLookupUPP    (long                 clientData,
  1623.                                     const AttributeType *   attrType,
  1624.                                     AccessMask              myAttrAccMask,
  1625.                                     ForEachAttrTypeLookupUPP userUPP);
  1626.     EXTERN_API(Boolean)
  1627.     InvokeForEachAttrValueUPP      (long                    clientData,
  1628.                                     const Attribute *       attribute,
  1629.                                     ForEachAttrValueUPP     userUPP);
  1630.     EXTERN_API(Boolean)
  1631.     InvokeForEachAttrTypeUPP       (long                    clientData,
  1632.                                     const AttributeType *   attrType,
  1633.                                     ForEachAttrTypeUPP      userUPP);
  1634.     EXTERN_API(Boolean)
  1635.     InvokeForEachRecordIDUPP       (long                    clientData,
  1636.                                     const RecordID *        recordID,
  1637.                                     ForEachRecordIDUPP      userUPP);
  1638.     EXTERN_API(Boolean)
  1639.     InvokeForEachDirectoryUPP      (long                    clientData,
  1640.                                     const DirectoryName *   dirName,
  1641.                                     const DirDiscriminator * discriminator,
  1642.                                     DirGestalt              features,
  1643.                                     ForEachDirectoryUPP     userUPP);
  1644.     EXTERN_API(Boolean)
  1645.     InvokeForEachADAPDirectoryUPP    (long                  clientData,
  1646.                                     const DirectoryName *   dirName,
  1647.                                     const DirDiscriminator * discriminator,
  1648.                                     DirGestalt              features,
  1649.                                     AddrBlock               serverHint,
  1650.                                     ForEachADAPDirectoryUPP userUPP);
  1651.     EXTERN_API(Boolean)
  1652.     InvokeForEachDNodeAccessControlUPP    (long             clientData,
  1653.                                     const DSSpec *          dsObj,
  1654.                                     AccessMask              activeDnodeAccMask,
  1655.                                     AccessMask              defaultRecordAccMask,
  1656.                                     AccessMask              defaultAttributeAccMask,
  1657.                                     ForEachDNodeAccessControlUPP userUPP);
  1658.     EXTERN_API(Boolean)
  1659.     InvokeForEachRecordAccessControlUPP    (long            clientData,
  1660.                                     const DSSpec *          dsObj,
  1661.                                     AccessMask              activeDnodeAccMask,
  1662.                                     AccessMask              activeRecordAccMask,
  1663.                                     AccessMask              defaultAttributeAccMask,
  1664.                                     ForEachRecordAccessControlUPP userUPP);
  1665.     EXTERN_API(Boolean)
  1666.     InvokeForEachAttributeAccessControlUPP    (long         clientData,
  1667.                                     const DSSpec *          dsObj,
  1668.                                     AccessMask              activeDnodeAccMask,
  1669.                                     AccessMask              activeRecordAccMask,
  1670.                                     AccessMask              activeAttributeAccMask,
  1671.                                     ForEachAttributeAccessControlUPP userUPP);
  1672.     EXTERN_API(OSErr)
  1673.     InvokeDSAMDirUPP               (void *                  dsamData,
  1674.                                     DirParamBlockPtr        paramBlock,
  1675.                                     Boolean                 async,
  1676.                                     DSAMDirUPP              userUPP);
  1677.     EXTERN_API(OSErr)
  1678.     InvokeDSAMDirParseUPP          (void *                  dsamData,
  1679.                                     DirParamBlockPtr        paramBlock,
  1680.                                     Boolean                 async,
  1681.                                     DSAMDirParseUPP         userUPP);
  1682.     EXTERN_API(OSErr)
  1683.     InvokeDSAMAuthUPP              (void *                  dsamData,
  1684.                                     AuthParamBlockPtr       pb,
  1685.                                     Boolean                 async,
  1686.                                     DSAMAuthUPP             userUPP);
  1687. #endif  /* CALL_NOT_IN_CARBON */
  1688. #else
  1689.     enum { uppAuthIOCompletionProcInfo = 0x00009802 };              /* register no_return_value Func(4_bytes:A0) */
  1690.     enum { uppNotificationProcInfo = 0x00003FD0 };                  /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  1691.     enum { uppDirIOCompletionProcInfo = 0x00009802 };               /* register no_return_value Func(4_bytes:A0) */
  1692.     enum { uppForEachDirEnumSpecProcInfo = 0x000003D0 };            /* pascal 1_byte Func(4_bytes, 4_bytes) */
  1693.     enum { uppForEachRecordProcInfo = 0x00000FD0 };                 /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes) */
  1694.     enum { uppForEachLookupRecordIDProcInfo = 0x000003D0 };         /* pascal 1_byte Func(4_bytes, 4_bytes) */
  1695.     enum { uppForEachAttrTypeLookupProcInfo = 0x00000FD0 };         /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes) */
  1696.     enum { uppForEachAttrValueProcInfo = 0x000003D0 };              /* pascal 1_byte Func(4_bytes, 4_bytes) */
  1697.     enum { uppForEachAttrTypeProcInfo = 0x000003D0 };               /* pascal 1_byte Func(4_bytes, 4_bytes) */
  1698.     enum { uppForEachRecordIDProcInfo = 0x000003D0 };               /* pascal 1_byte Func(4_bytes, 4_bytes) */
  1699.     enum { uppForEachDirectoryProcInfo = 0x00003FD0 };              /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  1700.     enum { uppForEachADAPDirectoryProcInfo = 0x0000FFD0 };          /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  1701.     enum { uppForEachDNodeAccessControlProcInfo = 0x0000FFD0 };     /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  1702.     enum { uppForEachRecordAccessControlProcInfo = 0x0000FFD0 };    /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  1703.     enum { uppForEachAttributeAccessControlProcInfo = 0x0000FFD0 };  /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  1704.     enum { uppDSAMDirProcInfo = 0x000007E0 };                       /* pascal 2_bytes Func(4_bytes, 4_bytes, 1_byte) */
  1705.     enum { uppDSAMDirParseProcInfo = 0x000007E0 };                  /* pascal 2_bytes Func(4_bytes, 4_bytes, 1_byte) */
  1706.     enum { uppDSAMAuthProcInfo = 0x000007E0 };                      /* pascal 2_bytes Func(4_bytes, 4_bytes, 1_byte) */
  1707.     #define NewAuthIOCompletionUPP(userRoutine)                     (AuthIOCompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppAuthIOCompletionProcInfo, GetCurrentArchitecture())
  1708.     #define NewNotificationUPP(userRoutine)                         (NotificationUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNotificationProcInfo, GetCurrentArchitecture())
  1709.     #define NewDirIOCompletionUPP(userRoutine)                      (DirIOCompletionUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDirIOCompletionProcInfo, GetCurrentArchitecture())
  1710.     #define NewForEachDirEnumSpecUPP(userRoutine)                   (ForEachDirEnumSpecUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppForEachDirEnumSpecProcInfo, GetCurrentArchitecture())
  1711.     #define NewForEachRecordUPP(userRoutine)                        (ForEachRecordUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppForEachRecordProcInfo, GetCurrentArchitecture())
  1712.     #define NewForEachLookupRecordIDUPP(userRoutine)                (ForEachLookupRecordIDUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppForEachLookupRecordIDProcInfo, GetCurrentArchitecture())
  1713.     #define NewForEachAttrTypeLookupUPP(userRoutine)                (ForEachAttrTypeLookupUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppForEachAttrTypeLookupProcInfo, GetCurrentArchitecture())
  1714.     #define NewForEachAttrValueUPP(userRoutine)                     (ForEachAttrValueUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppForEachAttrValueProcInfo, GetCurrentArchitecture())
  1715.     #define NewForEachAttrTypeUPP(userRoutine)                      (ForEachAttrTypeUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppForEachAttrTypeProcInfo, GetCurrentArchitecture())
  1716.     #define NewForEachRecordIDUPP(userRoutine)                      (ForEachRecordIDUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppForEachRecordIDProcInfo, GetCurrentArchitecture())
  1717.     #define NewForEachDirectoryUPP(userRoutine)                     (ForEachDirectoryUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppForEachDirectoryProcInfo, GetCurrentArchitecture())
  1718.     #define NewForEachADAPDirectoryUPP(userRoutine)                 (ForEachADAPDirectoryUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppForEachADAPDirectoryProcInfo, GetCurrentArchitecture())
  1719.     #define NewForEachDNodeAccessControlUPP(userRoutine)            (ForEachDNodeAccessControlUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppForEachDNodeAccessControlProcInfo, GetCurrentArchitecture())
  1720.     #define NewForEachRecordAccessControlUPP(userRoutine)           (ForEachRecordAccessControlUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppForEachRecordAccessControlProcInfo, GetCurrentArchitecture())
  1721.     #define NewForEachAttributeAccessControlUPP(userRoutine)        (ForEachAttributeAccessControlUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppForEachAttributeAccessControlProcInfo, GetCurrentArchitecture())
  1722.     #define NewDSAMDirUPP(userRoutine)                              (DSAMDirUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDSAMDirProcInfo, GetCurrentArchitecture())
  1723.     #define NewDSAMDirParseUPP(userRoutine)                         (DSAMDirParseUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDSAMDirParseProcInfo, GetCurrentArchitecture())
  1724.     #define NewDSAMAuthUPP(userRoutine)                             (DSAMAuthUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDSAMAuthProcInfo, GetCurrentArchitecture())
  1725.     #define DisposeAuthIOCompletionUPP(userUPP)                     DisposeRoutineDescriptor(userUPP)
  1726.     #define DisposeNotificationUPP(userUPP)                         DisposeRoutineDescriptor(userUPP)
  1727.     #define DisposeDirIOCompletionUPP(userUPP)                      DisposeRoutineDescriptor(userUPP)
  1728.     #define DisposeForEachDirEnumSpecUPP(userUPP)                   DisposeRoutineDescriptor(userUPP)
  1729.     #define DisposeForEachRecordUPP(userUPP)                        DisposeRoutineDescriptor(userUPP)
  1730.     #define DisposeForEachLookupRecordIDUPP(userUPP)                DisposeRoutineDescriptor(userUPP)
  1731.     #define DisposeForEachAttrTypeLookupUPP(userUPP)                DisposeRoutineDescriptor(userUPP)
  1732.     #define DisposeForEachAttrValueUPP(userUPP)                     DisposeRoutineDescriptor(userUPP)
  1733.     #define DisposeForEachAttrTypeUPP(userUPP)                      DisposeRoutineDescriptor(userUPP)
  1734.     #define DisposeForEachRecordIDUPP(userUPP)                      DisposeRoutineDescriptor(userUPP)
  1735.     #define DisposeForEachDirectoryUPP(userUPP)                     DisposeRoutineDescriptor(userUPP)
  1736.     #define DisposeForEachADAPDirectoryUPP(userUPP)                 DisposeRoutineDescriptor(userUPP)
  1737.     #define DisposeForEachDNodeAccessControlUPP(userUPP)            DisposeRoutineDescriptor(userUPP)
  1738.     #define DisposeForEachRecordAccessControlUPP(userUPP)           DisposeRoutineDescriptor(userUPP)
  1739.     #define DisposeForEachAttributeAccessControlUPP(userUPP)        DisposeRoutineDescriptor(userUPP)
  1740.     #define DisposeDSAMDirUPP(userUPP)                              DisposeRoutineDescriptor(userUPP)
  1741.     #define DisposeDSAMDirParseUPP(userUPP)                         DisposeRoutineDescriptor(userUPP)
  1742.     #define DisposeDSAMAuthUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  1743.     #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1744.     #pragma parameter InvokeAuthIOCompletionUPP(__A0, __A1)
  1745.     void InvokeAuthIOCompletionUPP(AuthParamBlockPtr paramBlock, AuthIOCompletionUPP userUPP) = 0x4E91;
  1746.     #else
  1747.         #define InvokeAuthIOCompletionUPP(paramBlock, userUPP)          CALL_ONE_PARAMETER_UPP((userUPP), uppAuthIOCompletionProcInfo, (paramBlock))
  1748.     #endif
  1749.     #define InvokeNotificationUPP(clientData, callValue, actionValue, identity, userUPP)  (Boolean)CALL_FOUR_PARAMETER_UPP((userUPP), uppNotificationProcInfo, (clientData), (callValue), (actionValue), (identity))
  1750.     #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  1751.     #pragma parameter InvokeDirIOCompletionUPP(__A0, __A1)
  1752.     void InvokeDirIOCompletionUPP(DirParamBlockPtr paramBlock, DirIOCompletionUPP userUPP) = 0x4E91;
  1753.     #else
  1754.         #define InvokeDirIOCompletionUPP(paramBlock, userUPP)           CALL_ONE_PARAMETER_UPP((userUPP), uppDirIOCompletionProcInfo, (paramBlock))
  1755.     #endif
  1756.     #define InvokeForEachDirEnumSpecUPP(clientData, enumSpec, userUPP)  (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppForEachDirEnumSpecProcInfo, (clientData), (enumSpec))
  1757.     #define InvokeForEachRecordUPP(clientData, enumSpec, pRLI, userUPP)  (Boolean)CALL_THREE_PARAMETER_UPP((userUPP), uppForEachRecordProcInfo, (clientData), (enumSpec), (pRLI))
  1758.     #define InvokeForEachLookupRecordIDUPP(clientData, recordID, userUPP)  (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppForEachLookupRecordIDProcInfo, (clientData), (recordID))
  1759.     #define InvokeForEachAttrTypeLookupUPP(clientData, attrType, myAttrAccMask, userUPP)  (Boolean)CALL_THREE_PARAMETER_UPP((userUPP), uppForEachAttrTypeLookupProcInfo, (clientData), (attrType), (myAttrAccMask))
  1760.     #define InvokeForEachAttrValueUPP(clientData, attribute, userUPP)  (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppForEachAttrValueProcInfo, (clientData), (attribute))
  1761.     #define InvokeForEachAttrTypeUPP(clientData, attrType, userUPP)  (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppForEachAttrTypeProcInfo, (clientData), (attrType))
  1762.     #define InvokeForEachRecordIDUPP(clientData, recordID, userUPP)  (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppForEachRecordIDProcInfo, (clientData), (recordID))
  1763.     #define InvokeForEachDirectoryUPP(clientData, dirName, discriminator, features, userUPP)  (Boolean)CALL_FOUR_PARAMETER_UPP((userUPP), uppForEachDirectoryProcInfo, (clientData), (dirName), (discriminator), (features))
  1764.     #define InvokeForEachADAPDirectoryUPP(clientData, dirName, discriminator, features, serverHint, userUPP)  (Boolean)CALL_FIVE_PARAMETER_UPP((userUPP), uppForEachADAPDirectoryProcInfo, (clientData), (dirName), (discriminator), (features), (serverHint))
  1765.     #define InvokeForEachDNodeAccessControlUPP(clientData, dsObj, activeDnodeAccMask, defaultRecordAccMask, defaultAttributeAccMask, userUPP)  (Boolean)CALL_FIVE_PARAMETER_UPP((userUPP), uppForEachDNodeAccessControlProcInfo, (clientData), (dsObj), (activeDnodeAccMask), (defaultRecordAccMask), (defaultAttributeAccMask))
  1766.     #define InvokeForEachRecordAccessControlUPP(clientData, dsObj, activeDnodeAccMask, activeRecordAccMask, defaultAttributeAccMask, userUPP)  (Boolean)CALL_FIVE_PARAMETER_UPP((userUPP), uppForEachRecordAccessControlProcInfo, (clientData), (dsObj), (activeDnodeAccMask), (activeRecordAccMask), (defaultAttributeAccMask))
  1767.     #define InvokeForEachAttributeAccessControlUPP(clientData, dsObj, activeDnodeAccMask, activeRecordAccMask, activeAttributeAccMask, userUPP)  (Boolean)CALL_FIVE_PARAMETER_UPP((userUPP), uppForEachAttributeAccessControlProcInfo, (clientData), (dsObj), (activeDnodeAccMask), (activeRecordAccMask), (activeAttributeAccMask))
  1768.     #define InvokeDSAMDirUPP(dsamData, paramBlock, async, userUPP)  (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppDSAMDirProcInfo, (dsamData), (paramBlock), (async))
  1769.     #define InvokeDSAMDirParseUPP(dsamData, paramBlock, async, userUPP)  (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppDSAMDirParseProcInfo, (dsamData), (paramBlock), (async))
  1770.     #define InvokeDSAMAuthUPP(dsamData, pb, async, userUPP)         (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppDSAMAuthProcInfo, (dsamData), (pb), (async))
  1771. #endif
  1772. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  1773. #define NewAuthIOCompletionProc(userRoutine)                    NewAuthIOCompletionUPP(userRoutine)
  1774. #define NewNotificationProc(userRoutine)                        NewNotificationUPP(userRoutine)
  1775. #define NewDirIOCompletionProc(userRoutine)                     NewDirIOCompletionUPP(userRoutine)
  1776. #define NewForEachDirEnumSpecProc(userRoutine)                  NewForEachDirEnumSpecUPP(userRoutine)
  1777. #define NewForEachRecordProc(userRoutine)                       NewForEachRecordUPP(userRoutine)
  1778. #define NewForEachLookupRecordIDProc(userRoutine)               NewForEachLookupRecordIDUPP(userRoutine)
  1779. #define NewForEachAttrTypeLookupProc(userRoutine)               NewForEachAttrTypeLookupUPP(userRoutine)
  1780. #define NewForEachAttrValueProc(userRoutine)                    NewForEachAttrValueUPP(userRoutine)
  1781. #define NewForEachAttrTypeProc(userRoutine)                     NewForEachAttrTypeUPP(userRoutine)
  1782. #define NewForEachRecordIDProc(userRoutine)                     NewForEachRecordIDUPP(userRoutine)
  1783. #define NewForEachDirectoryProc(userRoutine)                    NewForEachDirectoryUPP(userRoutine)
  1784. #define NewForEachADAPDirectoryProc(userRoutine)                NewForEachADAPDirectoryUPP(userRoutine)
  1785. #define NewForEachDNodeAccessControlProc(userRoutine)           NewForEachDNodeAccessControlUPP(userRoutine)
  1786. #define NewForEachRecordAccessControlProc(userRoutine)          NewForEachRecordAccessControlUPP(userRoutine)
  1787. #define NewForEachAttributeAccessControlProc(userRoutine)       NewForEachAttributeAccessControlUPP(userRoutine)
  1788. #define NewDSAMDirProc(userRoutine)                             NewDSAMDirUPP(userRoutine)
  1789. #define NewDSAMDirParseProc(userRoutine)                        NewDSAMDirParseUPP(userRoutine)
  1790. #define NewDSAMAuthProc(userRoutine)                            NewDSAMAuthUPP(userRoutine)
  1791. #define CallAuthIOCompletionProc(userRoutine, paramBlock)       InvokeAuthIOCompletionUPP(paramBlock, userRoutine)
  1792. #define CallNotificationProc(userRoutine, clientData, callValue, actionValue, identity) InvokeNotificationUPP(clientData, callValue, actionValue, identity, userRoutine)
  1793. #define CallDirIOCompletionProc(userRoutine, paramBlock)        InvokeDirIOCompletionUPP(paramBlock, userRoutine)
  1794. #define CallForEachDirEnumSpecProc(userRoutine, clientData, enumSpec) InvokeForEachDirEnumSpecUPP(clientData, enumSpec, userRoutine)
  1795. #define CallForEachRecordProc(userRoutine, clientData, enumSpec, pRLI) InvokeForEachRecordUPP(clientData, enumSpec, pRLI, userRoutine)
  1796. #define CallForEachLookupRecordIDProc(userRoutine, clientData, recordID) InvokeForEachLookupRecordIDUPP(clientData, recordID, userRoutine)
  1797. #define CallForEachAttrTypeLookupProc(userRoutine, clientData, attrType, myAttrAccMask) InvokeForEachAttrTypeLookupUPP(clientData, attrType, myAttrAccMask, userRoutine)
  1798. #define CallForEachAttrValueProc(userRoutine, clientData, attribute) InvokeForEachAttrValueUPP(clientData, attribute, userRoutine)
  1799. #define CallForEachAttrTypeProc(userRoutine, clientData, attrType) InvokeForEachAttrTypeUPP(clientData, attrType, userRoutine)
  1800. #define CallForEachRecordIDProc(userRoutine, clientData, recordID) InvokeForEachRecordIDUPP(clientData, recordID, userRoutine)
  1801. #define CallForEachDirectoryProc(userRoutine, clientData, dirName, discriminator, features) InvokeForEachDirectoryUPP(clientData, dirName, discriminator, features, userRoutine)
  1802. #define CallForEachADAPDirectoryProc(userRoutine, clientData, dirName, discriminator, features, serverHint) InvokeForEachADAPDirectoryUPP(clientData, dirName, discriminator, features, serverHint, userRoutine)
  1803. #define CallForEachDNodeAccessControlProc(userRoutine, clientData, dsObj, activeDnodeAccMask, defaultRecordAccMask, defaultAttributeAccMask) InvokeForEachDNodeAccessControlUPP(clientData, dsObj, activeDnodeAccMask, defaultRecordAccMask, defaultAttributeAccMask, userRoutine)
  1804. #define CallForEachRecordAccessControlProc(userRoutine, clientData, dsObj, activeDnodeAccMask, activeRecordAccMask, defaultAttributeAccMask) InvokeForEachRecordAccessControlUPP(clientData, dsObj, activeDnodeAccMask, activeRecordAccMask, defaultAttributeAccMask, userRoutine)
  1805. #define CallForEachAttributeAccessControlProc(userRoutine, clientData, dsObj, activeDnodeAccMask, activeRecordAccMask, activeAttributeAccMask) InvokeForEachAttributeAccessControlUPP(clientData, dsObj, activeDnodeAccMask, activeRecordAccMask, activeAttributeAccMask, userRoutine)
  1806. #define CallDSAMDirProc(userRoutine, dsamData, paramBlock, async) InvokeDSAMDirUPP(dsamData, paramBlock, async, userRoutine)
  1807. #define CallDSAMDirParseProc(userRoutine, dsamData, paramBlock, async) InvokeDSAMDirParseUPP(dsamData, paramBlock, async, userRoutine)
  1808. #define CallDSAMAuthProc(userRoutine, dsamData, pb, async)      InvokeDSAMAuthUPP(dsamData, pb, async, userRoutine)
  1809. #if CALL_NOT_IN_CARBON
  1810. EXTERN_API( OSErr )
  1811. AuthBindSpecificIdentity        (AuthParamBlockPtr      paramBlock,
  1812.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0200, 0xAA5E);
  1813. EXTERN_API( OSErr )
  1814. AuthUnbindSpecificIdentity      (AuthParamBlockPtr      paramBlock,
  1815.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0201, 0xAA5E);
  1816. EXTERN_API( OSErr )
  1817. AuthResolveCreationID           (AuthParamBlockPtr      paramBlock,
  1818.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0202, 0xAA5E);
  1819. EXTERN_API( OSErr )
  1820. AuthGetSpecificIdentityInfo     (AuthParamBlockPtr      paramBlock,
  1821.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0203, 0xAA5E);
  1822. EXTERN_API( OSErr )
  1823. AuthAddKey                      (AuthParamBlockPtr      paramBlock,
  1824.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0207, 0xAA5E);
  1825. EXTERN_API( OSErr )
  1826. AuthChangeKey                   (AuthParamBlockPtr      paramBlock,
  1827.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0208, 0xAA5E);
  1828. EXTERN_API( OSErr )
  1829. AuthDeleteKey                   (AuthParamBlockPtr      paramBlock,
  1830.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0209, 0xAA5E);
  1831. EXTERN_API( OSErr )
  1832. AuthPasswordToKey               (AuthParamBlockPtr      paramBlock,
  1833.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x020A, 0xAA5E);
  1834. EXTERN_API( OSErr )
  1835. AuthGetCredentials              (AuthParamBlockPtr      paramBlock,
  1836.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x020B, 0xAA5E);
  1837. EXTERN_API( OSErr )
  1838. AuthDecryptCredentials          (AuthParamBlockPtr      paramBlock,
  1839.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x020C, 0xAA5E);
  1840. EXTERN_API( OSErr )
  1841. AuthMakeChallenge               (AuthParamBlockPtr      paramBlock,
  1842.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x020F, 0xAA5E);
  1843. EXTERN_API( OSErr )
  1844. AuthMakeReply                   (AuthParamBlockPtr      paramBlock,
  1845.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0210, 0xAA5E);
  1846. EXTERN_API( OSErr )
  1847. AuthVerifyReply                 (AuthParamBlockPtr      paramBlock,
  1848.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0211, 0xAA5E);
  1849. EXTERN_API( OSErr )
  1850. AuthGetUTCTime                  (AuthParamBlockPtr      paramBlock,
  1851.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x021A, 0xAA5E);
  1852. EXTERN_API( OSErr )
  1853. AuthMakeProxy                   (AuthParamBlockPtr      paramBlock,
  1854.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0212, 0xAA5E);
  1855. EXTERN_API( OSErr )
  1856. AuthTradeProxyForCredentials    (AuthParamBlockPtr      paramBlock,
  1857.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0213, 0xAA5E);
  1858. /* Local Identity API */
  1859. EXTERN_API( OSErr )
  1860. AuthGetLocalIdentity            (AuthParamBlockPtr      paramBlock,
  1861.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0204, 0xAA5E);
  1862. EXTERN_API( OSErr )
  1863. AuthUnlockLocalIdentity         (AuthParamBlockPtr      paramBlock,
  1864.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0214, 0xAA5E);
  1865. EXTERN_API( OSErr )
  1866. AuthLockLocalIdentity           (AuthParamBlockPtr      paramBlock,
  1867.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0215, 0xAA5E);
  1868. EXTERN_API( OSErr )
  1869. AuthAddToLocalIdentityQueue     (AuthParamBlockPtr      paramBlock,
  1870.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0205, 0xAA5E);
  1871. EXTERN_API( OSErr )
  1872. AuthRemoveFromLocalIdentityQueue (AuthParamBlockPtr     paramBlock,
  1873.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0206, 0xAA5E);
  1874. EXTERN_API( OSErr )
  1875. AuthSetupLocalIdentity          (AuthParamBlockPtr      paramBlock,
  1876.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0216, 0xAA5E);
  1877. EXTERN_API( OSErr )
  1878. AuthChangeLocalIdentity         (AuthParamBlockPtr      paramBlock,
  1879.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0217, 0xAA5E);
  1880. EXTERN_API( OSErr )
  1881. AuthRemoveLocalIdentity         (AuthParamBlockPtr      paramBlock,
  1882.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0218, 0xAA5E);
  1883. EXTERN_API( OSErr )
  1884. DirAddRecord                    (DirParamBlockPtr       paramBlock,
  1885.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0109, 0xAA5E);
  1886. EXTERN_API( OSErr )
  1887. DirDeleteRecord                 (DirParamBlockPtr       paramBlock,
  1888.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x010A, 0xAA5E);
  1889. EXTERN_API( OSErr )
  1890. DirEnumerateGet                 (DirParamBlockPtr       paramBlock,
  1891.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0111, 0xAA5E);
  1892. EXTERN_API( OSErr )
  1893. DirEnumerateParse               (DirParamBlockPtr       paramBlock,
  1894.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0101, 0xAA5E);
  1895. EXTERN_API( OSErr )
  1896. DirFindRecordGet                (DirParamBlockPtr       paramBlock,
  1897.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0140, 0xAA5E);
  1898. EXTERN_API( OSErr )
  1899. DirFindRecordParse              (DirParamBlockPtr       paramBlock,
  1900.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0141, 0xAA5E);
  1901. EXTERN_API( OSErr )
  1902. DirLookupGet                    (DirParamBlockPtr       paramBlock,
  1903.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0117, 0xAA5E);
  1904. EXTERN_API( OSErr )
  1905. DirLookupParse                  (DirParamBlockPtr       paramBlock,
  1906.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0102, 0xAA5E);
  1907. EXTERN_API( OSErr )
  1908. DirAddAttributeValue            (DirParamBlockPtr       paramBlock,
  1909.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x010B, 0xAA5E);
  1910. EXTERN_API( OSErr )
  1911. DirDeleteAttributeValue         (DirParamBlockPtr       paramBlock,
  1912.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x010C, 0xAA5E);
  1913. EXTERN_API( OSErr )
  1914. DirDeleteAttributeType          (DirParamBlockPtr       paramBlock,
  1915.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0130, 0xAA5E);
  1916. EXTERN_API( OSErr )
  1917. DirChangeAttributeValue         (DirParamBlockPtr       paramBlock,
  1918.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x010D, 0xAA5E);
  1919. EXTERN_API( OSErr )
  1920. DirVerifyAttributeValue         (DirParamBlockPtr       paramBlock,
  1921.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x010E, 0xAA5E);
  1922. EXTERN_API( OSErr )
  1923. DirFindValue                    (DirParamBlockPtr       paramBlock,
  1924.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0126, 0xAA5E);
  1925. EXTERN_API( OSErr )
  1926. DirEnumerateAttributeTypesGet   (DirParamBlockPtr       paramBlock,
  1927.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0112, 0xAA5E);
  1928. EXTERN_API( OSErr )
  1929. DirEnumerateAttributeTypesParse (DirParamBlockPtr       paramBlock,
  1930.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0103, 0xAA5E);
  1931. EXTERN_API( OSErr )
  1932. DirAddPseudonym                 (DirParamBlockPtr       paramBlock,
  1933.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x010F, 0xAA5E);
  1934. EXTERN_API( OSErr )
  1935. DirDeletePseudonym              (DirParamBlockPtr       paramBlock,
  1936.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0110, 0xAA5E);
  1937. EXTERN_API( OSErr )
  1938. DirAddAlias                     (DirParamBlockPtr       paramBlock,
  1939.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x011C, 0xAA5E);
  1940. EXTERN_API( OSErr )
  1941. DirEnumeratePseudonymGet        (DirParamBlockPtr       paramBlock,
  1942.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0113, 0xAA5E);
  1943. EXTERN_API( OSErr )
  1944. DirEnumeratePseudonymParse      (DirParamBlockPtr       paramBlock,
  1945.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0104, 0xAA5E);
  1946. EXTERN_API( OSErr )
  1947. DirGetNameAndType               (DirParamBlockPtr       paramBlock,
  1948.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0114, 0xAA5E);
  1949. EXTERN_API( OSErr )
  1950. DirSetNameAndType               (DirParamBlockPtr       paramBlock,
  1951.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0115, 0xAA5E);
  1952. EXTERN_API( OSErr )
  1953. DirGetRecordMetaInfo            (DirParamBlockPtr       paramBlock,
  1954.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0116, 0xAA5E);
  1955. EXTERN_API( OSErr )
  1956. DirGetDNodeMetaInfo             (DirParamBlockPtr       paramBlock,
  1957.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0118, 0xAA5E);
  1958. EXTERN_API( OSErr )
  1959. DirGetDirectoryInfo             (DirParamBlockPtr       paramBlock,
  1960.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0119, 0xAA5E);
  1961. EXTERN_API( OSErr )
  1962. DirGetDNodeAccessControlGet     (DirParamBlockPtr       paramBlock,
  1963.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x012A, 0xAA5E);
  1964. EXTERN_API( OSErr )
  1965. DirGetDNodeAccessControlParse   (DirParamBlockPtr       paramBlock,
  1966.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x012F, 0xAA5E);
  1967. EXTERN_API( OSErr )
  1968. DirGetRecordAccessControlGet    (DirParamBlockPtr       paramBlock,
  1969.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x012C, 0xAA5E);
  1970. EXTERN_API( OSErr )
  1971. DirGetRecordAccessControlParse  (DirParamBlockPtr       paramBlock,
  1972.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0134, 0xAA5E);
  1973. EXTERN_API( OSErr )
  1974. DirGetAttributeAccessControlGet (DirParamBlockPtr       paramBlock,
  1975.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x012E, 0xAA5E);
  1976. EXTERN_API( OSErr )
  1977. DirGetAttributeAccessControlParse (DirParamBlockPtr     paramBlock,
  1978.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0138, 0xAA5E);
  1979. EXTERN_API( OSErr )
  1980. DirEnumerateDirectoriesGet      (DirParamBlockPtr       paramBlock,
  1981.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x011A, 0xAA5E);
  1982. EXTERN_API( OSErr )
  1983. DirEnumerateDirectoriesParse    (DirParamBlockPtr       paramBlock,
  1984.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0106, 0xAA5E);
  1985. EXTERN_API( OSErr )
  1986. DirMapPathNameToDNodeNumber     (DirParamBlockPtr       paramBlock,
  1987.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0122, 0xAA5E);
  1988. EXTERN_API( OSErr )
  1989. DirMapDNodeNumberToPathName     (DirParamBlockPtr       paramBlock,
  1990.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0123, 0xAA5E);
  1991. EXTERN_API( OSErr )
  1992. DirGetLocalNetworkSpec          (DirParamBlockPtr       paramBlock,
  1993.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0124, 0xAA5E);
  1994. EXTERN_API( OSErr )
  1995. DirGetDNodeInfo                 (DirParamBlockPtr       paramBlock,
  1996.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0125, 0xAA5E);
  1997. /*  Trap Dispatchers for Personal Catalog and CSAM Extensions */
  1998. EXTERN_API( OSErr )
  1999. DirCreatePersonalDirectory      (DirParamBlockPtr       paramBlock)                         FIVEWORDINLINE(0x7000, 0x1F00, 0x3F3C, 0x011F, 0xAA5E);
  2000. EXTERN_API( OSErr )
  2001. DirOpenPersonalDirectory        (DirParamBlockPtr       paramBlock)                         FIVEWORDINLINE(0x7000, 0x1F00, 0x3F3C, 0x011E, 0xAA5E);
  2002. EXTERN_API( OSErr )
  2003. DirClosePersonalDirectory       (DirParamBlockPtr       paramBlock)                         FIVEWORDINLINE(0x7000, 0x1F00, 0x3F3C, 0x0131, 0xAA5E);
  2004. EXTERN_API( OSErr )
  2005. DirMakePersonalDirectoryRLI     (DirParamBlockPtr       paramBlock)                         FIVEWORDINLINE(0x7000, 0x1F00, 0x3F3C, 0x0132, 0xAA5E);
  2006. EXTERN_API( OSErr )
  2007. DirAddDSAM                      (DirParamBlockPtr       paramBlock)                         FIVEWORDINLINE(0x7000, 0x1F00, 0x3F3C, 0x011D, 0xAA5E);
  2008. EXTERN_API( OSErr )
  2009. DirInstantiateDSAM              (DirParamBlockPtr       paramBlock)                         FIVEWORDINLINE(0x7000, 0x1F00, 0x3F3C, 0x0127, 0xAA5E);
  2010. EXTERN_API( OSErr )
  2011. DirRemoveDSAM                   (DirParamBlockPtr       paramBlock)                         FIVEWORDINLINE(0x7000, 0x1F00, 0x3F3C, 0x0120, 0xAA5E);
  2012. EXTERN_API( OSErr )
  2013. DirAddDSAMDirectory             (DirParamBlockPtr       paramBlock,
  2014.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0133, 0xAA5E);
  2015. EXTERN_API( OSErr )
  2016. DirGetExtendedDirectoriesInfo   (DirParamBlockPtr       paramBlock,
  2017.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0136, 0xAA5E);
  2018. EXTERN_API( OSErr )
  2019. DirGetDirectoryIcon             (DirParamBlockPtr       paramBlock,
  2020.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0121, 0xAA5E);
  2021. EXTERN_API( OSErr )
  2022. DirAddADAPDirectory             (DirParamBlockPtr       paramBlock,
  2023.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0137, 0xAA5E);
  2024. EXTERN_API( OSErr )
  2025. DirRemoveDirectory              (DirParamBlockPtr       paramBlock,
  2026.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0135, 0xAA5E);
  2027. EXTERN_API( OSErr )
  2028. DirNetSearchADAPDirectoriesGet  (DirParamBlockPtr       paramBlock,
  2029.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0108, 0xAA5E);
  2030. EXTERN_API( OSErr )
  2031. DirNetSearchADAPDirectoriesParse (DirParamBlockPtr      paramBlock,
  2032.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0105, 0xAA5E);
  2033. EXTERN_API( OSErr )
  2034. DirFindADAPDirectoryByNetSearch (DirParamBlockPtr       paramBlock,
  2035.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0107, 0xAA5E);
  2036. EXTERN_API( OSErr )
  2037. DirGetOCESetupRefNum            (DirParamBlockPtr       paramBlock,
  2038.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0128, 0xAA5E);
  2039. EXTERN_API( OSErr )
  2040. DirAbort                        (DirParamBlockPtr       paramBlock)                         FIVEWORDINLINE(0x7000, 0x1F00, 0x3F3C, 0x011B, 0xAA5E);
  2041. EXTERN_API( OSErr )
  2042. OCESetupAddDirectoryInfo        (AuthParamBlockPtr      paramBlock,
  2043.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x0219, 0xAA5E);
  2044. EXTERN_API( OSErr )
  2045. OCESetupChangeDirectoryInfo     (AuthParamBlockPtr      paramBlock,
  2046.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x021B, 0xAA5E);
  2047. EXTERN_API( OSErr )
  2048. OCESetupRemoveDirectoryInfo     (AuthParamBlockPtr      paramBlock,
  2049.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x020D, 0xAA5E);
  2050. EXTERN_API( OSErr )
  2051. OCESetupGetDirectoryInfo        (AuthParamBlockPtr      paramBlock,
  2052.                                  Boolean                async)                              THREEWORDINLINE(0x3F3C, 0x020E, 0xAA5E);
  2053. #endif  /* CALL_NOT_IN_CARBON */
  2054. #if PRAGMA_STRUCT_ALIGN
  2055.     #pragma options align=reset
  2056. #elif PRAGMA_STRUCT_PACKPUSH
  2057.     #pragma pack(pop)
  2058. #elif PRAGMA_STRUCT_PACK
  2059.     #pragma pack()
  2060. #endif
  2061. #ifdef PRAGMA_IMPORT_OFF
  2062. #pragma import off
  2063. #elif PRAGMA_IMPORT
  2064. #pragma import reset
  2065. #endif
  2066. #ifdef __cplusplus
  2067. }
  2068. #endif
  2069. #endif /* __OCEAUTHDIR__ */