DIRSYNC.H
// --dirsync.h------------------------------------------------------------------ 
// 
// Header file containing definitions that are used by multiple files of the  
// directory synchronization sample code. 
// 
// 
// Copyright (C) Microsoft Corp. 1986-1996.  All Rights Reserved. 
// ----------------------------------------------------------------------------- 
#if !defined(_DIRSYNC_H) 
#define _DIRSYNC_H 
 
#include "dapi.h" 
 
// 
// Names of DAPI Attributes 
// 
 
#define OBJ_CLASS                           "Obj-Class" 
#define USN_CHANGED                         "USN-Changed" 
#define USN_CREATED                         "USN-Created" 
#define IS_DELETED                          "Is-Deleted" 
#define OBJ_DIST_NAME                       "Obj-Dist-Name" 
#define COMMON_NAME                         "Common-Name" 
#define IMPORTED_FROM                       "Imported-From" 
#define HOME_SERVER                         "Home-Server" 
 
#define OBJECT_CLASS_REMOTE                 "Remote" 
#define OBJECT_CLASS_MAILBOX                "Mailbox" 
 
// 
// Defined Types 
// 
 
//$--DIR_SYNC_OPERATION--------------------------------------------------------- 
//  Type of operation to be performed on directory. 
// ----------------------------------------------------------------------------- 
typedef enum _DirSyncOperation {            // (hungarian = e) 
    OPERATION_ADD = 0,                      // add a user to the directory 
    OPERATION_DELETE,                       // delete a user from the directory 
    OPERATION_MODIFY,                       // modify a user in the directory 
    OPERATION_LAST                          // all operations are less than this 
} DIR_SYNC_OPERATION, *LPDIR_SYNC_OPERATION; 
 
// 
// Structures 
// 
 
//$--DIR_SYNC_ATTRIBUTE_INFO---------------------------------------------------- 
//  Holds information about an attribute being passed back from BIMPORT. 
//  An array of these structures is passed the the user's fWriteExport()  
//  routine.  Each element of this array corresponds to the element of the  
//  pEntry array element with the same index. 
// 
//  Note: the boolean variable is stored as a DWORD for alignment purposes. 
// ----------------------------------------------------------------------------- 
typedef struct _DirSyncAttributeInfo {      // (hungarian = ds) 
    DWORD   fRequested;                     // TRUE=user requested this attribute 
    LPTSTR  pszName;                        // the name of this attribute 
} DIR_SYNC_ATTRIBUTE_INFO, *LPDIR_SYNC_ATTRIBUTE_INFO; 
 
//$--REG_VARIABLE--------------------------------------------------------------- 
//  Structure used to map variables in memory to registry values. 
//  This is used by routines which read and write data to the registry. 
// ----------------------------------------------------------------------------- 
typedef struct _RevVariable {               // (hungarian = rv) 
    LPTSTR  pszValueName;                   // name of registry value 
    DWORD   dwType;                         // type of value (e.g. REG_DWORD) 
    DWORD   cbData;                         // in: size of buffer, out: size of data 
    LPVOID  pbData;                         // pointer to data buffer 
} REG_VARIABLE, *LPREG_VARIABLE; 
 
// 
// Function Declarations 
// 
 
//$--HrOpenExport--------------------------------------------------------------- 
//  Function to do whatever initialization needs to be done before exporting  
//  records for directory synchronization.  It should return NOERROR if  
//  the initialization was successful and an error otherwise.  If this function  
//  returns an error then HrWriteExport() and HrCloseExport() will not be  
//  called. 
// ----------------------------------------------------------------------------- 
HRESULT HrOpenExport(                       // RETURNS: HRESULT 
    IN LPTSTR pszExportFile);               // file name from /EXPFILE 
 
//$--HrWriteExport-------------------------------------------------------------- 
//  Function to export a single record for directory synchronization.  It is  
//  called repeatedly: once for each record to be exported.  If this function  
//  returns an error it will not be called again, and HrCloseExport() will be  
//  called once to clean everything up. 
// ----------------------------------------------------------------------------- 
HRESULT HrWriteExport(                      // RETURNS: HRESULT 
    IN PDAPI_ENTRY pEntry,                  // record to export 
    IN LPDIR_SYNC_ATTRIBUTE_INFO rgdsAttributeInfo, 
                                            // additional information about pEntry 
    IN LPTSTR pszDN,                        // distinguished name of this object 
    IN DIR_SYNC_OPERATION eOperation);      // type of operation to do with object 
 
//$--HrCloseExport-------------------------------------------------------------- 
//  Function to do whatever cleanup needs to be done after exporting records  
//  for directory synchronization. 
// ----------------------------------------------------------------------------- 
HRESULT HrCloseExport(void);                // RETURNS: HRESULT 
 
//$--HrOpenImport--------------------------------------------------------------- 
//  Function to do whatever initialization needs to be done before importing  
//  records for directory synchronization.  It should return NOERROR if  
//  the initialization was successful and an error otherwise.  If this function  
//  returns an error then HrReadImport() and HrCloseImport() will not be  
//  called. 
// ----------------------------------------------------------------------------- 
HRESULT HrOpenImport(                       // RETURNS: HRESULT 
    IN  LPTSTR pszImportFile,               // name of file to import 
    IN  LPTSTR pszObjectClass,              // default object class 
    IN  LPTSTR pszSourceStamp,              // string for Imported-From attr 
    IN  LPTSTR pszBasePoint,                // default base point 
    IN  LPTSTR pszContainer,                // default container 
    IN  LPTSTR pszHomeServer);              // default home server for new mailbox 
 
//$--HrReadImport--------------------------------------------------------------- 
//  Function to import a single record for directory synchronization.  It is  
//  called repeatedly: once for each record to be imported.  If this function  
//  returns an error it will not be called again, and HrCloseImport() will be  
//  called once to clean everything up. 
// 
//  When there are no more records to import, HrReadImport should return  
//  EDK_E_END_OF_FILE. 
// ----------------------------------------------------------------------------- 
HRESULT HrReadImport(                       // RETURNS: HRESULT 
    OUT LPDIR_SYNC_OPERATION peOperation,   // type of operation 
    OUT PDAPI_ENTRY * ppAttributes,         // list of attribute names 
    OUT PDAPI_ENTRY * ppValues);            // list of attribute values2365 
 
 
//$--HrCloseImport-------------------------------------------------------------- 
//  Function to do whatever cleanup needs to be done after importing records  
//  for directory synchronization. 
// ----------------------------------------------------------------------------- 
HRESULT HrCloseImport(void);                // RETURNS: HRESULT 
 
#endif