btrfs
btrfs copied to clipboard
Undeclared identifiers when compiling
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:
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?
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