btrfs icon indicating copy to clipboard operation
btrfs copied to clipboard

Undeclared identifiers when compiling

Open queenbiscuit311 opened this issue 2 months ago • 1 comments

I'm trying to compile from source, so I installed visual studio 2022, WDK, and Windows SDK, but when I try to build I get stuck at building fileinfo.c with these errors:

Image

I'm clearly missing some sort of header file but I have no idea what I have to install to get it or where these come from. The compilation instructions are also less than ideal. Does anyone else know how I'm meant to compile this from source?

queenbiscuit311 avatar Oct 25 '25 05:10 queenbiscuit311

I had the exact same problem. To get it to compile I edited fileinfo.c, Lines 21-149:

// not currently in mingw - introduced with Windows 10
//#ifndef _MSC_VER
#define FileIdInformation (enum _FILE_INFORMATION_CLASS)59
#define FileHardLinkFullIdInformation (enum _FILE_INFORMATION_CLASS)62
#define FileDispositionInformationEx (enum _FILE_INFORMATION_CLASS)64
#define FileRenameInformationEx (enum _FILE_INFORMATION_CLASS)65
#define FileStatInformation (enum _FILE_INFORMATION_CLASS)68
#define FileStatLxInformation (enum _FILE_INFORMATION_CLASS)70
#define FileCaseSensitiveInformation (enum _FILE_INFORMATION_CLASS)71
#define FileLinkInformationEx (enum _FILE_INFORMATION_CLASS)72
#define FileStorageReserveIdInformation (enum _FILE_INFORMATION_CLASS)74

//typedef struct _FILE_ID_INFORMATION {
//    ULONGLONG VolumeSerialNumber;
//    FILE_ID_128 FileId;
//} FILE_ID_INFORMATION, *PFILE_ID_INFORMATION;
//
//typedef struct _FILE_STAT_INFORMATION {
//    LARGE_INTEGER FileId;
//    LARGE_INTEGER CreationTime;
//    LARGE_INTEGER LastAccessTime;
//    LARGE_INTEGER LastWriteTime;
//    LARGE_INTEGER ChangeTime;
//    LARGE_INTEGER AllocationSize;
//    LARGE_INTEGER EndOfFile;
//    ULONG FileAttributes;
//    ULONG ReparseTag;
//    ULONG NumberOfLinks;
//    ACCESS_MASK EffectiveAccess;
//} FILE_STAT_INFORMATION, *PFILE_STAT_INFORMATION;
//
//typedef struct _FILE_STAT_LX_INFORMATION {
//    LARGE_INTEGER FileId;
//    LARGE_INTEGER CreationTime;
//    LARGE_INTEGER LastAccessTime;
//    LARGE_INTEGER LastWriteTime;
//    LARGE_INTEGER ChangeTime;
//    LARGE_INTEGER AllocationSize;
//    LARGE_INTEGER EndOfFile;
//    ULONG         FileAttributes;
//    ULONG         ReparseTag;
//    ULONG         NumberOfLinks;
//    ACCESS_MASK   EffectiveAccess;
//    ULONG         LxFlags;
//    ULONG         LxUid;
//    ULONG         LxGid;
//    ULONG         LxMode;
//    ULONG         LxDeviceIdMajor;
//    ULONG         LxDeviceIdMinor;
//} FILE_STAT_LX_INFORMATION, *PFILE_STAT_LX_INFORMATION;

#define LX_FILE_METADATA_HAS_UID        0x01
#define LX_FILE_METADATA_HAS_GID        0x02
#define LX_FILE_METADATA_HAS_MODE       0x04
#define LX_FILE_METADATA_HAS_DEVICE_ID  0x08
#define LX_FILE_CASE_SENSITIVE_DIR      0x10

typedef struct _FILE_RENAME_INFORMATION_EX {
    union {
        BOOLEAN ReplaceIfExists;
        ULONG Flags;
    };
    HANDLE RootDirectory;
    ULONG FileNameLength;
    WCHAR FileName[1];
} FILE_RENAME_INFORMATION_EX, *PFILE_RENAME_INFORMATION_EX;

//typedef struct _FILE_DISPOSITION_INFORMATION_EX {
//    ULONG Flags;
//} FILE_DISPOSITION_INFORMATION_EX, *PFILE_DISPOSITION_INFORMATION_EX;

typedef struct _FILE_LINK_INFORMATION_EX {
    union {
        BOOLEAN ReplaceIfExists;
        ULONG Flags;
    };
    HANDLE RootDirectory;
    ULONG FileNameLength;
    WCHAR FileName[1];
} FILE_LINK_INFORMATION_EX, *PFILE_LINK_INFORMATION_EX;
//
//typedef struct _FILE_CASE_SENSITIVE_INFORMATION {
//    ULONG Flags;
//} FILE_CASE_SENSITIVE_INFORMATION, *PFILE_CASE_SENSITIVE_INFORMATION;
//
//typedef struct _FILE_LINK_ENTRY_FULL_ID_INFORMATION {
//    ULONG NextEntryOffset;
//    FILE_ID_128 ParentFileId;
//    ULONG FileNameLength;
//    WCHAR FileName[1];
//} FILE_LINK_ENTRY_FULL_ID_INFORMATION, *PFILE_LINK_ENTRY_FULL_ID_INFORMATION;
//
//typedef struct _FILE_LINKS_FULL_ID_INFORMATION {
//    ULONG BytesNeeded;
//    ULONG EntriesReturned;
//    FILE_LINK_ENTRY_FULL_ID_INFORMATION Entry;
//} FILE_LINKS_FULL_ID_INFORMATION, *PFILE_LINKS_FULL_ID_INFORMATION;

#define FILE_RENAME_REPLACE_IF_EXISTS                       0x001
#define FILE_RENAME_POSIX_SEMANTICS                         0x002
#define FILE_RENAME_SUPPRESS_PIN_STATE_INHERITANCE          0x004
#define FILE_RENAME_SUPPRESS_STORAGE_RESERVE_INHERITANCE    0x008
#define FILE_RENAME_NO_INCREASE_AVAILABLE_SPACE             0x010
#define FILE_RENAME_NO_DECREASE_AVAILABLE_SPACE             0x020
#define FILE_RENAME_IGNORE_READONLY_ATTRIBUTE               0x040
#define FILE_RENAME_FORCE_RESIZE_TARGET_SR                  0x080
#define FILE_RENAME_FORCE_RESIZE_SOURCE_SR                  0x100

#define FILE_DISPOSITION_DELETE                         0x1
#define FILE_DISPOSITION_POSIX_SEMANTICS                0x2
#define FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK      0x4
#define FILE_DISPOSITION_ON_CLOSE                       0x8

#define FILE_LINK_REPLACE_IF_EXISTS                       0x001
#define FILE_LINK_POSIX_SEMANTICS                         0x002
#define FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE    0x008
#define FILE_LINK_NO_INCREASE_AVAILABLE_SPACE             0x010
#define FILE_LINK_NO_DECREASE_AVAILABLE_SPACE             0x020
#define FILE_LINK_IGNORE_READONLY_ATTRIBUTE               0x040
#define FILE_LINK_FORCE_RESIZE_TARGET_SR                  0x080
#define FILE_LINK_FORCE_RESIZE_SOURCE_SR                  0x100

//#else
//
//#define FILE_RENAME_INFORMATION_EX FILE_RENAME_INFORMATION
//#define FILE_LINK_INFORMATION_EX FILE_LINK_INFORMATION
//

//#endif

GiggityGoo-85 avatar Oct 25 '25 13:10 GiggityGoo-85