/*++ Copyright (c) 1998 Microsoft Corporation Module Name: imirror.h Abstract: This is the include file for the IntelliMirror conversion DLL Author: Sean Selitrennikoff - 4/5/98 Revision History: --*/ // // These are the action codes for the file error report callback // #define COPY_ERROR_ACTION_CREATE_FILE 1 #define COPY_ERROR_ACTION_OPEN_DIR 2 #define COPY_ERROR_ACTION_CREATE_DIR 3 #define COPY_ERROR_ACTION_SETATTR 4 #define COPY_ERROR_ACTION_GETATTR 5 #define COPY_ERROR_ACTION_GETACL 6 #define COPY_ERROR_ACTION_SETACL 7 #define COPY_ERROR_ACTION_DELETE 8 #define COPY_ERROR_ACTION_ENUMERATE 9 #define COPY_ERROR_ACTION_MALLOC 10 #define COPY_ERROR_ACTION_SETTIME 11 #define COPY_ERROR_ACTION_GETSFN 12 #define COPY_ERROR_ACTION_SETSFN 13 // // Basic To Do items // typedef enum _IMIRROR_TODO { IMirrorNone, IMirrorInitialize, VerifySystemIsNt5, CheckPartitions, CopyPartitions, CopyFiles, CopyRegistry, PatchDSEntries, RebootSystem } IMIRROR_TODO, *PIMIRROR_TODO; // // Client call back function definitions // typedef NTSTATUS (*IMIRROR_ERROR_CALLBACK)( IN PVOID Context, IN NTSTATUS Status, IN IMIRROR_TODO IMirrorFunctionId ); typedef NTSTATUS (*IMIRROR_NOWDOING_CALLBACK)( IN PVOID Context, IN IMIRROR_TODO Function, IN PWSTR String ); typedef NTSTATUS (*IMIRROR_GETMIRRORDIR_CALLBACK)( IN PVOID Context, OUT PWSTR Server, IN OUT PULONG Length ); typedef NTSTATUS (*IMIRROR_GETSETUP_CALLBACK)( IN PVOID Context, IN PWSTR Server, OUT PWSTR SetupPath, IN OUT PULONG Length ); typedef NTSTATUS (*IMIRROR_SETSYSTEM_CALLBACK)( IN PVOID Context, IN PWSTR SystemPath, IN ULONG Length ); typedef NTSTATUS (*IMIRROR_FILECREATE_CALLBACK)( IN PVOID Context, IN PWSTR FileName, IN ULONG FileAction, IN ULONG Status ); typedef NTSTATUS (*IMIRROR_REGSAVE_CALLBACK)( IN PVOID Context, IN PWSTR Name, IN ULONG Status ); typedef NTSTATUS (*IMIRROR_REINIT_CALLBACK)( IN PVOID Context ); typedef NTSTATUS (*IMIRROR_ADDTODO_CALLBACK)( IN PVOID Context, IN IMIRROR_TODO Function, IN PWSTR String, IN ULONG Length ); typedef NTSTATUS (*IMIRROR_REBOOT_CALLBACK)( IN PVOID Context ); typedef NTSTATUS (*IMIRROR_REMOVETODO_CALLBACK)( IN PVOID Context, IN IMIRROR_TODO Function, IN PWSTR String, IN ULONG Length ); typedef struct _IMIRROR_CALLBACK { PVOID Context; IMIRROR_ERROR_CALLBACK ErrorFn; IMIRROR_NOWDOING_CALLBACK NowDoingFn; IMIRROR_GETSETUP_CALLBACK GetSetupFn; IMIRROR_FILECREATE_CALLBACK FileCreateFn; IMIRROR_REGSAVE_CALLBACK RegSaveErrorFn; IMIRROR_REINIT_CALLBACK ReinitFn; IMIRROR_GETMIRRORDIR_CALLBACK GetMirrorDirFn; IMIRROR_SETSYSTEM_CALLBACK SetSystemDirFn; IMIRROR_ADDTODO_CALLBACK AddToDoFn; IMIRROR_REMOVETODO_CALLBACK RemoveToDoFn; IMIRROR_REBOOT_CALLBACK RebootFn; } IMIRROR_CALLBACK, *PIMIRROR_CALLBACK; extern IMIRROR_CALLBACK Callbacks; // // Dll entry point // DWORD IMirrorInitDll( IN HINSTANCE hInst, IN DWORD Reason, IN PVOID Context ); VOID IMirrorInitCallback( IN PIMIRROR_CALLBACK Callbacks ); NTSTATUS ProcessToDoItems( VOID ); NTSTATUS InitToDo( VOID ); VOID ClearAllToDoItems( IN BOOLEAN MemoryOnly ); NTSTATUS SaveAllToDoItems( VOID );