typedef struct _AFS_COMM_REQUEST_BLOCK
{
- AFSFileID FileId; /* Initialize unused elements to 0 */
+ AFSFileID FileId; /* Initialize unused elements to 0 */
ULONG RequestType;
ULONG RequestFlags; /* AFS_REQUEST_FLAG_xxxx */
- ULONG NameLength; // Length of the name in bytes
+ ULONG NameLength; /* Length of the name in bytes */
- ULONG DataOffset; // This offset is from the end of the structure, including the name
+ ULONG DataOffset; /* This offset is from the end of the structure, including the name */
ULONG DataLength;
- GUID AuthGroup; // Length: sizeof(GUID) */
+ GUID AuthGroup; /* Length: sizeof(GUID) */
ULONG ResultBufferLength; /* Do not exceed this length in response */
- LONG QueueCount; // Current outstanding requests in the queue
+ LONG QueueCount; /* Current outstanding requests in the queue */
WCHAR Name[ 1];
ULONG ResultStatus; /* NTSTATUS_xxx */
- ULONG ResultBufferLength; /* Not to exceed AFSCommRequest ResultBufferLength */
+ ULONG ResultBufferLength; /* Not to exceed AFSCommRequest ResultBufferLength */
- ULONG Reserved; /* To ease Quad Alignment */
+ ULONG Authenticated; /* Tokens or No? */
char ResultData[ 1];
//
#define AFS_REDIR_INIT_FLAG_HIDE_DOT_FILES 0x00000001
-
#define AFS_REDIR_INIT_NO_PAGING_FILE 0x00000002
+#define AFS_REDIR_INIT_FLAG_DISABLE_SHORTNAMES 0x00000004
typedef struct _AFS_REDIR_INIT_INFO_CB
{
WCHAR ShortName[12];
+ ULONG NTStatus; /* Error code during enumeration */
+
/* Long Filename and Target (Symlink and MountPoint only) to follow without NULs */
} AFSDirEnumEntry;
ULONG_PTR EnumHandle;
+ LARGE_INTEGER SnapshotDataVersion; /* DV at time Name/FID list was generated */
+
+ LARGE_INTEGER CurrentDataVersion; /* DV at time this header was constructed */
+
AFSDirEnumEntry Entry[ 1]; /* Each entry is Quad aligned */
} AFSDirEnumResp;
typedef struct _AFS_VOLUME_INFORMATION
{
- LARGE_INTEGER TotalAllocationUnits; /* Partition Max Blocks */
+ LARGE_INTEGER TotalAllocationUnits; /* Volume Max Blocks (Partition or Quota) */
- LARGE_INTEGER AvailableAllocationUnits; /* Partition Blocks Avail */
+ LARGE_INTEGER AvailableAllocationUnits; /* Volume Blocks Avail (Partition or Quota) */
LARGE_INTEGER VolumeCreationTime; /* AFS Last Update - Not Creation */
ULONG VolumeLabelLength;
- WCHAR VolumeLabel[20]; /* Volume:Cell */
+ WCHAR VolumeLabel[128]; /* Volume */
+
+ ULONG CellLength;
+
+ WCHAR Cell[128]; /* Cell */
} AFSVolumeInfoCB;
+
+//
+// Volume size information CB passed used to satisfy
+// FileFsFullSizeInformation and FileFsSizeInformation
+//
+
+typedef struct _AFS_VOLUME_SIZE_INFORMATION
+{
+
+ LARGE_INTEGER TotalAllocationUnits; /* Max Blocks (Quota or Partition) */
+
+ LARGE_INTEGER AvailableAllocationUnits; /* Blocks Avail (Quota or Partition) */
+
+ ULONG SectorsPerAllocationUnit; /* = 1 */
+
+ ULONG BytesPerSector; /* = 1024 */
+
+} AFSVolumeSizeInfoCB;
+
//
// File create CB
//
typedef struct _AFS_FILE_UPDATE_RESULT_CB
{
+ LARGE_INTEGER ParentDataVersion;
+
AFSDirEnumEntry DirEnum;
} AFSFileUpdateResultCB;
//
+// File Hard Link CB
+//
+
+typedef struct _AFS_FILE_HARDLINK_CB
+{
+
+ AFSFileID SourceParentId; /* Must be directory */
+
+ AFSFileID TargetParentId; /* Must be directory */
+
+ BOOLEAN bReplaceIfExists;
+
+ /* Source Name and FileID in Common Request Block */
+
+ USHORT TargetNameLength;
+
+ WCHAR TargetName[ 1];
+
+} AFSFileHardLinkCB;
+
+typedef struct _AFS_FILE_HARDLINK_RESULT_CB
+{
+
+ LARGE_INTEGER SourceParentDataVersion;
+
+ LARGE_INTEGER TargetParentDataVersion;
+
+ AFSDirEnumEntry DirEnum;
+
+} AFSFileHardLinkResultCB;
+
+
+//
// Control structures for AFS_REQUEST_TYPE_EVAL_TARGET_BY_ID
// and AFS_REQUEST_TYPE_EVAL_TARGET_BY_NAME
//
} AFSEvalTargetCB;
+typedef struct _AFS_FILE_EVAL_RESULT_CB
+{
+
+ LARGE_INTEGER ParentDataVersion;
+
+ AFSDirEnumEntry DirEnum;
+
+} AFSFileEvalResultCB;
+
+
//
// Control structure for read and write requests through the PIOCtl interface
//