/* nt.h: central header for EF_NTSD "SD" extra field */ #ifndef _NT_H #define _NT_H #define EB_NTSD_MAX_VER_SUPPORT (0) /* maximum ver# we know how to handle */ #define EB_NTSD_C_LEN 4 /* length of central EB data */ #define EB_NTSD_L_LEN 5 /* length of minimal local EB data */ #define EB_NTSD_LSIZE 0 /* offset of (ulg) uncompressed SD data size */ #define EB_NTSD_VERSION 4 /* offset of NTSD version byte */ /* ...followed by... */ /* SHORT CType; compression type */ /* ULONG EACRC; CRC value for uncompressed security descriptor data */ /* Variable length data */ #define NTSD_BUFFERSIZE (1024) /* threshold to cause malloc() */ #define OVERRIDE_BACKUP 1 /* we have SeBackupPrivilege on remote */ #define OVERRIDE_RESTORE 2 /* we have SeRestorePrivilege on remote */ #define OVERRIDE_SACL 4 /* we have SeSystemSecurityPrivilege on remote */ typedef struct { BOOL bValid; /* are our contents valid? */ BOOL bProcessDefer; /* process deferred entry yet? */ BOOL bUsePrivileges; /* use privilege overrides? */ DWORD dwFileSystemFlags; /* describes target file system */ BOOL bRemote; /* is volume remote? */ DWORD dwRemotePrivileges; /* relevant only on remote volumes */ DWORD dwFileAttributes; char RootPath[MAX_PATH+1]; /* path to network / filesystem */ } VOLUMECAPS, *PVOLUMECAPS, *LPVOLUMECAPS; BOOL SecuritySet(char *resource, PVOLUMECAPS VolumeCaps, uch *securitydata); BOOL GetVolumeCaps(char *rootpath, char *name, PVOLUMECAPS VolumeCaps); BOOL ValidateSecurity(uch *securitydata); BOOL ProcessDefer(PDWORD dwDirectoryCount, PDWORD dwBytesProcessed, PDWORD dwDirectoryFail, PDWORD dwBytesFail); #endif /* _NT_H */