// 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[ 8];
+
AFSNonPagedObjectInfoCB *NonPagedInfo;
//
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;
//
// File index used in directory enumerations
struct
{
+
+ AFSObjectInfoCB *ObjectInfo;
+
+ ULONG InvalidateReason;
+
+ } Invalidate;
+
+ struct
+ {
char Context[ 1];
} Other;
} AFSSnapshotHdr;
+typedef struct _AFS_BYTE_RANGE
+{
+
+ LARGE_INTEGER FileOffset;
+
+ LARGE_INTEGER Length;
+
+} AFSByteRange;
+
#endif /* _AFS_STRUCTS_H */