109 ULONG UserEaListLength;
124 ULONG UserBufferLength = 0;
125 ULONG RemainingUserBufferLength = 0;
142 Irp->IoStatus.Information = 0;
153 RemainingUserBufferLength = UserBufferLength;
173 MainResourceAcquired =
TRUE;
177 DbgPrint(
"ext4_fs_get_xattr_ref() failed!\n");
183 XattrRefAcquired =
TRUE;
185 if (RemainingUserBufferLength)
188 if (UserEaList !=
NULL) {
232 if (EaEntrySize > RemainingUserBufferLength) {
270 ((
PCHAR)FullEa + EaEntrySize);
271 RemainingUserBufferLength -= EaEntrySize;
274 }
else if (IndexSpecified) {
352 if (XattrRefAcquired) {
354 xattr_ref.dirty =
FALSE;
361 if (MainResourceAcquired) {
NTSTATUS Ext2WinntError(int rc)
#define IRP_CONTEXT_FLAG_WAIT
#define STATUS_INSUFFICIENT_RESOURCES
#define STATUS_OBJECTID_NOT_FOUND
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ BOOLEAN _In_ ULONG _In_opt_ PULONG _In_ BOOLEAN RestartScan
PFILE_FULL_EA_INFORMATION LastFullEa
#define ALIGN_UP(size, type)
#define SL_INDEX_SPECIFIED
struct _FILE_FULL_EA_INFORMATION * PFILE_FULL_EA_INFORMATION
#define BooleanFlagOn(F, SF)
PDEVICE_OBJECT DeviceObject
struct _FILE_GET_EA_INFORMATION * PFILE_GET_EA_INFORMATION
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ ULONG _In_ BOOLEAN ReturnSingleEntry
PEXT2_IRP_CONTEXT IrpContext
ULONG RemainingUserBufferLength
#define STATUS_BUFFER_TOO_SMALL
BOOLEAN ReturnSingleEntry
BOOLEAN NTAPI ExAcquireResourceExclusiveLite(IN PERESOURCE Resource, IN BOOLEAN Wait)
_In_ PDEVICE_OBJECT DeviceObject
NTFSIDENTIFIER Identifier
NTSTATUS Ext2QueueRequest(IN PEXT2_IRP_CONTEXT IrpContext)
#define EXT4_XATTR_INDEX_USER
#define FILE_ACTION_MODIFIED
VOID Ext2NotifyReportChange(IN PEXT2_IRP_CONTEXT IrpContext, IN PEXT2_VCB Vcb, IN PEXT2_MCB Mcb, IN ULONG Filter, IN ULONG Action)
#define _SEH2_AbnormalTermination()
int ext4_fs_get_xattr_ref(PEXT2_IRP_CONTEXT IrpContext, PEXT2_VCB fs, PEXT2_MCB inode_ref, struct ext4_xattr_ref *ref)
int ext4_fs_put_xattr_ref(struct ext4_xattr_ref *ref)
#define NT_SUCCESS(StatCode)
void ext4_fs_xattr_iterate(struct ext4_xattr_ref *ref, int(*iter)(struct ext4_xattr_ref *ref, struct ext4_xattr_item *item, BOOL is_last))
PFILE_FULL_EA_INFORMATION FullEa
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
#define STATUS_UNSUCCESSFUL
NTSTATUS Ext2CompleteIrpContext(IN PEXT2_IRP_CONTEXT IrpContext, IN NTSTATUS Status)
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
int ext4_fs_get_xattr(struct ext4_xattr_ref *ref, __u8 name_index, const char *name, size_t name_len, void *buf, size_t buf_size, size_t *data_size)
#define SL_RETURN_SINGLE_ENTRY
#define STATUS_BUFFER_OVERFLOW
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define FILE_NOTIFY_CHANGE_EA
static int Ext2IterateAllEa(struct ext4_xattr_ref *xattr_ref, struct ext4_xattr_item *item, BOOL is_last)
IN PVCB IN ULONG IN OUT PULONG IN BOOLEAN OUT PLARGE_MCB Mcb
#define RtlZeroMemory(Destination, Length)
#define RtlCopyMemory(Destination, Source, Length)
struct _EXT2_VCB * PEXT2_VCB
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
PVOID Ext2GetUserBuffer(IN PIRP Irp)
_In_ PIO_STACK_LOCATION IrpSp