201 le =
fcb->
Vcb->roots.Flink;
202 while (le != &
fcb->
Vcb->roots) {
228 ii =
fcb->
Vcb->dummy_fcb->inode_item;
251 searchkey.
offset = 0xffffffffffffffff;
255 ERR(
"error - find_item returned %08lx\n",
Status);
260 ERR(
"could not find inode item for inode %I64x in root %I64x\n",
inode,
r->id);
306 ii =
fileref->parent->fcb->inode_item;
327 TRACE(
"FileBothDirectoryInformation\n");
332 TRACE(
"buffer overflow - %li > %lu\n", needed, *
len);
367 TRACE(
"FileDirectoryInformation\n");
372 TRACE(
"buffer overflow - %li > %lu\n", needed, *
len);
405 TRACE(
"FileFullDirectoryInformation\n");
410 TRACE(
"buffer overflow - %li > %lu\n", needed, *
len);
444 TRACE(
"FileIdBothDirectoryInformation\n");
449 TRACE(
"buffer overflow - %li > %lu\n", needed, *
len);
485 TRACE(
"FileIdFullDirectoryInformation\n");
490 TRACE(
"buffer overflow - %li > %lu\n", needed, *
len);
522 #pragma GCC diagnostic push 523 #pragma GCC diagnostic ignored "-Wswitch" 525 #if (NTDDI_VERSION >= NTDDI_VISTA) 530 TRACE(
"FileIdExtdDirectoryInformation\n");
535 TRACE(
"buffer overflow - %li > %lu\n", needed, *
len);
573 TRACE(
"FileIdExtdBothDirectoryInformation\n");
578 TRACE(
"buffer overflow - %li > %lu\n", needed, *
len);
616 #pragma GCC diagnostic pop 623 TRACE(
"FileNamesInformation\n");
628 TRACE(
"buffer overflow - %li > %lu\n", needed, *
len);
644 WARN(
"Unknown FileInformationClass %u\n",
IrpSp->
Parameters.QueryDirectory.FileInformationClass);
#define KeQuerySystemTime(t)
struct _file_ref * fileref
#define FILE_ATTRIBUTE_SPARSE_FILE
GLdouble GLdouble GLdouble r
#define SUBVOL_ROOT_INODE
enum DirEntryType dir_entry_type
#define FileIdExtdDirectoryInformation
#define STATUS_INTERNAL_ERROR
GLenum GLuint GLenum GLsizei const GLchar * buf
static __inline uint64_t make_file_id(root *r, uint64_t inode)
return STATUS_NOT_IMPLEMENTED
#define offsetof(TYPE, MEMBER)
#define FileIdExtdBothDirectoryInformation
#define FILE_ATTRIBUTE_REPARSE_POINT
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
static __inline uint64_t unix_time_to_win(BTRFS_TIME *t)
_In_ uint64_t _In_ uint64_t _In_ uint64_t _In_opt_ traverse_ptr * tp
struct _LIST_ENTRY * Flink
NTSTATUS find_item(_In_ _Requires_lock_held_(_Curr_->tree_lock) device_extension *Vcb, _In_ root *r, _Out_ traverse_ptr *tp, _In_ const KEY *searchkey, _In_ bool ignore, _In_opt_ PIRP Irp) __attribute__((nonnull(1
ULONG get_file_attributes(_In_ _Requires_lock_held_(_Curr_->tree_lock) device_extension *Vcb, _In_ root *r, _In_ uint64_t inode, _In_ uint8_t type, _In_ bool dotfile, _In_ bool ignore_xa, _In_opt_ PIRP Irp)
#define NT_SUCCESS(StatCode)
#define STATUS_NO_MORE_FILES
struct _file_ref * fileref
ULONG get_reparse_tag(device_extension *Vcb, root *subvol, uint64_t inode, uint8_t type, ULONG atts, bool lxss, PIRP Irp)
#define FILE_ATTRIBUTE_NORMAL
static ULONG get_ea_len(device_extension *Vcb, root *subvol, uint64_t inode, PIRP Irp)
__drv_aliasesMem FORCEINLINE PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(_In_ PIRP Irp)
#define STATUS_BUFFER_OVERFLOW
_In_ PIO_STACK_LOCATION IrpSp
static __inline void win_time_to_unix(LARGE_INTEGER t, BTRFS_TIME *out)
#define RtlZeroMemory(Destination, Length)
#define RtlCopyMemory(Destination, Source, Length)
struct _NAMED_PIPE_CREATE_PARAMETERS * Parameters
struct _device_extension * Vcb
_In_ uint16_t _Out_ ULONG * atts
#define BTRFS_TYPE_SYMLINK