The operating system defines the following ECPs in the Ntifs.h header file. These system-defined ECPs attach the specified extra information to the IRP_MJ_CREATE operation on a file. Elements of the file-system stack can query the ECPs for the extra information.
Typically, a filter that processes the IRP_MJ_CREATE operation on a file and then passes the file down to filters below it must not attach and spoof any of the following system-defined ECPs to the IRP_MJ_CREATE operation on the file. Similarly, a kernel-mode driver that processes and issues IRP_MJ_CREATE operations on files must not attach and spoof any of the following system-defined ECPs to the IRP_MJ_CREATE operations on the files. The following system-defined ECPs are read-only. You should use them to retrieve information only.
One exception to restricting a filter driver from attaching any of the following system-defined ECPs is when the filter driver implements a layered file system. It does this by owning file objects and by issuing its own IRP_MJ_CREATE operations on files below its filter, in response to the IRP_MJ_CREATE operation on a file that the filter driver services on its own file objects. Such a filter driver should propagate any ECP context structure lists (ECP_LIST) from the original IRP_MJ_CREATE operation on a file to the IRP_MJ_CREATE operations that the filter driver issues below it. By propagating these ECP lists, the filter driver ensures that any filters below the filter that issues the IRP_MJ_CREATE operations are aware of the context of the original IRP_MJ_CREATE operation.
A GUID that identifies the OPLOCK_KEY_ECP_CONTEXT structure and is used to attach an oplock key to the open file request. The oplock key lets an application open multiple handles to the same stream without breaking the application's own oplock.
For more information about oplocks and oplock keys, see Oplock Semantics Overview.
A GUID that identifies the NETWORK_OPEN_ECP_CONTEXT structure and is used to attach extra information for network redirectors. This GUID also identifies the NETWORK_OPEN_ECP_CONTEXT_V0 structure for drivers that run on Windows 7 and later versions of Windows and that must interpret network ECP contexts on files that reside on Windows Vista.
A GUID that identifies the PREFETCH_OPEN_ECP_CONTEXT structure.
The prefetcher is a component of the operating system that is tightly integrated with the cache manager and the memory manager to make disk accesses more efficient and therefore improve performance. If other components interfere with the prefetcher, system performance decreases and might deadlock. Therefore, the prefetcher attaches the PREFETCH_OPEN_ECP_CONTEXT structure to a file to communicate that the prefetcher performs an open request on the file. This open request is specified by the Context member of PREFETCH_OPEN_ECP_CONTEXT. Other components, such as, file system filter drivers, can determine whether PREFETCH_OPEN_ECP_CONTEXT is attached to the file and then take appropriate action.
A GUID that identifies the NFS_OPEN_ECP_CONTEXT structure. The Network File System (NFS) server attaches the NFS_OPEN_ECP_CONTEXT structure to an open file request. The NFS server uses this GUID on any open file request that the NFS server makes to satisfy a client request. The file-system stack can then determine whether NFS_OPEN_ECP_CONTEXT is attached to the open file request. Based on the information in NFS_OPEN_ECP_CONTEXT the file-system stack can determine the client that requested that the file be opened and why.
A GUID that identifies the SRV_OPEN_ECP_CONTEXT structure. A server attaches the SRV_OPEN_ECP_CONTEXT structure to an open file request. The server uses this GUID on any open file request that the server makes to satisfy a conditional client request. The file-system stack can then determine whether SRV_OPEN_ECP_CONTEXT is attached to the open file request. Based on the information in SRV_OPEN_ECP_CONTEXT the file-system stack can determine the client that requested that the file be opened and why.
A GUID that identifies the DUAL OPLOCK_KEY_ECP_CONTEXT structure. Like the OPLOCK_KEY_ECP_CONTEXT structure, DUAL OPLOCK_KEY_ECP_CONTEXT is used to attach an oplock key to the open file request. With DUAL OPLOCK_KEY_ECP_CONTEXT, however, a parent key can also be set to provide oplock for a target file's directory.
A GUID that identifies the IO_DEVICE_HINT_ECP_CONTEXT structure. Device hints are used to assist name provider minifilter drivers in tracking a reparse target to new device.
A GUID that identifies the NETWORK_APP_INSTANCE_ECP_CONTEXT structure. A client application in a failover cluster may have a set of files opened on a node in the cluster. The file objects are tagged to an application by an instance identifier in the NETWORK_APP_INSTANCE_ECP_CONTEXT structure. On failover, a secondary node can validate a client application's access to the opened files with the previously cached application instance identifier.