File Objects

File objects function as the logical interface between kernel and user-mode processes and the file data that resides on the physical disk. A file object contains both the data written to the file and the following set of kernel-maintained attributes.

Information type Purpose
File name Names the corresponding physical file.
Current byte offset Used in synchronous file I/O (described later in this section) to identify the current starting location of read and write operations.
Share mode Specifies whether a second process can open a file for read, write, or delete access while the initial process is still accessing it.
I/O mode Specifies whether the initial process opened the file for synchronous or asynchronous I/O, cached or uncached I/O, sequential or random I/O, and so on.
Pointer to device object Identifies the physical device the file data resides on.
Pointer to the volume parameter block, or VPB Identifies the volume or partition the file data resides on.
Pointer to section object pointers Identifies a root structure that describes a mapped file.
Pointer to private cache map Identifies the file data that is currently cached.


These attributes are defined as part of the FILE_OBJECT structure in Ntddk.h. Refer to the definition of this structure in the Windows Driver Kit (WDK) documentation for the data lengths and types of the values.