#ifndef _NTIOAPI_H
// Reparse structure for FSCTL_SET_REPARSE_POINT_EX
typedef struct _REPARSE_DATA_BUFFER_EX
{
ULONG Flags;
//
// This is the existing reparse tag on the file if any, if the
// caller wants to replace the reparse tag too.
//
// - To set the reparse data along with the reparse tag that
// could be different, pass the current reparse tag of the
// file.
//
// - To update the reparse data while having the same reparse
// tag, the caller should give the existing reparse tag in
// this ExistingReparseTag field.
//
// - To set the reparse tag along with reparse data on a file
// that doesn't have a reparse tag yet, set this to zero.
//
// If the ExistingReparseTag does not match the reparse tag on
// the file, the FSCTL_SET_REPARSE_POINT_EX would fail with
// STATUS_IO_REPARSE_TAG_MISMATCH. NOTE: If a file doesn't have
// a reparse tag, ExistingReparseTag should be 0.
//
ULONG ExistingReparseTag;
// For non-Microsoft reparse tags, this is the existing reparse
// guid on the file if any, if the caller wants to replace the
// reparse tag and / or guid along with the data.
//
// If ExistingReparseTag is 0, the file is not expected to have
// any reparse tags, so ExistingReparseGuid is ignored. And for
// non-Microsoft tags ExistingReparseGuid should match the guid
// in the file if ExistingReparseTag is non zero.
GUID ExistingReparseGuid;
//
// Reserved
//
ULONGLONG Reserved;
//
// Reparse data to set
//
union
{
REPARSE_DATA_BUFFER ReparseDataBuffer;
REPARSE_GUID_DATA_BUFFER ReparseGuidDataBuffer;
};
} REPARSE_DATA_BUFFER_EX, *PREPARSE_DATA_BUFFER_EX;
View code on GitHub
// ntifs.h
typedef struct _REPARSE_DATA_BUFFER_EX {
ULONG Flags;
ULONG ExistingReparseTag;
GUID ExistingReparseGuid;
ULONGLONG Reserved;
union {
REPARSE_DATA_BUFFER ReparseDataBuffer;
REPARSE_GUID_DATA_BUFFER ReparseGuidDataBuffer;
} DUMMYUNIONNAME;
} REPARSE_DATA_BUFFER_EX, *PREPARSE_DATA_BUFFER_EX;
View the official Windows Driver Kit DDI reference
No description available.
The REPARSE_DATA_BUFFER_EX structure contains data for a reparse point.
Flags
Can be the following value:
Flag Value | Meaning |
---|---|
REPARSE_DATA_EX_FLAG_GIVEN_TAG_OR_NONE | Forces FSCTL_SET_REPARSE_POINT_EX to set the reparse tag if the file has no tag, or if the tag on the file is same as the one in ExistingReparseTag. NOTE: If ExistingReparseTag is not a Microsoft tag, then ExistingReparseGuid should match if the file already has the ExistingReparseTag. |
ExistingReparseTag
Reparse point tag on the file, if any, if the caller wants to also replace the reparse tag.
ExistingReparseGuid
For non-Microsoft reparse tags, this is the existing reparse GUID on the file, if any, when the caller wants to replace the reparse tag and/or GUID along with the data. If ExistingReparseTag is zero, the file is not expected to have any reparse tags, so ExistingReparseGuid is ignored. For non-Microsoft tags, ExistingReparseGuid should match the GUID in the file if ExistingReparseTag is non-zero.
Reserved
Reserved. Do not use.
DUMMYUNIONNAME
DUMMYUNIONNAME.ReparseDataBuffer
A REPARSE_DATA_BUFFER structure that contains data for a Microsoft-defined reparse point.
DUMMYUNIONNAME.ReparseGuidDataBuffer
A REPARSE_GUID_DATA_BUFFER structure that contains data for a reparse point. Third party reparse points must use this structure.
The REPARSE_DATA_BUFFER_EX structure is used to store data for a reparse point. Use REPARSE_DATA_BUFFER_EX when setting a reparse point on a file or directory through the FSCTL_SET_REPARSE_POINT_EX IOCTL.