1247 lines
40 KiB
C
1247 lines
40 KiB
C
//+---------------------------------------------------------------------------
|
|
//
|
|
// File: iofs.h
|
|
//
|
|
// Contents: OFS interfaces
|
|
//
|
|
// History: 27-Oct-93 VicH Created.
|
|
//
|
|
// Copyright (C) Microsoft Corporation 1991
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#ifndef INCL_IOFS
|
|
#define INCL_IOFS
|
|
|
|
#include <oleext.h>
|
|
#include <query.h>
|
|
#include <oledb.h>
|
|
#include <propapi.h>
|
|
|
|
#define CGUID_StdOfsFolder \
|
|
{ 0x49691d58, \
|
|
0x7e17, 0x101a, \
|
|
{ 0xa9, 0x1c, 0x08, 0x00, 0x2b, 0x2e, 0xcd, 0xa9 } }
|
|
|
|
#define CGUID_StdOfsFile \
|
|
{ 0x49691dbc, \
|
|
0x7e17, 0x101a, \
|
|
{ 0xa9, 0x1c, 0x08, 0x00, 0x2b, 0x2e, 0xcd, 0xa9 } }
|
|
|
|
#define CGUID_StdDownlevelFolder \
|
|
{ 0x49691e20, \
|
|
0x7e17, 0x101a, \
|
|
{ 0xa9, 0x1c, 0x08, 0x00, 0x2b, 0x2e, 0xcd, 0xa9 } }
|
|
|
|
#define CGUID_StdDownlevelFile \
|
|
{ 0x49691e84, \
|
|
0x7e17, 0x101a, \
|
|
{ 0xa9, 0x1c, 0x08, 0x00, 0x2b, 0x2e, 0xcd, 0xa9 } }
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: DELETION_ENTRY
|
|
//
|
|
// Synopsis: information stored in index about each deleted object
|
|
// and returned from enumerations
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _DELETION_ENTRY // de
|
|
{
|
|
USN usn; // usn of deletion operation
|
|
LONGLONG llDeleteTime; // time of deletion
|
|
ULONG workid; // id of object deleted
|
|
ULONG workidParent; // id of parent of object deleted
|
|
unsigned cwcPathOld:12; // length of old path
|
|
unsigned cwcPathNew:12; // length of new path if rename
|
|
unsigned cwcShortName:4; // length of old short name
|
|
unsigned Flags:4; // flags (DELEF_*)
|
|
OBJECTID oid; // object id
|
|
WCHAR awcPath[1]; // paths :
|
|
// oldpath [+ newpath] [+ shortname]
|
|
} DELETION_ENTRY;
|
|
|
|
#define CB_DELETION_ENTRY FIELD_OFFSET(DELETION_ENTRY, awcPath)
|
|
|
|
#define DELEF_OBJECTID_EXISTS 0x00000001
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: DELETION_ENUM_ENTRY
|
|
//
|
|
// Synopsis: entry returned by a deletion enumerator
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _DELETION_ENUM_ENTRY // dee
|
|
{
|
|
ULONG offset; // offset to next entry
|
|
ULONG pad; // quad align next field
|
|
DELETION_ENTRY de; // entry
|
|
} DELETION_ENUM_ENTRY;
|
|
|
|
#define CB_DELETION_ENUM_ENTRY FIELD_OFFSET(DELETION_ENUM_ENTRY, de.awcPath)
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: DELETION_ENUM_BUFFER
|
|
//
|
|
// Synopsis: actual deletion enumeration buffer
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _DELETION_ENUM_BUFFER // denb
|
|
{
|
|
USN usnMin; // minimum usn in log
|
|
DELETION_ENUM_ENTRY adee[1]; // array of deletion entries
|
|
} DELETION_ENUM_BUFFER;
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: DELETION_ENUM_ARGS
|
|
//
|
|
// Synopsis: arguments to GetDeletionsAfterUsn fsctl
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _DELETION_ENUM_ARGS // dea
|
|
{
|
|
USN usn;
|
|
ULONG grbit;
|
|
ULONG pad; // pad to quadword boundary
|
|
} DELETION_ENUM_ARGS;
|
|
|
|
#define DENF_INCLUDE_RENAMES 0x00000001
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: SERVICE_ARGS
|
|
//
|
|
// Synopsis: arguments to RegisterDeletionLogService fsctl
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _SERVICE_ARGS // sa
|
|
{
|
|
USN usnMinRetain; // minimum usn to retain
|
|
OBJECTID oidService; // guid of service
|
|
BOOLEAN fCancel; // cancel service
|
|
BYTE pad[3]; // pad to quadword boundary
|
|
} SERVICE_ARGS;
|
|
|
|
#define CB_SERVICE_ARGS FIELD_OFFSET(SERVICE_ARGS, pad)
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: SERVICE_ENUM_ENTRY
|
|
//
|
|
// Synopsis: entry within a service enum
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _SERVICE_ENUM_ENTRY // see
|
|
{
|
|
USN usnMinRetain; // minimum usn to retain
|
|
OBJECTID oid; // object id of service
|
|
ULONG pad;
|
|
} SERVICE_ENUM_ENTRY;
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: SERVICE_ENUM
|
|
//
|
|
// Synopsis: result of EnumerateDeletionLogServices
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _SERVICE_ENUM // se
|
|
{
|
|
ULONG csee; // # of entries
|
|
ULONG pad; // quad align next field
|
|
SERVICE_ENUM_ENTRY asee[1]; // array of entries
|
|
} SERVICE_ENUM;
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: OLENAMES
|
|
//
|
|
// Synopsis: input to RtlNameToOleId & result of RtlOleIdToName
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _OLENAMEENTRY // one
|
|
{
|
|
ULONG cbName;
|
|
WCHAR awcName[1]; // variable size array
|
|
} OLENAMEENTRY;
|
|
|
|
#define CB_OLENAMEENTRY FIELD_OFFSET(OLENAMEENTRY, awcName)
|
|
|
|
typedef struct _OLENAMES // on
|
|
{
|
|
ULONG cNames;
|
|
OLENAMEENTRY aone[1]; // variable sized array
|
|
} OLENAMES;
|
|
|
|
#define CB_OLENAMES FIELD_OFFSET(OLENAMES, aone)
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: FINDOBJECT
|
|
//
|
|
// Synopsis: used internally by RtlSearchVolume
|
|
//---------------------------------------------------------------------------
|
|
|
|
// FINDOBJECT.oid:
|
|
// ObjectId to match
|
|
//
|
|
// FINDOBJECT.cLineage:
|
|
// In. Max of lineage matches to return.
|
|
// 0 -> lookup objectid only
|
|
// 1 -> return match by ObjectId + 1 lineage id match max.
|
|
// 2 -> return match by ObjectId + 2 lineage id matches max.
|
|
//
|
|
// FINDOBJECT.ulFlags:
|
|
// FO_CONTINUE_ENUM clear -> query for exact id and then lineage
|
|
// as controlled by cLineage
|
|
// FO_CONTINUE_ENUM set -> query for lineage only starting at oid.
|
|
|
|
typedef struct _FINDOBJECT
|
|
{
|
|
OBJECTID oid;
|
|
USHORT cLineage;
|
|
ULONG ulFlags;
|
|
} FINDOBJECT;
|
|
|
|
#define MAX_LINEAGE_MATCHES 10
|
|
#define FO_CONTINUE_ENUM 0x00000001
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: FINDOBJECTOUT
|
|
//
|
|
// Synopsis: result of RtlSearchVolume
|
|
//---------------------------------------------------------------------------
|
|
|
|
// FINDOBJECTOUT.cwcExact;
|
|
// Non-zero -> first path returned is exact match count of characters
|
|
// in exact match, not including nuls.
|
|
//
|
|
// FINDOBJECTOUT.cMatches;
|
|
// 1 -> one lineage match returned, 2->two etc.
|
|
//
|
|
// FINDOBJECTOUT.ulNextFirstUniquifier;
|
|
// value to pass in oid.Uniquifier on next call.
|
|
//
|
|
// FINDOBJECTOUT.wszPaths[MAX_PATH + 1];
|
|
// contains (fExact? 1 : 0) + cMatches paths.
|
|
// NOTE!! From wszPaths[0] ... end of system buffer contains paths
|
|
// of exact match and candidates.
|
|
|
|
typedef struct _FINDOBJECTOUT
|
|
{
|
|
USHORT cwcExact;
|
|
USHORT cMatches;
|
|
ULONG ulNextFirstUniquifier;
|
|
WCHAR wszPaths[MAX_PATH + 1];
|
|
} FINDOBJECTOUT;
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: TUNNELMODE, TUNNELMODEOUT
|
|
//
|
|
// Synopsis: used internally by RtlSetTunnelMode
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _TUNNELMODE
|
|
{
|
|
ULONG ulFlags; // Bits to set within mask
|
|
ULONG ulMask; // Mask of bits to change
|
|
} TUNNELMODE;
|
|
|
|
typedef struct _TUNNELMODEOUT
|
|
{
|
|
ULONG ulFlags;
|
|
} TUNNELMODEOUT;
|
|
|
|
#define TM_ENABLE_TUNNEL 0x00000001
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Summary Catalog Data Structures:
|
|
//---------------------------------------------------------------------------
|
|
|
|
#ifndef CATALOGSTG_ROWID_INVALID
|
|
typedef ULONG CATALOGSTG_ROWID;
|
|
|
|
#define CATALOGSTG_ROWID_INVALID ((CATALOGSTG_ROWID) 0xffffffff)
|
|
#endif // CATALOGSTG_ROWID_INVALID
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: CATALOG_QUERY_ROWINFO
|
|
//
|
|
// Synopsis: used for Query of catalog rows
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _CATALOG_QUERY_ROWINFO // cqr
|
|
{
|
|
ULONG NextEntryOffset; // Offset to next CATALOG_ROW_DATA
|
|
CATALOGSTG_ROWID RowId; // RowId
|
|
PROPVARIANT aProp[1]; // PROPVARIANT array for requested columns
|
|
//BYTE abVarBuf[]; // variable PROPVARIANT data
|
|
} CATALOG_QUERY_ROWINFO;
|
|
|
|
#define CB_CATALOG_QUERY_ROWINFO FIELD_OFFSET(CATALOG_QUERY_ROWINFO, aProp)
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: FSCTL_CATALOG_QUERY_INFO, private to OFS
|
|
//
|
|
// Synopsis: used for Query of catalog columns
|
|
//+--------------------------------------------------------------------------
|
|
|
|
typedef struct _FSCTL_CATALOG_QUERY_INFO // cqi
|
|
{
|
|
VOID *pvBase; // base offset of user space memory block
|
|
ULONG Key; // start column/row caller to 0 before first call
|
|
ULONG Count; // max (IN) & returned (OUT) column/row count
|
|
union {
|
|
ULONG cRowId; // IN: serialized RowId count
|
|
BOOLEAN fMoreData; // OUT: TRUE --> more columns/rows to fetch
|
|
};
|
|
} FSCTL_CATALOG_QUERY_INFO;
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: FSCTL_CATALOG_UPDATE_INFO, private to OFS
|
|
//
|
|
// Synopsis: used for Update of catalog rows
|
|
//+--------------------------------------------------------------------------
|
|
|
|
typedef struct _FSCTL_CATALOG_UPDATE_INFO // cui
|
|
{
|
|
CATALOGSTG_ROWID RowId; // IN+OUT: RowId
|
|
union {
|
|
ULONG Operation; // IN: requested operation
|
|
NTSTATUS Status; // OUT: operation status
|
|
};
|
|
} FSCTL_CATALOG_UPDATE_INFO;
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// BUGBUG: Obsolete Summary Catalog data structures
|
|
//---------------------------------------------------------------------------
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: CATALOG_ROW_DATA
|
|
//
|
|
// Synopsis: used for Delete, Set, Get of catalog rows
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _CATALOG_ROW_DATA // crd
|
|
{
|
|
ULONG NextEntryOffset;
|
|
CATALOGSTG_ROWID RowId;
|
|
BYTE RowData[1];
|
|
} CATALOG_ROW_DATA;
|
|
|
|
#define CB_CATALOG_ROW_DATA FIELD_OFFSET(CATALOG_ROW_DATA, RowData)
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: CATALOG_ROW_INFO
|
|
//
|
|
// Synopsis: used for Delete, Set, Get of catalog rows
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _CATALOG_ROW_INFO // cri
|
|
{
|
|
CATALOGSTG_ROWID RowId;
|
|
NTSTATUS Status;
|
|
ULONG dwReserved; // Must be zero, strictly enforced.
|
|
PROPVARIANT *aVariants;
|
|
} CATALOG_ROW_INFO;
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: CATALOG_GET_ROW_PARAMS, CATALOG_GET_ROW_RESULTS
|
|
//
|
|
// Synopsis: used by RtlGetCatalogRows
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _CATALOG_GET_ROW_PARAMS // cgrp
|
|
{
|
|
ULONG cColumns; // No. of columns
|
|
FULLPROPSPEC *aColumnSpec; // the column specifiers
|
|
ULONG cRowsRequested; // No. of rows requested.
|
|
CATALOG_ROW_INFO *aRowInfo; // Row. Ids of the rows.
|
|
ULONG cbVarData; // buffer size for variable length data
|
|
VOID *pvVarData; // buffer for variable length data
|
|
} CATALOG_GET_ROW_PARAMS;
|
|
|
|
|
|
typedef struct _CATALOG_GET_ROW_RESULTS // cgrr
|
|
{
|
|
ULONG cRowsReturned; // No. of rows returned
|
|
ULONG cbVarDataUsed; // Length of the var. data buffer used.
|
|
} CATALOG_GET_ROW_RESULTS;
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: CATALOG_ENUMERATE_ROW_PARAMS, CATALOG_ENUMERATE_ROW_RESULTS
|
|
//
|
|
// Synopsis: used by RtlEnumerateCatalogRows
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _CATALOG_ENUMERATE_ROW_PARAMS // cerp
|
|
{
|
|
CATALOGSTG_ROWID LastFetchedRowId; // last RowId retrieved, 0 = from start
|
|
ULONG cColumns; // No. of columns
|
|
FULLPROPSPEC *aColumnSpec; // the column ids.
|
|
ULONG cRowsRequested; // No. of rows requested.
|
|
CATALOG_ROW_INFO *aRowInfo; // Row. Ids of the rows.
|
|
ULONG cbVarData; // buffer size for variable length data
|
|
VOID *pvVarData; // buffer for variable length data
|
|
} CATALOG_ENUMERATE_ROW_PARAMS;
|
|
|
|
|
|
typedef struct _CATALOG_ENUMERATE_ROW_RESULTS // cerr
|
|
{
|
|
ULONG cRowsReturned; // No. of rows returned
|
|
ULONG cbVarDataUsed; // Length of the var. data buffer used.
|
|
} CATALOG_ENUMERATE_ROW_RESULTS;
|
|
//+--------------------------------------------------------------------------
|
|
// BUGBUG: End Obsolete Summary Catalog data structures
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: VIEW_COLUMN
|
|
//
|
|
// Synopsis: descriptor of a view column. If cwcName is 0, then the propid
|
|
// identifies the column; otherwise the property name follows
|
|
// this header
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _VIEW_COLUMN
|
|
{
|
|
GUID PropertySet;
|
|
PROPID propid;
|
|
ULONG cwcName;
|
|
ULONG dwOrder;
|
|
} VIEW_COLUMN;
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: VIEW_INDEX_ENTRY
|
|
//
|
|
// Synopsis: information stored about a particular view
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _VIEW_INDEX_ENTRY
|
|
{
|
|
ULONG ibEntry; // offset to next entry or 0
|
|
ULONG id; // identifier for view
|
|
ULONG ccol; // # of columns for view
|
|
ULONG ckey; // # of key columns in view
|
|
ULONG flags; // flags associated with view
|
|
VIEW_COLUMN avc[1]; // array of view columns
|
|
} VIEW_INDEX_ENTRY;
|
|
|
|
#define VF_RESTRICTION_EXISTS 0x00000001 // a restriction exists
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Enumeration: SPACE_PARAMETER_OPS
|
|
//
|
|
// Synopsis: operations that can be performed using FSCTL_CHANGE_DISKSPACE
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef enum _SPACE_PARAMETER_OPS // spo
|
|
{
|
|
spDecommit, // decommit memory from file
|
|
spSetFileSize, // set file size for file
|
|
} SPACE_PARAMETER_OPS;
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: SPACE_PARAMETERS
|
|
//
|
|
// Synopsis: parameters controlling allocation of disk space for a file
|
|
// using FSCTL_CHANGE_DISKSPACE
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _SPACE_PARAMETERS // sp
|
|
{
|
|
LARGE_INTEGER lioff; // offset into file
|
|
ULONG cb; // size of range to allocate/decommit
|
|
SPACE_PARAMETER_OPS op; // operation to perform
|
|
} SPACE_PARAMETERS;
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: COMMIT_PARAMETERS
|
|
//
|
|
// Synopsis: parameters controlling commit of a structured storage, embedding
|
|
// or stream using FSCTL_XOLE_COMMIT
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _COMMIT_PARAMETERS // comp
|
|
{
|
|
BOOLEAN AbortTransaction;
|
|
ULONG CommitFlags;
|
|
} COMMIT_PARAMETERS;
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: LONG_OPERATION_STATUS
|
|
//
|
|
// Synopsis: return status for certain long operations such as
|
|
// creating a view, setting unread maintanence, etc.
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _LONG_OPERATION_STATUS // los
|
|
{
|
|
NTSTATUS status; // status code for operation
|
|
BOOLEAN fPending; // is operation still pending
|
|
ULONG complete; // percentage complete
|
|
ULONG id; // id for view created
|
|
} LONG_OPERATION_STATUS;
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: OFS_DEBUG_INFO
|
|
//
|
|
// Synopsis: set and fetch OFS debug info scalars.
|
|
//---------------------------------------------------------------------------
|
|
|
|
#define ODI_DEBUG_LEVEL 0 // LONGLONG DebugLevel
|
|
#define ODI_NO_CORRUPT_ASSERT 1 // BOOLEAN fNoCorruptAssert
|
|
#define ODI_SINGLE_CLUSTER_ALLOC 2 // BOOLEAN fSingleClusterAlloc
|
|
#define ODI_NOT_FOUND_ASSERT 3 // BOOLEAN fNotFoundAssert
|
|
#define ODI_ENABLE_COMPRESSION 4 // BOOLEAN fEnableCompression
|
|
#define ODI_ENABLE_POSIX 5 // BOOLEAN fEnablePosix
|
|
#define ODI_ENABLE_EMBEDDINGS 6 // BOOLEAN fEnableEmbeddings
|
|
|
|
typedef struct _OFS_DEBUG_INFO // odi
|
|
{
|
|
BYTE InfoType; // Debug Info selector
|
|
BOOLEAN fSet; // TRUE --> set value, else get value
|
|
USHORT pad;
|
|
union {
|
|
BOOLEAN f; // BOOLEAN value
|
|
ULONG ul; // ULONG value
|
|
LONGLONG ll; // LONGLONG value
|
|
};
|
|
} OFS_DEBUG_INFO;
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: USN_CHANGES_CONFIGURATION
|
|
//
|
|
// Synopsis: configure usn change table
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef struct _USN_CHANGES_CONFIGURATION
|
|
{
|
|
ULONG cbBlock; // size of block
|
|
ULONG cHash; // size of hash table
|
|
ULONG iProbe2; // second probe to be used in hash table
|
|
} USN_CHANGES_CONFIGURATION;
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// OFS Miscellaneous APIs:
|
|
//---------------------------------------------------------------------------
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
OFSGetVersion(
|
|
HANDLE hf,
|
|
ULONG *pversion
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
OFSGetCloseUsn(
|
|
HANDLE h,
|
|
USN *pusn
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlGenerateUsn(
|
|
HANDLE h,
|
|
USN *pusn
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlDeleteObject(
|
|
IN HANDLE hf
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlDeleteObjectByPath(
|
|
IN WCHAR const *pwszPath
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlNameToOleId(
|
|
IN HANDLE hf, // must be volume handle
|
|
IN ULONG cbNames,
|
|
IN OLENAMES const *pon,
|
|
OUT ULONG *pOleId
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlOleIdToName(
|
|
IN HANDLE hf, // must be volume handle
|
|
IN ULONG cOleId,
|
|
IN ULONG const *pOleId,
|
|
IN OUT ULONG *pcbNameBuf,
|
|
OUT OLENAMES *pon
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlQueryQuota(
|
|
IN HANDLE hf, // must be volume handle
|
|
IN OUT ULONG *pcb,
|
|
IN OUT FILE_QUOTA_INFORMATION *pfqi
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlQueryClassId(
|
|
IN HANDLE hf,
|
|
OUT GUID *pclsid
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlSetClassId(
|
|
IN HANDLE hf,
|
|
OPTIONAL IN GUID const *pclsid
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlSetReplicationState(
|
|
IN HANDLE hf
|
|
);
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Structure: ACCESS_CHECK_PARAMETERS
|
|
//
|
|
// Synopsis: The parameters used to call FSCTL_FILE_ACCESS_CHECK
|
|
//---------------------------------------------------------------------------
|
|
|
|
#if defined(KERNEL)
|
|
typedef struct _ACCESS_CHECK_PARAMETERS // acp
|
|
{
|
|
SECURITY_SUBJECT_CONTEXT SubjectContext;
|
|
ULONG DesiredAccess;
|
|
} ACCESS_CHECK_PARAMETERS;
|
|
#endif
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// ObjectId & Link Tracking APIs:
|
|
//---------------------------------------------------------------------------
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlQueryObjectId(
|
|
IN HANDLE hf,
|
|
OUT OBJECTID *poid
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlSetObjectId(
|
|
IN HANDLE hf,
|
|
OPTIONAL IN OBJECTID const *poid
|
|
);
|
|
|
|
VOID NTSYSAPI NTAPI
|
|
RtlGenerateRelatedObjectId(
|
|
IN OBJECTID const *poidOld,
|
|
OUT OBJECTID *poidNew
|
|
);
|
|
|
|
// inline NTSTATUS
|
|
// RtlGenerateObjectId(OBJECTID *poid)
|
|
// {
|
|
// poid->Uniquifier = 0;
|
|
// return(UuidCreate(&poid->Lineage));
|
|
// }
|
|
|
|
#define RtlGenerateObjectId(poid) \
|
|
((poid)->Uniquifier = 0, UuidCreate(&(poid)->Lineage))
|
|
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlSetTunnelMode(
|
|
IN HANDLE hf, // must be volume handle
|
|
IN ULONG ulFlags,
|
|
IN ULONG ulMask,
|
|
OUT ULONG *pulOld
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlSearchVolume(
|
|
IN HANDLE hAncestor,
|
|
IN OBJECTID const* poid,
|
|
IN USHORT cLineage,
|
|
IN BOOLEAN fContinue,
|
|
IN ULONG usBufLen,
|
|
OUT FINDOBJECTOUT *pfoo
|
|
);
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Cairo only Property Access APIs:
|
|
//---------------------------------------------------------------------------
|
|
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlCreateMappedStream(
|
|
IN HANDLE h, // property set handle
|
|
IN ULONG Flags, // [CMS_WRITE] | [CMS_TRANSACTED]
|
|
OUT NTMAPPEDSTREAM *pms); // Nt mapped stream
|
|
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlCloseMappedStream(
|
|
IN NTMAPPEDSTREAM ms); // Nt mapped stream
|
|
|
|
NTSTATUS PROPSYSAPI PROPAPI
|
|
RtlQueryPropertiesDirect(
|
|
IN HANDLE hf, // handle to object
|
|
IN ULONG cCol, // property count
|
|
IN DBID const *aCol, // requested columns
|
|
IN OUT ULONG *pcbProp, // max (IN) & returned (OUT) space used
|
|
IN OUT PROPVARIANT *aProp); // cCol returned properties (size = *pcbProp)
|
|
|
|
BOOLEAN PROPSYSAPI PROPAPI
|
|
RtlCompareVariants(
|
|
IN USHORT CodePage,
|
|
IN PROPVARIANT const *pvar1,
|
|
IN PROPVARIANT const *pvar2);
|
|
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// BUGBUG: Obsolete OFS Property Access APIs:
|
|
//---------------------------------------------------------------------------
|
|
|
|
typedef LPVOID (WINAPI FNMALLOC) (ULONG cb);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
OFSGetProp(
|
|
HANDLE h,
|
|
GUID psguid,
|
|
ULONG cprop,
|
|
PROPSPEC rgpspec[],
|
|
PROPID rgpid[],
|
|
VOID *pttl,
|
|
PROPVARIANT *pv,
|
|
FNMALLOC *pMalloc);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
OFSSetProp(
|
|
HANDLE h,
|
|
GUID psguid,
|
|
ULONG cprop,
|
|
PROPSPEC rgpspec[],
|
|
PROPID rgpid[],
|
|
PROPVARIANT rgvar[]);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
OFSDeleteProp(
|
|
HANDLE h,
|
|
GUID psguid,
|
|
ULONG cprop,
|
|
PROPSPEC rgpspec[]);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
OFSEnumProp(
|
|
HANDLE h,
|
|
GUID psguid,
|
|
ULONG *pcprop,
|
|
STATPROPSTG rgsps[],
|
|
ULONG cskip,
|
|
FNMALLOC *pMalloc);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
OFSEnumPropSet(
|
|
HANDLE h,
|
|
BOOLEAN fRestart,
|
|
ULONG *pcspss, // [in, out]
|
|
GUID *pkey, // [in, out]
|
|
STATPROPSETSTG rgspss[]); // [out, size_is(*pcspss)]
|
|
// BUGBUG: End Obsolete OFS Property Access APIs
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Summary Catalog APIs:
|
|
//---------------------------------------------------------------------------
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlQueryCatalogColumns(
|
|
IN HANDLE hCatalog, // handle to summary catalog
|
|
IN OUT ULONG *pColKey, // caller set to zero before first call
|
|
IN OUT ULONG *pcCol, // max (IN) & returned (OUT) row count
|
|
IN OUT ULONG *pcbCol, // max (IN) & returned (OUT) space used in aCol
|
|
OUT DBID *aCol, // *pcCol returned columns (size = *pcbCol)
|
|
OUT BOOLEAN *pfMoreData // TRUE --> more columns to fetch
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlQueryCatalogRows(
|
|
IN HANDLE hCatalog, // handle to summary catalog
|
|
IN ULONG cCol, // # of requested columns for all rows
|
|
IN DBID const *aCol, // requested columns
|
|
IN OUT CATALOGSTG_ROWID *pRowIdKey, // caller set to 1st RowId or
|
|
// CATALOGSTG_ROWID_INVALID
|
|
OPTIONAL IN CATALOGSTG_ROWID const *aRowId,
|
|
// *pcRow RowIds to fetch, else NULL
|
|
IN OUT ULONG *pcRow, // max (IN) & returned (OUT) row count
|
|
IN OUT ULONG *pcbRow, // max (IN) & returned (OUT) space used
|
|
OUT CATALOG_QUERY_ROWINFO *aQueryRowInfo,
|
|
// *pcRow returned rows (size = *pcbRow)
|
|
OUT BOOLEAN *pfMoreData // TRUE --> more rows to fetch
|
|
);
|
|
|
|
// The following function is for adding, updating, replacing and deleting rows.
|
|
// aCol defines the total set of columns which will be operated upon. cBind
|
|
// may be greater than cCol, but there must exist a value binding in aBind for
|
|
// each column in aCol.
|
|
//
|
|
// In other words:
|
|
//
|
|
// ASSERT(cCol <= cBind);
|
|
// for (i = 0; i < cCol; i++)
|
|
// {
|
|
// for (j = 0; j < cBind; j++)
|
|
// {
|
|
// if (aBind[j].iColumn == i &&
|
|
// aBind[j].dwPart == DBCOLUMNPART_VALUE)
|
|
// {
|
|
// break;
|
|
// }
|
|
// }
|
|
// ASSERT(j < cBind);
|
|
// // fetch property value for column i from aRowInfo[n].pData buffer
|
|
// }
|
|
|
|
typedef struct _CATALOG_UPDATE_ROWINFO CATALOG_UPDATE_ROWINFO;
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlUpdateCatalogRows(
|
|
IN HANDLE hCatalog, // handle to summary catalog
|
|
IN ULONG cCol, // # of columns for all rows
|
|
IN DBID const *aCol, // pertinent columns
|
|
IN ULONG cBind, // # of column bindings
|
|
IN DBBINDING const *aBind, // column binding information
|
|
IN ULONG cRow, // # of rows in aRowInfo
|
|
IN OUT CATALOG_UPDATE_ROWINFO *aRowInfo
|
|
// row Action/RowId/Status and property data
|
|
);
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// BUGBUG: Obsolete Summary Catalog Access APIs
|
|
//---------------------------------------------------------------------------
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlEnumerateCatalogRowIds(
|
|
IN HANDLE hCatalog,
|
|
IN OUT CATALOGSTG_ROWID *pRowIdKey,
|
|
IN OUT ULONG *pcrow,
|
|
OUT CATALOGSTG_ROWID *aRowId
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlEnumerateCatalogRows(
|
|
IN HANDLE hCatalog,
|
|
IN OUT CATALOG_ENUMERATE_ROW_PARAMS *pcerp,
|
|
OUT CATALOG_ENUMERATE_ROW_RESULTS *pcerr
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlGetCatalogRows(
|
|
IN HANDLE hCatalog,
|
|
IN OUT CATALOG_GET_ROW_PARAMS *pcgrp,
|
|
OUT CATALOG_GET_ROW_RESULTS *pcgrr
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlUpdateCatalog(
|
|
IN HANDLE hCatalog,
|
|
IN ULONG ccol,
|
|
IN FULLPROPSPEC const *aColumnSpec,
|
|
IN ULONG crow,
|
|
IN OUT CATALOG_ROW_INFO *acro
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlDeleteCatalogRows(
|
|
IN HANDLE hCatalog,
|
|
IN ULONG crow,
|
|
IN CATALOGSTG_ROWID *aRowId
|
|
);
|
|
//+--------------------------------------------------------------------------
|
|
// BUGBUG: End Obsolete Summary Catalog Access APIs
|
|
//---------------------------------------------------------------------------
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// OFS Deletion Log APIs:
|
|
//---------------------------------------------------------------------------
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlRegisterDeletionLogService(
|
|
HANDLE hf,
|
|
OBJECTID const *poid,
|
|
USN usn,
|
|
BOOLEAN fCancel
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlGetDeletionLogServices(
|
|
HANDLE hf,
|
|
OBJECTID const *poid,
|
|
SERVICE_ENUM *pse,
|
|
ULONG cb
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
RtlGetDeletionsAfter(
|
|
HANDLE hf,
|
|
USN usn,
|
|
ULONG grbit,
|
|
DELETION_ENUM_BUFFER *pdenb,
|
|
ULONG cb
|
|
);
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// OFS View APIs:
|
|
//---------------------------------------------------------------------------
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
EnumerateViews(
|
|
HANDLE hf,
|
|
ULONG id,
|
|
VIEW_INDEX_ENTRY *pvie,
|
|
ULONG cb
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
GetViewRestriction(
|
|
HANDLE hf,
|
|
ULONG id,
|
|
RESTRICTION **ppRestriction
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
DeleteView(
|
|
HANDLE hf,
|
|
ULONG id
|
|
);
|
|
|
|
NTSTATUS NTSYSAPI NTAPI
|
|
CreateView(
|
|
HANDLE hf,
|
|
RESTRICTION const *pRestriction,
|
|
COLUMNSET const *pColumns,
|
|
SORTSET const *pSort
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// OFS FSCTL codes:
|
|
// BUGBUG -- move to ntioapi.h at a convenient time
|
|
//---------------------------------------------------------------------------
|
|
|
|
#define FSCTL_CI_UPDATE_OBJECTS \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 100, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// FSCTLs for summary catalog access:
|
|
//---------------------------------------------------------------------------
|
|
|
|
#define FSCTL_OFS_QUERY_CATALOG_COLUMNS \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 101, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_QUERY_CATALOG_ROWS \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 102, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_UPDATE_CATALOG_ROWS \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 103, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED:
|
|
// CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 104, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED:
|
|
// CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 105, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_ENUMERATE_CATALOG_ROW \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 106, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_SET_CATALOG_ROW \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 107, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_GET_CATALOG_ROW \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 108, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_DELETE_CATALOG_ROW \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 109, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Miscellaneous OFS FSCTL codes:
|
|
//---------------------------------------------------------------------------
|
|
|
|
#define FSCTL_OFS_VERSION \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 110, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_FINDOBJECT \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 111, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_QUERY_PROPERTIES \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 112, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_SET_REPLICATION_STATE \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 113, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// FSCTLs for xactole:
|
|
//---------------------------------------------------------------------------
|
|
|
|
#define FSCTL_XOLE_COMMIT \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 114, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Conversion FSCTL:
|
|
//---------------------------------------------------------------------------
|
|
|
|
#define FSCTL_OFS_CONVERT_DOCFILE \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 115, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_CONVERT_STRUCTURED_OBJECT \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 116, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// FSCTLs for summary catalog access:
|
|
//---------------------------------------------------------------------------
|
|
|
|
#define FSCTL_USN_CHANGES_CONFIGURATION \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 117, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED:
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 118, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED:
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 119, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED:
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 120, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED:
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 121, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED:
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 122, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED:
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 123, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_DELLOG_REGISTER_SERVICE \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 124, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_DELLOG_GET_DELETIONS_AFTER \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 125, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_DELLOG_GET_SERVICES \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 126, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
// content index filter daemon interface
|
|
|
|
#define FSCTL_CI_FILTER_READY \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 127, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_FILTER_DATA_READY \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 128, METHOD_NEITHER, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_FILTER_DONE \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 129, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_FILTER_MORE \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 130, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
// usn interface
|
|
|
|
#define FSCTL_OFS_USN_GET_CLOSE \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 131, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
// set/retrieve debug info
|
|
|
|
#define FSCTL_OFS_DEBUG_INFO \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 132, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
// tunnelling
|
|
|
|
#define FSCTL_OFS_TUNNEL_MODE \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 133, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
// views
|
|
|
|
#define FSCTL_OFS_CREATE_VIEW \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 134, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_ENUMERATE_VIEWS \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 135, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_DELETE_VIEW \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 136, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
|
|
#define FSCTL_OFS_USN_GENERATE \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 137, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// Miscellaneous OFS FSCTL codes:
|
|
//---------------------------------------------------------------------------
|
|
|
|
#define FSCTL_OFS_TRANSLATE_OLENAMES \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 138, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_TRANSLATE_OLEIDS \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 139, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_QUERY_GETNOTIFY \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 140, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_CHANGE_DISKSPACE \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 141, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
|
|
//UNUSED:
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 142, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED:
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 143, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED:
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 144, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED:
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 145, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED:
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 146, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED:
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 147, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_LONG_OPERATION_STATUS \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 148, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED:
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 149, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_CONVERT_COW_TO_LARGE \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 150, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_QUERY_QUOTA \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 151, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED:
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 152, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_INTERNAL_FORCE_CKPOINT \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 153, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
// FSCTLs for IRowset table access:
|
|
//---------------------------------------------------------------------------
|
|
|
|
#define FSCTL_CI_NEW_IROWSET \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 154, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_QUERY_GETSTATUS \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 155, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_QUERY_WIDTOPATH \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 156, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 157, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_QUERY_SETBINDINGS \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 158, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 159, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 160, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 161, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 162, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 163, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_QUERY_APPROXPOS \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 164, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//UNUSED
|
|
//CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 165, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_QUERY_FREECURSOR \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 166, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_OFS_GET_VIEW_RESTRICTION \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 167, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_QUERY_SEEKANDFETCH \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 168, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_QUERY_RATIOFINISHED \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 169, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_QUERY_COMPAREBMK \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 170, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
// filter pid remapper
|
|
|
|
#define FSCTL_CI_FILTER_PIDREMAPPER \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 171, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
// IRowsetWatchRegion
|
|
|
|
#define FSCTL_CI_QUERY_RUNCHANGES \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 172, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_QUERY_SETWATCHMODE \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 173, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_QUERY_GETWATCHINFO \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 174, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_QUERY_SHRINKWATCHREGION \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 175, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
//
|
|
// CI Admin interfaces
|
|
//
|
|
#define FSCTL_CI_FORCE_MASTER_MERGE \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 176, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_FORCE_SHADOW_MERGE \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 177, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_ABORT_MERGES \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 178, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
#define FSCTL_CI_STATE \
|
|
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 179, METHOD_BUFFERED, FILE_ANY_ACCESS)
|
|
|
|
|
|
#endif // !DEFINED(INCL_IOFS)
|