#ifndef _INC_CSCAPI #define _INC_CSCAPI #ifdef __cplusplus extern "C" { #endif // flags returned in the status field for files and folders. // NB!!!! these bit definitions match exactly with those in shdcom.h #define FLAG_CSC_COPY_STATUS_DATA_LOCALLY_MODIFIED 0x0001 #define FLAG_CSC_COPY_STATUS_ATTRIB_LOCALLY_MODIFIED 0x0002 #define FLAG_CSC_COPY_STATUS_TIME_LOCALLY_MODIFIED 0x0004 #define FLAG_CSC_COPY_STATUS_STALE 0x0008 #define FLAG_CSC_COPY_STATUS_LOCALLY_DELETED 0x0010 #define FLAG_CSC_COPY_STATUS_SPARSE 0x0020 #define FLAG_CSC_COPY_STATUS_ORPHAN 0x0100 #define FLAG_CSC_COPY_STATUS_SUSPECT 0x0200 #define FLAG_CSC_COPY_STATUS_LOCALLY_CREATED 0x0400 #define FLAG_CSC_COPY_STATUS_IS_FILE 0x80000000 #define FLAG_CSC_COPY_STATUS_FILE_IN_USE 0x40000000 // Flags returned in the status field for shares #define FLAG_CSC_SHARE_STATUS_MODIFIED_OFFLINE 0x0001 #define FLAG_CSC_SHARE_STATUS_CONNECTED 0x0800 #define FLAG_CSC_SHARE_STATUS_FILES_OPEN 0x0400 #define FLAG_CSC_SHARE_STATUS_FINDS_IN_PROGRESS 0x0200 #define FLAG_CSC_SHARE_STATUS_DISCONNECTED_OP 0x8000 #define FLAG_CSC_SHARE_MERGING 0x4000 #define FLAG_CSC_SHARE_STATUS_MANUAL_REINT 0x0000 // No automatic file by file reint (Persistent) #define FLAG_CSC_SHARE_STATUS_AUTO_REINT 0x0040 // File by file reint is OK (Persistent) #define FLAG_CSC_SHARE_STATUS_VDO 0x0080 // no need to flow opens (Persistent) #define FLAG_CSC_SHARE_STATUS_NO_CACHING 0x00c0 // client should not cache this share (Persistent) #define FLAG_CSC_SHARE_STATUS_CACHING_MASK 0x00c0 // type of caching #define FLAG_CSC_ACCESS_MASK 0x003F0000 #define FLAG_CSC_USER_ACCESS_MASK 0x00030000 #define FLAG_CSC_GUEST_ACCESS_MASK 0x000C0000 #define FLAG_CSC_OTHER_ACCESS_MASK 0x00300000 #define FLAG_CSC_USER_ACCESS_SHIFT_COUNT 16 #define FLAG_CSC_GUEST_ACCESS_SHIFT_COUNT 18 #define FLAG_CSC_OTHER_ACCESS_SHIFT_COUNT 20 #define FLAG_CSC_READ_ACCESS 0x00000001 #define FLAG_CSC_WRITE_ACCESS 0x00000002 // Hint flags Definitions: #define FLAG_CSC_HINT_PIN_USER 0x01 // When this bit is set, the item is being pinned for the user // Note that there is only one pincount allotted for user. #define FLAG_CSC_HINT_PIN_INHERIT_USER 0x02 // When this flag is set on a folder, all descendents subsequently // Created in this folder get pinned for the user #define FLAG_CSC_HINT_PIN_INHERIT_SYSTEM 0x04 // When this flag is set on a folder, all descendents // Subsequently created in this folder get pinned for the // system #define FLAG_CSC_HINT_CONSERVE_BANDWIDTH 0x08 // When this flag is set on a folder, for executables and // Other related file, CSC tries to conserver bandwidth // By not flowing opens when these files are fully #define FLAG_CSC_HINT_PIN_SYSTEM 0x10 // This flag indicates it is pinned for the system #define FLAG_CSC_HINT_COMMAND_MASK 0xf0000000 #define FLAG_CSC_HINT_COMMAND_ALTER_PIN_COUNT 0x80000000 // Increments/decrements pin count // Database status bits #define FLAG_DATABASESTATUS_DIRTY 0x00000001 #define FLAG_DATABASESTATUS_ENCRYPTION_MASK 0x00000006 #define FLAG_DATABASESTATUS_UNENCRYPTED 0x00000000 // new fileinodes will NOT be encrypted #define FLAG_DATABASESTATUS_PARTIALLY_UNENCRYPTED 0x00000004 #define FLAG_DATABASESTATUS_ENCRYPTED 0x00000002 // new fileinodes will be encrypted #define FLAG_DATABASESTATUS_PARTIALLY_ENCRYPTED 0x00000006 // definitions for callback reason #define CSCPROC_REASON_BEGIN 1 #define CSCPROC_REASON_MORE_DATA 2 #define CSCPROC_REASON_END 3 // Definitions for callback return values: #define CSCPROC_RETURN_CONTINUE 1 #define CSCPROC_RETURN_SKIP 2 #define CSCPROC_RETURN_ABORT 3 #define CSCPROC_RETURN_FORCE_INWARD 4 // applies only while merging #define CSCPROC_RETURN_FORCE_OUTWARD 5 // applies only while merging #define CSCPROC_RETURN_RETRY 6 typedef DWORD (WINAPI *LPCSCPROCW)( LPCWSTR lpszName, DWORD dwStatus, DWORD dwHintFlags, DWORD dwPinCount, WIN32_FIND_DATAW *lpFind32, DWORD dwReason, DWORD dwParam1, DWORD dwParam2, DWORD_PTR dwContext ); typedef DWORD (WINAPI *LPCSCPROCA)( LPCSTR lpszName, DWORD dwStatus, DWORD dwHintFlags, DWORD dwPinCount, WIN32_FIND_DATAA *lpFind32, DWORD dwReason, DWORD dwParam1, DWORD dwParam2, DWORD_PTR dwContext ); BOOL WINAPI CSCIsCSCEnabled( VOID ); BOOL WINAPI CSCFindClose( IN HANDLE hFind ); BOOL WINAPI CSCPinFileA( IN LPCSTR lpszFileName, IN DWORD dwHintFlags, OUT LPDWORD lpdwStatus, OUT LPDWORD lpdwPinCount, OUT LPDWORD lpdwHintFlags ); BOOL WINAPI CSCUnpinFileA( IN LPCSTR lpszFileName, IN DWORD dwHintFlags, OUT LPDWORD lpdwStatus, OUT LPDWORD lpdwPinCount, OUT LPDWORD lpdwHintFlags ); BOOL WINAPI CSCQueryFileStatusA( IN LPCSTR lpszFileName, OUT LPDWORD lpdwStatus, OUT LPDWORD lpdwPinCount, OUT LPDWORD lpdwHintFlags ); BOOL WINAPI CSCQueryFileStatusExA( IN LPCSTR lpszFileName, OUT LPDWORD lpdwStatus, OUT LPDWORD lpdwPinCount, OUT LPDWORD lpdwHintFlags, OUT LPDWORD lpdwUserPerms, OUT LPDWORD lpdwOtherPerms ); BOOL WINAPI CSCQueryShareStatusA( IN LPCSTR lpszFileName, OUT LPDWORD lpdwStatus, OUT LPDWORD lpdwPinCount, OUT LPDWORD lpdwHintFlags, OUT LPDWORD lpdwUserPerms, OUT LPDWORD lpdwOtherPerms ); HANDLE WINAPI CSCFindFirstFileA( IN LPCSTR lpszFileName, // if NULL, returns the shares cached OUT WIN32_FIND_DATA *lpFind32, OUT LPDWORD lpdwStatus, // returns FLAG_CSC_SHARE_STATUS_XXX for shares // FLAG_CSC_STATUS_XXX for the rest OUT LPDWORD lpdwPinCount, OUT LPDWORD lpdwHintFlags, OUT FILETIME *lpOrgFileTime ); BOOL WINAPI CSCFindNextFileA( IN HANDLE hFind, OUT WIN32_FIND_DATA *lpFind32, OUT LPDWORD lpdwStatus, OUT LPDWORD lpdwPinCount, OUT LPDWORD lpdwHintFlags, OUT FILETIME *lpOrgFileTime ); BOOL WINAPI CSCDeleteA( IN LPCSTR lpszFileName ); BOOL WINAPI CSCFillSparseFilesA( IN LPCSTR lpszShareName, IN BOOL fFullSync, IN LPCSCPROCA lpprocFillProgress, IN DWORD_PTR dwContext ); BOOL WINAPI CSCMergeShareA( IN LPCSTR lpszShareName, IN LPCSCPROCA lpfnMergeProgress, IN DWORD_PTR dwContext ); BOOL WINAPI CSCCopyReplicaA( IN LPCSTR lpszFullPath, OUT LPSTR *lplpszLocalName ); BOOL WINAPI CSCEnumForStatsA( IN LPCSTR lpszShareName, IN LPCSCPROCA lpfnEnumProgress, IN DWORD_PTR dwContext ); BOOL WINAPI CSCEnumForStatsExA( IN LPCSTR lpszShareName, IN LPCSCPROCA lpfnEnumProgress, IN DWORD_PTR dwContext ); BOOL WINAPI CSCPinFileW( LPCWSTR lpszFileName, DWORD dwHintFlags, LPDWORD lpdwStatus, LPDWORD lpdwPinCount, LPDWORD lpdwHintFlags ); BOOL WINAPI CSCUnpinFileW( LPCWSTR lpszFileName, DWORD dwHintFlags, LPDWORD lpdwStatus, LPDWORD lpdwPinCount, LPDWORD lpdwHintFlags ); BOOL WINAPI CSCQueryFileStatusW( LPCWSTR lpszFileName, LPDWORD lpdwStatus, LPDWORD lpdwPinCount, LPDWORD lpdwHintFlags ); BOOL WINAPI CSCQueryFileStatusExW( LPCWSTR lpszFileName, LPDWORD lpdwStatus, LPDWORD lpdwPinCount, LPDWORD lpdwHintFlags, LPDWORD lpdwUserPerms, LPDWORD lpdwOtherPerms ); BOOL WINAPI CSCQueryShareStatusW( LPCWSTR lpszFileName, LPDWORD lpdwStatus, LPDWORD lpdwPinCount, LPDWORD lpdwHintFlags, LPDWORD lpdwUserPerms, LPDWORD lpdwOtherPerms ); HANDLE WINAPI CSCFindFirstFileW( LPCWSTR lpszFileName, WIN32_FIND_DATAW *lpFind32, LPDWORD lpdwStatus, LPDWORD lpdwPinCount, LPDWORD lpdwHintFlags, FILETIME *lpOrgFileTime ); HANDLE WINAPI CSCFindFirstFileForSidW( LPCWSTR lpszFileName, PSID pSid, WIN32_FIND_DATAW *lpFind32, LPDWORD lpdwStatus, LPDWORD lpdwPinCount, LPDWORD lpdwHintFlags, FILETIME *lpOrgFileTime ); BOOL WINAPI CSCFindNextFileW( HANDLE hFind, WIN32_FIND_DATAW *lpFind32, LPDWORD lpdwStatus, LPDWORD lpdwPinCount, LPDWORD lpdwHintFlags, FILETIME *lpOrgFileTime ); BOOL WINAPI CSCDeleteW( IN LPCWSTR lpszFileName ); BOOL WINAPI CSCFillSparseFilesW( IN LPCWSTR lpszShareName, IN BOOL fFullSync, IN LPCSCPROCW lpprocFillProgress, IN DWORD_PTR dwContext ); BOOL WINAPI CSCMergeShareW( IN LPCWSTR lpszShareName, IN LPCSCPROCW lpfnMergeProgress, IN DWORD_PTR dwContext ); BOOL WINAPI CSCCopyReplicaW( IN LPCWSTR lpszFullPath, OUT LPWSTR *lplpszLocalName ); BOOL WINAPI CSCEnumForStatsW( IN LPCWSTR lpszShareName, IN LPCSCPROCW lpfnEnumProgress, IN DWORD_PTR dwContext ); BOOL WINAPI CSCEnumForStatsExW( IN LPCWSTR lpszShareName, IN LPCSCPROCW lpfnEnumProgress, IN DWORD_PTR dwContext ); BOOL WINAPI CSCFreeSpace( DWORD nFileSizeHigh, DWORD nFileSizeLow ); BOOL WINAPI CSCIsServerOfflineA( IN LPCSTR lpszServerName, OUT BOOL *lpfOffline ); BOOL WINAPI CSCIsServerOfflineW( IN LPCWSTR lpszServerName, OUT BOOL *lpfOffline ); BOOL WINAPI CSCGetSpaceUsageA( OUT LPSTR lptzLocation, IN DWORD dwSize, OUT LPDWORD lpdwMaxSpaceHigh, OUT LPDWORD lpdwMaxSpaceLow, OUT LPDWORD lpdwCurrentSpaceHigh, OUT LPDWORD lpdwCurrentSpaceLow, OUT LPDWORD lpcntTotalFiles, OUT LPDWORD lpcntTotalDirs ); BOOL WINAPI CSCGetSpaceUsageW( OUT LPWSTR lptzLocation, IN DWORD dwSize, OUT LPDWORD lpdwMaxSpaceHigh, OUT LPDWORD lpdwMaxSpaceLow, OUT LPDWORD lpdwCurrentSpaceHigh, OUT LPDWORD lpdwCurrentSpaceLow, OUT LPDWORD lpcntTotalFiles, OUT LPDWORD lpcntTotalDirs ); BOOL WINAPI CSCSetMaxSpace( DWORD nFileSizeHigh, DWORD nFileSizeLow ); BOOL WINAPI CSCTransitionServerOnlineW( IN LPCWSTR lpszServerName ); BOOL WINAPI CSCTransitionServerOnlineA( IN LPCSTR lpszServerName ); BOOL WINAPI CSCCheckShareOnlineW( IN LPCWSTR lpszShareName ); BOOL WINAPI CSCCheckShareOnlineExW( IN LPCWSTR lpszShareName, IN DWORD *lpdwSpeed ); BOOL WINAPI CSCCheckShareOnlineA( IN LPCSTR lpszShareName ); BOOL WINAPI CSCDoLocalRenameW( IN LPCWSTR lpszSource, IN LPCWSTR lpszDestination, IN BOOL fReplaceFile ); BOOL WINAPI CSCDoLocalRenameA( IN LPCSTR lpszSource, IN LPCSTR lpszDestination, IN BOOL fReplaceFile ); BOOL WINAPI CSCDoLocalRenameExA( IN LPCSTR lpszSource, IN LPCSTR lpszDestination, IN WIN32_FIND_DATAA *lpFin32, IN BOOL fMarkAsLocal, IN BOOL fReplaceFileIfExists ); BOOL WINAPI CSCDoLocalRenameExW( IN LPCWSTR lpszSource, IN LPCWSTR lpszDestination, IN WIN32_FIND_DATAW *lpFin32, IN BOOL fMarkAsLocal, IN BOOL fReplaceFileIfExists ); BOOL WINAPI CSCDoEnableDisable( BOOL fEnable ); BOOL WINAPI CSCBeginSynchronizationW( IN LPCWSTR lpszShareName, LPDWORD lpdwSpeed, LPDWORD lpdwContext ); BOOL WINAPI CSCEndSynchronizationW( IN LPCWSTR lpszShareName, DWORD dwContext ); BOOL WINAPI CSCEncryptDecryptDatabase( IN BOOL fEncrypt, IN LPCSCPROCW lpfnEnumProgress, IN DWORD_PTR dwContext ); BOOL WINAPI CSCQueryDatabaseStatus( ULONG *pulStatus, ULONG *pulErrors ); BOOL WINAPI CSCPurgeUnpinnedFiles( ULONG Timeout, ULONG *pulnFiles, ULONG *pulnYoungFiles ); BOOL WINAPI CSCShareIdToShareName( ULONG ShareId, PBYTE Buffer, PDWORD pdwBufSize ); #ifdef UNICODE #define CSCPinFile CSCPinFileW #define CSCUnpinFile CSCUnpinFileW #define CSCQueryFileStatus CSCQueryFileStatusW #define CSCQueryFileStatusEx CSCQueryFileStatusExW #define CSCQueryShareStatus CSCQueryShareStatusW #define CSCFindFirstFile CSCFindFirstFileW #define CSCFindFirstFileForSid CSCFindFirstFileForSidW #define CSCFindNextFile CSCFindNextFileW #define CSCDelete CSCDeleteW #define CSCFillSparseFiles CSCFillSparseFilesW #define CSCMergeShare CSCMergeShareW #define CSCCopyReplica CSCCopyReplicaW #define CSCEnumForStats CSCEnumForStatsW #define CSCIsServerOffline CSCIsServerOfflineW #define LPCSCPROC LPCSCPROCW #define CSCGetSpaceUsage CSCGetSpaceUsageW #define CSCTransitionServerOnline CSCTransitionServerOnlineW #define CSCCheckShareOnline CSCCheckShareOnlineW #define CSCCheckShareOnlineEx CSCCheckShareOnlineExW #define CSCDoLocalRename CSCDoLocalRenameW #define CSCDoLocalRenameEx CSCDoLocalRenameExW #define CSCEnumForStatsEx CSCEnumForStatsExW #define CSCBeginSynchronization CSCBeginSynchronizationW #define CSCEndSynchronization CSCEndSynchronizationW #else #define CSCPinFile CSCPinFileA #define CSCUnpinFile CSCUnpinFileA #define CSCQueryFileStatus CSCQueryFileStatusA #define CSCQueryFileStatusEx CSCQueryFileStatusExA #define CSCQueryShareStatus CSCQueryShareStatusA #define CSCFindFirstFile CSCFindFirstFileA #define CSCFindFirstFileForSid CSCFindFirstFileForSidA #define CSCFindNextFile CSCFindNextFileA #define CSCDelete CSCDeleteA #define CSCFillSparseFiles CSCFillSparseFilesA #define CSCMergeShare CSCMergeShareA #define CSCCopyReplica CSCCopyReplicaA #define CSCEnumForStats CSCEnumForStatsA #define CSCIsServerOffline CSCIsServerOfflineA #define LPCSCPROC LPCSCPROCA #define CSCGetSpaceUsage CSCGetSpaceUsageA #define CSCTransitionServerOnline CSCTransitionServerOnlineA #define CSCCheckShareOnline CSCCheckShareOnlineA #define CSCCheckShareOnlineEx CSCCheckShareOnlineExA #define CSCDoLocalRename CSCDoLocalRenameA #define CSCEnumForStatsEx CSCEnumForStatsExA #define CSCDoLocalRenameEx CSCDoLocalRenameExA #endif #ifdef __cplusplus } /* ... extern "C" */ #endif #endif // _INC_CSCAPI