// These are the context control blocks for the open instance
//
+typedef struct _AFS_NONPAGED_CCB
+{
+
+ ERESOURCE CcbLock;
+
+} AFSNonPagedCcb;
+
+
typedef struct _AFS_CCB
{
USHORT Size;
+
USHORT Type;
ULONG Flags;
+ AFSNonPagedCcb *NPCcb;
+
AFSListEntry ListEntry;
//
ERESOURCE DirectoryNodeHdrLock;
+ ERESOURCE ObjectInfoLock;
+
} AFSNonPagedObjectInfoCB;
typedef struct _AFS_OBJECT_INFORMATION_CB
LONG ObjectReferenceCount;
+ LONG ObjectReferences[ AFS_OBJECT_REFERENCE_MAX];
+
AFSNonPagedObjectInfoCB *NonPagedInfo;
//
// Parent object information
//
- struct _AFS_OBJECT_INFORMATION_CB *ParentObjectInformation;
+ AFSFileID ParentFileId;
//
// Pointer to the current Fcb, if available
struct _AFS_DIRECTORY_CB *DirectoryNodeListTail;
- LONG DirectoryNodeCount;
+ LONG DirectoryNodeCount;
struct _AFS_DIRECTORY_CB *ShortNameTree;
- //
- // PIOCtl directory cb entry
- //
+ //
+ // PIOCtl directory cb entry
+ //
- struct _AFS_DIRECTORY_CB *PIOCtlDirectoryCB;
+ struct _AFS_DIRECTORY_CB *PIOCtlDirectoryCB;
- //
- // Open handle and reference count for this object
- //
+ //
+ // Open handle and reference count for this object
+ //
- LONG ChildOpenHandleCount;
+ LONG ChildOpenHandleCount;
- LONG ChildOpenReferenceCount;
+ LONG ChildOpenReferenceCount;
- //
- // Index for the PIOCtl and share open count
- //
+ //
+ // Index for the PIOCtl and share open count
+ //
- LONG OpenRequestIndex;
+ LONG OpenRequestIndex;
} Directory;
struct
{
- ULONG Reserved;
+ ULONG Reserved;
} File;
ERESOURCE DirectoryNodeHdrLock;
-}AFSNonPagedVolumeCB;
+ //
+ // Volume worker thread
+ //
+
+ AFSWorkQueueContext VolumeWorkerContext;
+
+} AFSNonPagedVolumeCB;
typedef struct _AFS_VOLUME_CB
{
AFSFcb *RootFcb;
//
- // Volume worker thread
- //
-
- AFSWorkQueueContext VolumeWorkerContext;
-
- //
// Volume information
//
// for tear down
//
- LONG OpenReferenceCount;
+ LONG DirOpenReferenceCount;
+
+ //
+ // Current count of reference from Name Array entries
+ //
+
+ LONG NameArrayReferenceCount;
//
// File index used in directory enumerations
} AFSSnapshotHdr;
+typedef struct _AFS_BYTE_RANGE
+{
+
+ LARGE_INTEGER FileOffset;
+
+ LARGE_INTEGER Length;
+
+} AFSByteRange;
+
#endif /* _AFS_STRUCTS_H */