/// Auto-generated by Deno Win32: Windows.Win32.Storage.FileSystem.Apis

import * as util from "https://raw.githubusercontent.com/DjDeveloperr/deno_win32/0.4.1/util.ts";

// Enums
export type FIND_FIRST_EX_FLAGS = number;
export type DEFINE_DOS_DEVICE_FLAGS = number;
export type FILE_FLAGS_AND_ATTRIBUTES = number;
export type FILE_ACCESS_FLAGS = number;
export type GET_FILE_VERSION_INFO_FLAGS = number;
export type VER_FIND_FILE_FLAGS = number;
export type VER_FIND_FILE_STATUS = number;
export type VER_INSTALL_FILE_FLAGS = number;
export type VER_INSTALL_FILE_STATUS = number;
export type VS_FIXEDFILEINFO_FILE_FLAGS = number;
export type VS_FIXEDFILEINFO_FILE_OS = number;
export type VS_FIXEDFILEINFO_FILE_TYPE = number;
export type VS_FIXEDFILEINFO_FILE_SUBTYPE = number;
export type FILE_CREATION_DISPOSITION = number;
export type FILE_SHARE_MODE = number;
export type SHARE_TYPE = number;
export type CLFS_FLAG = number;
export type SET_FILE_POINTER_MOVE_METHOD = number;
export type MOVE_FILE_FLAGS = number;
export type FILE_NAME = number;
export type LZOPENFILE_STYLE = number;
export type FILE_NOTIFY_CHANGE = number;
export type TXFS_MINIVERSION = number;
export type TAPE_POSITION_TYPE = number;
export type CREATE_TAPE_PARTITION_METHOD = number;
export type REPLACE_FILE_FLAGS = number;
export type TAPEMARK_TYPE = number;
export type DISKQUOTA_USERNAME_RESOLVE = number;
export type TAPE_POSITION_METHOD = number;
export type NT_CREATE_FILE_DISPOSITION = number;
export type TAPE_INFORMATION_TYPE = number;
export type NTMS_OMID_TYPE = number;
export type LOCK_FILE_FLAGS = number;
export type LPPROGRESS_ROUTINE_CALLBACK_REASON = number;
export type PREPARE_TAPE_OPERATION = number;
export type GET_TAPE_DRIVE_PARAMETERS_OPERATION = number;
export type ERASE_TAPE_TYPE = number;
export type FILE_ACTION = number;
export type SHARE_INFO_PERMISSIONS = number;
export type FILE_DEVICE_TYPE = number;
export type SESSION_INFO_USER_FLAGS = number;
export type WIN_STREAM_ID = number;
export type TXF_LOG_RECORD_TYPE = number;
export type FILE_INFO_FLAGS_PERMISSIONS = number;
export type SYMBOLIC_LINK_FLAGS = number;
export type FINDEX_INFO_LEVELS = number;
export type FINDEX_SEARCH_OPS = number;
export type READ_DIRECTORY_NOTIFY_INFORMATION_CLASS = number;
export type GET_FILEEX_INFO_LEVELS = number;
export type FILE_INFO_BY_HANDLE_CLASS = number;
export type STREAM_INFO_LEVELS = number;
export type NtmsObjectsTypes = number;
export type NtmsAsyncStatus = number;
export type NtmsAsyncOperations = number;
export type NtmsSessionOptions = number;
export type NtmsMountOptions = number;
export type NtmsDismountOptions = number;
export type NtmsMountPriority = number;
export type NtmsAllocateOptions = number;
export type NtmsCreateOptions = number;
export type NtmsDriveState = number;
export type NtmsLibraryType = number;
export type NtmsLibraryFlags = number;
export type NtmsInventoryMethod = number;
export type NtmsSlotState = number;
export type NtmsDoorState = number;
export type NtmsPortPosition = number;
export type NtmsPortContent = number;
export type NtmsBarCodeState = number;
export type NtmsMediaState = number;
export type NtmsPartitionState = number;
export type NtmsPoolType = number;
export type NtmsAllocationPolicy = number;
export type NtmsDeallocationPolicy = number;
export type NtmsReadWriteCharacteristics = number;
export type NtmsLmOperation = number;
export type NtmsLmState = number;
export type NtmsOpreqCommand = number;
export type NtmsOpreqState = number;
export type NtmsLibRequestFlags = number;
export type NtmsOpRequestFlags = number;
export type NtmsMediaPoolPolicy = number;
export type NtmsOperationalState = number;
export type NtmsCreateNtmsMediaOptions = number;
export type NtmsEnumerateOption = number;
export type NtmsEjectOperation = number;
export type NtmsInjectOperation = number;
export type NtmsDriveType = number;
export type NtmsAccessMask = number;
export type NtmsUITypes = number;
export type NtmsUIOperations = number;
export type NtmsNotificationOperations = number;
export type CLS_CONTEXT_MODE = number;
export type CLFS_CONTEXT_MODE = number;
export type CLS_LOG_INFORMATION_CLASS = number;
export type CLS_IOSTATS_CLASS = number;
export type CLFS_IOSTATS_CLASS = number;
export type CLFS_LOG_ARCHIVE_MODE = number;
export type CLFS_MGMT_POLICY_TYPE = number;
export type CLFS_MGMT_NOTIFICATION_TYPE = number;
export type SERVER_CERTIFICATE_TYPE = number;
export type IORING_VERSION = number;
export type IORING_FEATURE_FLAGS = number;
export type IORING_OP_CODE = number;
export type IORING_SQE_FLAGS = number;
export type IORING_CREATE_REQUIRED_FLAGS = number;
export type IORING_CREATE_ADVISORY_FLAGS = number;
export type IORING_REF_KIND = number;
export type TRANSACTION_OUTCOME = number;
export type STORAGE_BUS_TYPE = number;
export type COPYFILE2_MESSAGE_TYPE = number;
export type COPYFILE2_MESSAGE_ACTION = number;
export type COPYFILE2_COPY_PHASE = number;
export type PRIORITY_HINT = number;
export type FILE_ID_TYPE = number;

// Constants
export const FIND_FIRST_EX_CASE_SENSITIVE = 1;
export const FIND_FIRST_EX_LARGE_FETCH = 2;
export const FIND_FIRST_EX_ON_DISK_ENTRIES_ONLY = 4;
export const DDD_RAW_TARGET_PATH = 1;
export const DDD_REMOVE_DEFINITION = 2;
export const DDD_EXACT_MATCH_ON_REMOVE = 4;
export const DDD_NO_BROADCAST_SYSTEM = 8;
export const DDD_LUID_BROADCAST_DRIVE = 16;
export const FILE_ATTRIBUTE_READONLY = 1;
export const FILE_ATTRIBUTE_HIDDEN = 2;
export const FILE_ATTRIBUTE_SYSTEM = 4;
export const FILE_ATTRIBUTE_DIRECTORY = 16;
export const FILE_ATTRIBUTE_ARCHIVE = 32;
export const FILE_ATTRIBUTE_DEVICE = 64;
export const FILE_ATTRIBUTE_NORMAL = 128;
export const FILE_ATTRIBUTE_TEMPORARY = 256;
export const FILE_ATTRIBUTE_SPARSE_FILE = 512;
export const FILE_ATTRIBUTE_REPARSE_POINT = 1024;
export const FILE_ATTRIBUTE_COMPRESSED = 2048;
export const FILE_ATTRIBUTE_OFFLINE = 4096;
export const FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192;
export const FILE_ATTRIBUTE_ENCRYPTED = 16384;
export const FILE_ATTRIBUTE_INTEGRITY_STREAM = 32768;
export const FILE_ATTRIBUTE_VIRTUAL = 65536;
export const FILE_ATTRIBUTE_NO_SCRUB_DATA = 131072;
export const FILE_ATTRIBUTE_EA = 262144;
export const FILE_ATTRIBUTE_PINNED = 524288;
export const FILE_ATTRIBUTE_UNPINNED = 1048576;
export const FILE_ATTRIBUTE_RECALL_ON_OPEN = 262144;
export const FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 4194304;
export const FILE_FLAG_WRITE_THROUGH = 2147483648;
export const FILE_FLAG_OVERLAPPED = 1073741824;
export const FILE_FLAG_NO_BUFFERING = 536870912;
export const FILE_FLAG_RANDOM_ACCESS = 268435456;
export const FILE_FLAG_SEQUENTIAL_SCAN = 134217728;
export const FILE_FLAG_DELETE_ON_CLOSE = 67108864;
export const FILE_FLAG_BACKUP_SEMANTICS = 33554432;
export const FILE_FLAG_POSIX_SEMANTICS = 16777216;
export const FILE_FLAG_SESSION_AWARE = 8388608;
export const FILE_FLAG_OPEN_REPARSE_POINT = 2097152;
export const FILE_FLAG_OPEN_NO_RECALL = 1048576;
export const FILE_FLAG_FIRST_PIPE_INSTANCE = 524288;
export const PIPE_ACCESS_DUPLEX = 3;
export const PIPE_ACCESS_INBOUND = 1;
export const PIPE_ACCESS_OUTBOUND = 2;
export const SECURITY_ANONYMOUS = 0;
export const SECURITY_IDENTIFICATION = 65536;
export const SECURITY_IMPERSONATION = 131072;
export const SECURITY_DELEGATION = 196608;
export const SECURITY_CONTEXT_TRACKING = 262144;
export const SECURITY_EFFECTIVE_ONLY = 524288;
export const SECURITY_SQOS_PRESENT = 1048576;
export const SECURITY_VALID_SQOS_FLAGS = 2031616;
export const FILE_READ_DATA = 1;
export const FILE_LIST_DIRECTORY = 1;
export const FILE_WRITE_DATA = 2;
export const FILE_ADD_FILE = 2;
export const FILE_APPEND_DATA = 4;
export const FILE_ADD_SUBDIRECTORY = 4;
export const FILE_CREATE_PIPE_INSTANCE = 4;
export const FILE_READ_EA = 8;
export const FILE_WRITE_EA = 16;
export const FILE_EXECUTE = 32;
export const FILE_TRAVERSE = 32;
export const FILE_DELETE_CHILD = 64;
export const FILE_READ_ATTRIBUTES = 128;
export const FILE_WRITE_ATTRIBUTES = 256;
export const DELETE = 65536;
export const READ_CONTROL = 131072;
export const WRITE_DAC = 262144;
export const WRITE_OWNER = 524288;
export const SYNCHRONIZE = 1048576;
export const STANDARD_RIGHTS_REQUIRED = 983040;
export const STANDARD_RIGHTS_READ = 131072;
export const STANDARD_RIGHTS_WRITE = 131072;
export const STANDARD_RIGHTS_EXECUTE = 131072;
export const STANDARD_RIGHTS_ALL = 2031616;
export const SPECIFIC_RIGHTS_ALL = 65535;
export const FILE_ALL_ACCESS = 2032127;
export const FILE_GENERIC_READ = 1179785;
export const FILE_GENERIC_WRITE = 1179926;
export const FILE_GENERIC_EXECUTE = 1179808;
export const MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16384;
export const EA_CONTAINER_NAME = `ContainerName`;
export const EA_CONTAINER_SIZE = `ContainerSize`;
export const CLFS_BASELOG_EXTENSION = `.blf`;
export const CLFS_FLAG_REENTRANT_FILE_SYSTEM = 8;
export const CLFS_FLAG_NON_REENTRANT_FILTER = 16;
export const CLFS_FLAG_REENTRANT_FILTER = 32;
export const CLFS_FLAG_IGNORE_SHARE_ACCESS = 64;
export const CLFS_FLAG_READ_IN_PROGRESS = 128;
export const CLFS_FLAG_MINIFILTER_LEVEL = 256;
export const CLFS_FLAG_HIDDEN_SYSTEM_LOG = 512;
export const CLFS_MARSHALLING_FLAG_NONE = 0;
export const CLFS_MARSHALLING_FLAG_DISABLE_BUFF_INIT = 1;
export const CLFS_FLAG_FILTER_INTERMEDIATE_LEVEL = 16;
export const CLFS_FLAG_FILTER_TOP_LEVEL = 32;
export const CLFS_CONTAINER_STREAM_PREFIX = `%BLF%:`;
export const CLFS_CONTAINER_RELATIVE_PREFIX = `%BLF%\\`;
export const TRANSACTION_MANAGER_VOLATILE = 1;
export const TRANSACTION_MANAGER_COMMIT_DEFAULT = 0;
export const TRANSACTION_MANAGER_COMMIT_SYSTEM_VOLUME = 2;
export const TRANSACTION_MANAGER_COMMIT_SYSTEM_HIVES = 4;
export const TRANSACTION_MANAGER_COMMIT_LOWEST = 8;
export const TRANSACTION_MANAGER_CORRUPT_FOR_RECOVERY = 16;
export const TRANSACTION_MANAGER_CORRUPT_FOR_PROGRESS = 32;
export const TRANSACTION_MANAGER_MAXIMUM_OPTION = 63;
export const TRANSACTION_DO_NOT_PROMOTE = 1;
export const TRANSACTION_MAXIMUM_OPTION = 1;
export const RESOURCE_MANAGER_VOLATILE = 1;
export const RESOURCE_MANAGER_COMMUNICATION = 2;
export const RESOURCE_MANAGER_MAXIMUM_OPTION = 3;
export const CRM_PROTOCOL_EXPLICIT_MARSHAL_ONLY = 1;
export const CRM_PROTOCOL_DYNAMIC_MARSHAL_INFO = 2;
export const CRM_PROTOCOL_MAXIMUM_OPTION = 3;
export const ENLISTMENT_SUPERIOR = 1;
export const ENLISTMENT_MAXIMUM_OPTION = 1;
export const TRANSACTION_NOTIFY_MASK = 1073741823;
export const TRANSACTION_NOTIFY_PREPREPARE = 1;
export const TRANSACTION_NOTIFY_PREPARE = 2;
export const TRANSACTION_NOTIFY_COMMIT = 4;
export const TRANSACTION_NOTIFY_ROLLBACK = 8;
export const TRANSACTION_NOTIFY_PREPREPARE_COMPLETE = 16;
export const TRANSACTION_NOTIFY_PREPARE_COMPLETE = 32;
export const TRANSACTION_NOTIFY_COMMIT_COMPLETE = 64;
export const TRANSACTION_NOTIFY_ROLLBACK_COMPLETE = 128;
export const TRANSACTION_NOTIFY_RECOVER = 256;
export const TRANSACTION_NOTIFY_SINGLE_PHASE_COMMIT = 512;
export const TRANSACTION_NOTIFY_DELEGATE_COMMIT = 1024;
export const TRANSACTION_NOTIFY_RECOVER_QUERY = 2048;
export const TRANSACTION_NOTIFY_ENLIST_PREPREPARE = 4096;
export const TRANSACTION_NOTIFY_LAST_RECOVER = 8192;
export const TRANSACTION_NOTIFY_INDOUBT = 16384;
export const TRANSACTION_NOTIFY_PROPAGATE_PULL = 32768;
export const TRANSACTION_NOTIFY_PROPAGATE_PUSH = 65536;
export const TRANSACTION_NOTIFY_MARSHAL = 131072;
export const TRANSACTION_NOTIFY_ENLIST_MASK = 262144;
export const TRANSACTION_NOTIFY_RM_DISCONNECTED = 16777216;
export const TRANSACTION_NOTIFY_TM_ONLINE = 33554432;
export const TRANSACTION_NOTIFY_COMMIT_REQUEST = 67108864;
export const TRANSACTION_NOTIFY_PROMOTE = 134217728;
export const TRANSACTION_NOTIFY_PROMOTE_NEW = 268435456;
export const TRANSACTION_NOTIFY_REQUEST_OUTCOME = 536870912;
export const TRANSACTION_NOTIFY_COMMIT_FINALIZE = 1073741824;
export const TRANSACTIONMANAGER_OBJECT_PATH = `\\TransactionManager\\`;
export const TRANSACTION_OBJECT_PATH = `\\Transaction\\`;
export const ENLISTMENT_OBJECT_PATH = `\\Enlistment\\`;
export const RESOURCE_MANAGER_OBJECT_PATH = `\\ResourceManager\\`;
export const TRANSACTION_NOTIFICATION_TM_ONLINE_FLAG_IS_CLUSTERED = 1;
export const KTM_MARSHAL_BLOB_VERSION_MAJOR = 1;
export const KTM_MARSHAL_BLOB_VERSION_MINOR = 1;
export const MAX_TRANSACTION_DESCRIPTION_LENGTH = 64;
export const MAX_RESOURCEMANAGER_DESCRIPTION_LENGTH = 64;
export const IOCTL_VOLUME_BASE = 86;
export const IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS = 5636096;
export const IOCTL_VOLUME_ONLINE = 5685256;
export const IOCTL_VOLUME_OFFLINE = 5685260;
export const IOCTL_VOLUME_IS_CLUSTERED = 5636144;
export const IOCTL_VOLUME_GET_GPT_ATTRIBUTES = 5636152;
export const IOCTL_VOLUME_SUPPORTS_ONLINE_OFFLINE = 5636100;
export const IOCTL_VOLUME_IS_OFFLINE = 5636112;
export const IOCTL_VOLUME_IS_IO_CAPABLE = 5636116;
export const IOCTL_VOLUME_QUERY_FAILOVER_SET = 5636120;
export const IOCTL_VOLUME_QUERY_VOLUME_NUMBER = 5636124;
export const IOCTL_VOLUME_LOGICAL_TO_PHYSICAL = 5636128;
export const IOCTL_VOLUME_PHYSICAL_TO_LOGICAL = 5636132;
export const IOCTL_VOLUME_IS_PARTITION = 5636136;
export const IOCTL_VOLUME_READ_PLEX = 5652526;
export const IOCTL_VOLUME_SET_GPT_ATTRIBUTES = 5636148;
export const IOCTL_VOLUME_GET_BC_PROPERTIES = 5652540;
export const IOCTL_VOLUME_ALLOCATE_BC_STREAM = 5685312;
export const IOCTL_VOLUME_FREE_BC_STREAM = 5685316;
export const IOCTL_VOLUME_BC_VERSION = 1;
export const IOCTL_VOLUME_IS_DYNAMIC = 5636168;
export const IOCTL_VOLUME_PREPARE_FOR_CRITICAL_IO = 5685324;
export const IOCTL_VOLUME_QUERY_ALLOCATION_HINT = 5652562;
export const IOCTL_VOLUME_UPDATE_PROPERTIES = 5636180;
export const IOCTL_VOLUME_QUERY_MINIMUM_SHRINK_SIZE = 5652568;
export const IOCTL_VOLUME_PREPARE_FOR_SHRINK = 5685340;
export const IOCTL_VOLUME_IS_CSV = 5636192;
export const IOCTL_VOLUME_POST_ONLINE = 5685348;
export const IOCTL_VOLUME_GET_CSVBLOCKCACHE_CALLBACK = 5685352;
export const CSV_BLOCK_CACHE_CALLBACK_VERSION = 1;
export const CSV_BLOCK_AND_FILE_CACHE_CALLBACK_VERSION = 2;
export const _FT_TYPES_DEFINITION_ = 1;
export const CLFS_MGMT_POLICY_VERSION = 1;
export const LOG_POLICY_OVERWRITE = 1;
export const LOG_POLICY_PERSIST = 2;
export const CLFS_MGMT_CLIENT_REGISTRATION_VERSION = 1;
export const DISKQUOTA_STATE_DISABLED = 0;
export const DISKQUOTA_STATE_TRACK = 1;
export const DISKQUOTA_STATE_ENFORCE = 2;
export const DISKQUOTA_STATE_MASK = 3;
export const DISKQUOTA_FILESTATE_INCOMPLETE = 256;
export const DISKQUOTA_FILESTATE_REBUILDING = 512;
export const DISKQUOTA_FILESTATE_MASK = 768;
export const DISKQUOTA_LOGFLAG_USER_THRESHOLD = 1;
export const DISKQUOTA_LOGFLAG_USER_LIMIT = 2;
export const DISKQUOTA_USER_ACCOUNT_RESOLVED = 0;
export const DISKQUOTA_USER_ACCOUNT_UNAVAILABLE = 1;
export const DISKQUOTA_USER_ACCOUNT_DELETED = 2;
export const DISKQUOTA_USER_ACCOUNT_INVALID = 3;
export const DISKQUOTA_USER_ACCOUNT_UNKNOWN = 4;
export const DISKQUOTA_USER_ACCOUNT_UNRESOLVED = 5;
export const INVALID_SET_FILE_POINTER = 4294967295;
export const INVALID_FILE_ATTRIBUTES = 4294967295;
export const SHARE_NETNAME_PARMNUM = 1;
export const SHARE_TYPE_PARMNUM = 3;
export const SHARE_REMARK_PARMNUM = 4;
export const SHARE_PERMISSIONS_PARMNUM = 5;
export const SHARE_MAX_USES_PARMNUM = 6;
export const SHARE_CURRENT_USES_PARMNUM = 7;
export const SHARE_PATH_PARMNUM = 8;
export const SHARE_PASSWD_PARMNUM = 9;
export const SHARE_FILE_SD_PARMNUM = 501;
export const SHARE_SERVER_PARMNUM = 503;
export const SHI1_NUM_ELEMENTS = 4;
export const SHI2_NUM_ELEMENTS = 10;
export const STYPE_RESERVED1 = 16777216;
export const STYPE_RESERVED2 = 33554432;
export const STYPE_RESERVED3 = 67108864;
export const STYPE_RESERVED4 = 134217728;
export const STYPE_RESERVED5 = 1048576;
export const STYPE_RESERVED_ALL = 1073741568;
export const SHI_USES_UNLIMITED = 4294967295;
export const SHI1005_FLAGS_DFS = 1;
export const SHI1005_FLAGS_DFS_ROOT = 2;
export const CSC_MASK_EXT = 8240;
export const CSC_MASK = 48;
export const CSC_CACHE_MANUAL_REINT = 0;
export const CSC_CACHE_AUTO_REINT = 16;
export const CSC_CACHE_VDO = 32;
export const CSC_CACHE_NONE = 48;
export const SHI1005_FLAGS_RESTRICT_EXCLUSIVE_OPENS = 256;
export const SHI1005_FLAGS_FORCE_SHARED_DELETE = 512;
export const SHI1005_FLAGS_ALLOW_NAMESPACE_CACHING = 1024;
export const SHI1005_FLAGS_ACCESS_BASED_DIRECTORY_ENUM = 2048;
export const SHI1005_FLAGS_FORCE_LEVELII_OPLOCK = 4096;
export const SHI1005_FLAGS_ENABLE_HASH = 8192;
export const SHI1005_FLAGS_ENABLE_CA = 16384;
export const SHI1005_FLAGS_ENCRYPT_DATA = 32768;
export const SHI1005_FLAGS_RESERVED = 65536;
export const SHI1005_FLAGS_DISABLE_CLIENT_BUFFERING = 131072;
export const SHI1005_FLAGS_IDENTITY_REMOTING = 262144;
export const SHI1005_FLAGS_CLUSTER_MANAGED = 524288;
export const SHI1005_FLAGS_COMPRESS_DATA = 1048576;
export const SESI1_NUM_ELEMENTS = 8;
export const SESI2_NUM_ELEMENTS = 9;
export const STATSOPT_CLR = 1;
export const LZERROR_BADINHANDLE = `-1`;
export const LZERROR_BADOUTHANDLE = `-2`;
export const LZERROR_READ = `-3`;
export const LZERROR_WRITE = `-4`;
export const LZERROR_GLOBALLOC = `-5`;
export const LZERROR_GLOBLOCK = `-6`;
export const LZERROR_BADVALUE = `-7`;
export const LZERROR_UNKNOWNALG = `-8`;
export const NTMS_OBJECTNAME_LENGTH = 64;
export const NTMS_DESCRIPTION_LENGTH = 127;
export const NTMS_DEVICENAME_LENGTH = 64;
export const NTMS_SERIALNUMBER_LENGTH = 32;
export const NTMS_REVISION_LENGTH = 32;
export const NTMS_BARCODE_LENGTH = 64;
export const NTMS_SEQUENCE_LENGTH = 32;
export const NTMS_VENDORNAME_LENGTH = 128;
export const NTMS_PRODUCTNAME_LENGTH = 128;
export const NTMS_USERNAME_LENGTH = 64;
export const NTMS_APPLICATIONNAME_LENGTH = 64;
export const NTMS_COMPUTERNAME_LENGTH = 64;
export const NTMS_I1_MESSAGE_LENGTH = 127;
export const NTMS_MESSAGE_LENGTH = 256;
export const NTMS_POOLHIERARCHY_LENGTH = 512;
export const NTMS_OMIDLABELID_LENGTH = 255;
export const NTMS_OMIDLABELTYPE_LENGTH = 64;
export const NTMS_OMIDLABELINFO_LENGTH = 256;
export const NTMS_MAXATTR_LENGTH = 65536;
export const NTMS_MAXATTR_NAMELEN = 32;
export const NTMSMLI_MAXTYPE = 64;
export const NTMSMLI_MAXIDSIZE = 256;
export const NTMSMLI_MAXAPPDESCR = 256;
export const TXF_LOG_RECORD_GENERIC_TYPE_COMMIT = 1;
export const TXF_LOG_RECORD_GENERIC_TYPE_ABORT = 2;
export const TXF_LOG_RECORD_GENERIC_TYPE_PREPARE = 4;
export const TXF_LOG_RECORD_GENERIC_TYPE_DATA = 8;
export const VS_VERSION_INFO = 1;
export const VS_USER_DEFINED = 100;
export const VS_FFI_SIGNATURE = `-17890115`;
export const VS_FFI_STRUCVERSION = 65536;
export const VS_FFI_FILEFLAGSMASK = 63;
export const WINEFS_SETUSERKEY_SET_CAPABILITIES = 1;
export const EFS_COMPATIBILITY_VERSION_NCRYPT_PROTECTOR = 5;
export const EFS_COMPATIBILITY_VERSION_PFILE_PROTECTOR = 6;
export const EFS_SUBVER_UNKNOWN = 0;
export const EFS_EFS_SUBVER_EFS_CERT = 1;
export const EFS_PFILE_SUBVER_RMS = 2;
export const EFS_PFILE_SUBVER_APPX = 3;
export const MAX_SID_SIZE = 256;
export const EFS_METADATA_ADD_USER = 1;
export const EFS_METADATA_REMOVE_USER = 2;
export const EFS_METADATA_REPLACE_USER = 4;
export const EFS_METADATA_GENERAL_OP = 8;
export const WOF_PROVIDER_WIM = 1;
export const WOF_PROVIDER_FILE = 2;
export const WIM_PROVIDER_HASH_SIZE = 20;
export const WIM_BOOT_OS_WIM = 1;
export const WIM_BOOT_NOT_OS_WIM = 0;
export const WIM_ENTRY_FLAG_NOT_ACTIVE = 1;
export const WIM_ENTRY_FLAG_SUSPENDED = 2;
export const WIM_EXTERNAL_FILE_INFO_FLAG_NOT_ACTIVE = 1;
export const WIM_EXTERNAL_FILE_INFO_FLAG_SUSPENDED = 2;
export const FILE_PROVIDER_COMPRESSION_XPRESS4K = 0;
export const FILE_PROVIDER_COMPRESSION_LZX = 1;
export const FILE_PROVIDER_COMPRESSION_XPRESS8K = 2;
export const FILE_PROVIDER_COMPRESSION_XPRESS16K = 3;
export const ClfsNullRecord = 0;
export const ClfsDataRecord = 1;
export const ClfsRestartRecord = 2;
export const ClfsClientRecord = 3;
export const ClsContainerInitializing = 1;
export const ClsContainerInactive = 2;
export const ClsContainerActive = 4;
export const ClsContainerActivePendingDelete = 8;
export const ClsContainerPendingArchive = 16;
export const ClsContainerPendingArchiveAndDelete = 32;
export const ClfsContainerInitializing = 1;
export const ClfsContainerInactive = 2;
export const ClfsContainerActive = 4;
export const ClfsContainerActivePendingDelete = 8;
export const ClfsContainerPendingArchive = 16;
export const ClfsContainerPendingArchiveAndDelete = 32;
export const CLFS_MAX_CONTAINER_INFO = 256;
export const CLFS_SCAN_INIT = 1;
export const CLFS_SCAN_FORWARD = 2;
export const CLFS_SCAN_BACKWARD = 4;
export const CLFS_SCAN_CLOSE = 8;
export const CLFS_SCAN_INITIALIZED = 16;
export const CLFS_SCAN_BUFFERED = 32;
export const FILE_VER_GET_LOCALISED = 1;
export const FILE_VER_GET_NEUTRAL = 2;
export const FILE_VER_GET_PREFETCHED = 4;
export const VFFF_ISSHAREDFILE = 1;
export const VFF_CURNEDEST = 1;
export const VFF_FILEINUSE = 2;
export const VFF_BUFFTOOSMALL = 4;
export const VIFF_FORCEINSTALL = 1;
export const VIFF_DONTDELETEOLD = 2;
export const VIF_TEMPFILE = 1;
export const VIF_MISMATCH = 2;
export const VIF_SRCOLD = 4;
export const VIF_DIFFLANG = 8;
export const VIF_DIFFCODEPG = 16;
export const VIF_DIFFTYPE = 32;
export const VIF_WRITEPROT = 64;
export const VIF_FILEINUSE = 128;
export const VIF_OUTOFSPACE = 256;
export const VIF_ACCESSVIOLATION = 512;
export const VIF_SHARINGVIOLATION = 1024;
export const VIF_CANNOTCREATE = 2048;
export const VIF_CANNOTDELETE = 4096;
export const VIF_CANNOTRENAME = 8192;
export const VIF_CANNOTDELETECUR = 16384;
export const VIF_OUTOFMEMORY = 32768;
export const VIF_CANNOTREADSRC = 65536;
export const VIF_CANNOTREADDST = 131072;
export const VIF_BUFFTOOSMALL = 262144;
export const VIF_CANNOTLOADLZ32 = 524288;
export const VIF_CANNOTLOADCABINET = 1048576;
export const VS_FF_DEBUG = 1;
export const VS_FF_PRERELEASE = 2;
export const VS_FF_PATCHED = 4;
export const VS_FF_PRIVATEBUILD = 8;
export const VS_FF_INFOINFERRED = 16;
export const VS_FF_SPECIALBUILD = 32;
export const VOS_UNKNOWN = 0;
export const VOS_DOS = 65536;
export const VOS_OS216 = 131072;
export const VOS_OS232 = 196608;
export const VOS_NT = 262144;
export const VOS_WINCE = 327680;
export const VOS__BASE = 0;
export const VOS__WINDOWS16 = 1;
export const VOS__PM16 = 2;
export const VOS__PM32 = 3;
export const VOS__WINDOWS32 = 4;
export const VOS_DOS_WINDOWS16 = 65537;
export const VOS_DOS_WINDOWS32 = 65540;
export const VOS_OS216_PM16 = 131074;
export const VOS_OS232_PM32 = 196611;
export const VOS_NT_WINDOWS32 = 262148;
export const VFT_UNKNOWN = 0;
export const VFT_APP = 1;
export const VFT_DLL = 2;
export const VFT_DRV = 3;
export const VFT_FONT = 4;
export const VFT_VXD = 5;
export const VFT_STATIC_LIB = 7;
export const VFT2_UNKNOWN = 0;
export const VFT2_DRV_PRINTER = 1;
export const VFT2_DRV_KEYBOARD = 2;
export const VFT2_DRV_LANGUAGE = 3;
export const VFT2_DRV_DISPLAY = 4;
export const VFT2_DRV_MOUSE = 5;
export const VFT2_DRV_NETWORK = 6;
export const VFT2_DRV_SYSTEM = 7;
export const VFT2_DRV_INSTALLABLE = 8;
export const VFT2_DRV_SOUND = 9;
export const VFT2_DRV_COMM = 10;
export const VFT2_DRV_INPUTMETHOD = 11;
export const VFT2_DRV_VERSIONED_PRINTER = 12;
export const VFT2_FONT_RASTER = 1;
export const VFT2_FONT_VECTOR = 2;
export const VFT2_FONT_TRUETYPE = 3;
export const CREATE_NEW = 1;
export const CREATE_ALWAYS = 2;
export const OPEN_EXISTING = 3;
export const OPEN_ALWAYS = 4;
export const TRUNCATE_EXISTING = 5;
export const FILE_SHARE_NONE = 0;
export const FILE_SHARE_DELETE = 4;
export const FILE_SHARE_READ = 1;
export const FILE_SHARE_WRITE = 2;
export const STYPE_DISKTREE = 0;
export const STYPE_PRINTQ = 1;
export const STYPE_DEVICE = 2;
export const STYPE_IPC = 3;
export const STYPE_SPECIAL = 2147483648;
export const STYPE_TEMPORARY = 1073741824;
export const STYPE_MASK = 255;
export const CLFS_FLAG_FORCE_APPEND = 1;
export const CLFS_FLAG_FORCE_FLUSH = 2;
export const CLFS_FLAG_NO_FLAGS = 0;
export const CLFS_FLAG_USE_RESERVATION = 4;
export const FILE_BEGIN = 0;
export const FILE_CURRENT = 1;
export const FILE_END = 2;
export const MOVEFILE_COPY_ALLOWED = 2;
export const MOVEFILE_CREATE_HARDLINK = 16;
export const MOVEFILE_DELAY_UNTIL_REBOOT = 4;
export const MOVEFILE_REPLACE_EXISTING = 1;
export const MOVEFILE_WRITE_THROUGH = 8;
export const MOVEFILE_FAIL_IF_NOT_TRACKABLE = 32;
export const FILE_NAME_NORMALIZED = 0;
export const FILE_NAME_OPENED = 8;
export const OF_CANCEL = 2048;
export const OF_CREATE = 4096;
export const OF_DELETE = 512;
export const OF_EXIST = 16384;
export const OF_PARSE = 256;
export const OF_PROMPT = 8192;
export const OF_READ = 0;
export const OF_READWRITE = 2;
export const OF_REOPEN = 32768;
export const OF_SHARE_DENY_NONE = 64;
export const OF_SHARE_DENY_READ = 48;
export const OF_SHARE_DENY_WRITE = 32;
export const OF_SHARE_EXCLUSIVE = 16;
export const OF_WRITE = 1;
export const OF_SHARE_COMPAT = 0;
export const OF_VERIFY = 1024;
export const FILE_NOTIFY_CHANGE_FILE_NAME = 1;
export const FILE_NOTIFY_CHANGE_DIR_NAME = 2;
export const FILE_NOTIFY_CHANGE_ATTRIBUTES = 4;
export const FILE_NOTIFY_CHANGE_SIZE = 8;
export const FILE_NOTIFY_CHANGE_LAST_WRITE = 16;
export const FILE_NOTIFY_CHANGE_LAST_ACCESS = 32;
export const FILE_NOTIFY_CHANGE_CREATION = 64;
export const FILE_NOTIFY_CHANGE_SECURITY = 256;
export const TXFS_MINIVERSION_COMMITTED_VIEW = 0;
export const TXFS_MINIVERSION_DIRTY_VIEW = 65535;
export const TXFS_MINIVERSION_DEFAULT_VIEW = 65534;
export const TAPE_ABSOLUTE_POSITION = 0;
export const TAPE_LOGICAL_POSITION = 1;
export const TAPE_FIXED_PARTITIONS = 0;
export const TAPE_INITIATOR_PARTITIONS = 2;
export const TAPE_SELECT_PARTITIONS = 1;
export const REPLACEFILE_WRITE_THROUGH = 1;
export const REPLACEFILE_IGNORE_MERGE_ERRORS = 2;
export const REPLACEFILE_IGNORE_ACL_ERRORS = 4;
export const TAPE_FILEMARKS = 1;
export const TAPE_LONG_FILEMARKS = 3;
export const TAPE_SETMARKS = 0;
export const TAPE_SHORT_FILEMARKS = 2;
export const DISKQUOTA_USERNAME_RESOLVE_ASYNC = 2;
export const DISKQUOTA_USERNAME_RESOLVE_NONE = 0;
export const DISKQUOTA_USERNAME_RESOLVE_SYNC = 1;
export const TAPE_ABSOLUTE_BLOCK = 1;
export const TAPE_LOGICAL_BLOCK = 2;
export const TAPE_REWIND = 0;
export const TAPE_SPACE_END_OF_DATA = 4;
export const TAPE_SPACE_FILEMARKS = 6;
export const TAPE_SPACE_RELATIVE_BLOCKS = 5;
export const TAPE_SPACE_SEQUENTIAL_FMKS = 7;
export const TAPE_SPACE_SEQUENTIAL_SMKS = 9;
export const TAPE_SPACE_SETMARKS = 8;
export const FILE_SUPERSEDE = 0;
export const FILE_CREATE = 2;
export const FILE_OPEN = 1;
export const FILE_OPEN_IF = 3;
export const FILE_OVERWRITE = 4;
export const FILE_OVERWRITE_IF = 5;
export const SET_TAPE_DRIVE_INFORMATION = 1;
export const SET_TAPE_MEDIA_INFORMATION = 0;
export const NTMS_OMID_TYPE_FILESYSTEM_INFO = 2;
export const NTMS_OMID_TYPE_RAW_LABEL = 1;
export const LOCKFILE_EXCLUSIVE_LOCK = 2;
export const LOCKFILE_FAIL_IMMEDIATELY = 1;
export const CALLBACK_CHUNK_FINISHED = 0;
export const CALLBACK_STREAM_SWITCH = 1;
export const TAPE_FORMAT = 5;
export const TAPE_LOAD = 0;
export const TAPE_LOCK = 3;
export const TAPE_TENSION = 2;
export const TAPE_UNLOAD = 1;
export const TAPE_UNLOCK = 4;
export const GET_TAPE_DRIVE_INFORMATION = 1;
export const GET_TAPE_MEDIA_INFORMATION = 0;
export const TAPE_ERASE_LONG = 1;
export const TAPE_ERASE_SHORT = 0;
export const FILE_ACTION_ADDED = 1;
export const FILE_ACTION_REMOVED = 2;
export const FILE_ACTION_MODIFIED = 3;
export const FILE_ACTION_RENAMED_OLD_NAME = 4;
export const FILE_ACTION_RENAMED_NEW_NAME = 5;
export const ACCESS_READ = 1;
export const ACCESS_WRITE = 2;
export const ACCESS_CREATE = 4;
export const ACCESS_EXEC = 8;
export const ACCESS_DELETE = 16;
export const ACCESS_ATRIB = 32;
export const ACCESS_PERM = 64;
export const ACCESS_ALL = 32768;
export const FILE_DEVICE_CD_ROM = 2;
export const FILE_DEVICE_DISK = 7;
export const FILE_DEVICE_TAPE = 31;
export const FILE_DEVICE_DVD = 51;
export const SESS_GUEST = 1;
export const SESS_NOENCRYPTION = 2;
export const BACKUP_ALTERNATE_DATA = 4;
export const BACKUP_DATA = 1;
export const BACKUP_EA_DATA = 2;
export const BACKUP_LINK = 5;
export const BACKUP_OBJECT_ID = 7;
export const BACKUP_PROPERTY_DATA = 6;
export const BACKUP_REPARSE_DATA = 8;
export const BACKUP_SECURITY_DATA = 3;
export const BACKUP_SPARSE_BLOCK = 9;
export const BACKUP_TXFS_DATA = 10;
export const TXF_LOG_RECORD_TYPE_AFFECTED_FILE = 4;
export const TXF_LOG_RECORD_TYPE_TRUNCATE = 2;
export const TXF_LOG_RECORD_TYPE_WRITE = 1;
export const PERM_FILE_READ = 1;
export const PERM_FILE_WRITE = 2;
export const PERM_FILE_CREATE = 4;
export const SYMBOLIC_LINK_FLAG_DIRECTORY = 1;
export const SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE = 2;
export const FindExInfoStandard = 0;
export const FindExInfoBasic = 1;
export const FindExInfoMaxInfoLevel = 2;
export const FindExSearchNameMatch = 0;
export const FindExSearchLimitToDirectories = 1;
export const FindExSearchLimitToDevices = 2;
export const FindExSearchMaxSearchOp = 3;
export const ReadDirectoryNotifyInformation = 1;
export const ReadDirectoryNotifyExtendedInformation = 2;
export const GetFileExInfoStandard = 0;
export const GetFileExMaxInfoLevel = 1;
export const FileBasicInfo = 0;
export const FileStandardInfo = 1;
export const FileNameInfo = 2;
export const FileRenameInfo = 3;
export const FileDispositionInfo = 4;
export const FileAllocationInfo = 5;
export const FileEndOfFileInfo = 6;
export const FileStreamInfo = 7;
export const FileCompressionInfo = 8;
export const FileAttributeTagInfo = 9;
export const FileIdBothDirectoryInfo = 10;
export const FileIdBothDirectoryRestartInfo = 11;
export const FileIoPriorityHintInfo = 12;
export const FileRemoteProtocolInfo = 13;
export const FileFullDirectoryInfo = 14;
export const FileFullDirectoryRestartInfo = 15;
export const FileStorageInfo = 16;
export const FileAlignmentInfo = 17;
export const FileIdInfo = 18;
export const FileIdExtdDirectoryInfo = 19;
export const FileIdExtdDirectoryRestartInfo = 20;
export const FileDispositionInfoEx = 21;
export const FileRenameInfoEx = 22;
export const FileCaseSensitiveInfo = 23;
export const FileNormalizedNameInfo = 24;
export const MaximumFileInfoByHandleClass = 25;
export const FindStreamInfoStandard = 0;
export const FindStreamInfoMaxInfoLevel = 1;
export const NTMS_UNKNOWN = 0;
export const NTMS_OBJECT = 1;
export const NTMS_CHANGER = 2;
export const NTMS_CHANGER_TYPE = 3;
export const NTMS_COMPUTER = 4;
export const NTMS_DRIVE = 5;
export const NTMS_DRIVE_TYPE = 6;
export const NTMS_IEDOOR = 7;
export const NTMS_IEPORT = 8;
export const NTMS_LIBRARY = 9;
export const NTMS_LIBREQUEST = 10;
export const NTMS_LOGICAL_MEDIA = 11;
export const NTMS_MEDIA_POOL = 12;
export const NTMS_MEDIA_TYPE = 13;
export const NTMS_PARTITION = 14;
export const NTMS_PHYSICAL_MEDIA = 15;
export const NTMS_STORAGESLOT = 16;
export const NTMS_OPREQUEST = 17;
export const NTMS_UI_DESTINATION = 18;
export const NTMS_NUMBER_OF_OBJECT_TYPES = 19;
export const NTMS_ASYNCSTATE_QUEUED = 0;
export const NTMS_ASYNCSTATE_WAIT_RESOURCE = 1;
export const NTMS_ASYNCSTATE_WAIT_OPERATOR = 2;
export const NTMS_ASYNCSTATE_INPROCESS = 3;
export const NTMS_ASYNCSTATE_COMPLETE = 4;
export const NTMS_ASYNCOP_MOUNT = 1;
export const NTMS_SESSION_QUERYEXPEDITE = 1;
export const NTMS_MOUNT_READ = 1;
export const NTMS_MOUNT_WRITE = 2;
export const NTMS_MOUNT_ERROR_NOT_AVAILABLE = 4;
export const NTMS_MOUNT_ERROR_IF_UNAVAILABLE = 4;
export const NTMS_MOUNT_ERROR_OFFLINE = 8;
export const NTMS_MOUNT_ERROR_IF_OFFLINE = 8;
export const NTMS_MOUNT_SPECIFIC_DRIVE = 16;
export const NTMS_MOUNT_NOWAIT = 32;
export const NTMS_DISMOUNT_DEFERRED = 1;
export const NTMS_DISMOUNT_IMMEDIATE = 2;
export const NTMS_PRIORITY_DEFAULT = 0;
export const NTMS_PRIORITY_HIGHEST = 15;
export const NTMS_PRIORITY_HIGH = 7;
export const NTMS_PRIORITY_NORMAL = 0;
export const NTMS_PRIORITY_LOW = `-7`;
export const NTMS_PRIORITY_LOWEST = `-15`;
export const NTMS_ALLOCATE_NEW = 1;
export const NTMS_ALLOCATE_NEXT = 2;
export const NTMS_ALLOCATE_ERROR_IF_UNAVAILABLE = 4;
export const NTMS_OPEN_EXISTING = 1;
export const NTMS_CREATE_NEW = 2;
export const NTMS_OPEN_ALWAYS = 3;
export const NTMS_DRIVESTATE_DISMOUNTED = 0;
export const NTMS_DRIVESTATE_MOUNTED = 1;
export const NTMS_DRIVESTATE_LOADED = 2;
export const NTMS_DRIVESTATE_UNLOADED = 5;
export const NTMS_DRIVESTATE_BEING_CLEANED = 6;
export const NTMS_DRIVESTATE_DISMOUNTABLE = 7;
export const NTMS_LIBRARYTYPE_UNKNOWN = 0;
export const NTMS_LIBRARYTYPE_OFFLINE = 1;
export const NTMS_LIBRARYTYPE_ONLINE = 2;
export const NTMS_LIBRARYTYPE_STANDALONE = 3;
export const NTMS_LIBRARYFLAG_FIXEDOFFLINE = 1;
export const NTMS_LIBRARYFLAG_CLEANERPRESENT = 2;
export const NTMS_LIBRARYFLAG_AUTODETECTCHANGE = 4;
export const NTMS_LIBRARYFLAG_IGNORECLEANERUSESREMAINING = 8;
export const NTMS_LIBRARYFLAG_RECOGNIZECLEANERBARCODE = 16;
export const NTMS_INVENTORY_NONE = 0;
export const NTMS_INVENTORY_FAST = 1;
export const NTMS_INVENTORY_OMID = 2;
export const NTMS_INVENTORY_DEFAULT = 3;
export const NTMS_INVENTORY_SLOT = 4;
export const NTMS_INVENTORY_STOP = 5;
export const NTMS_INVENTORY_MAX = 6;
export const NTMS_SLOTSTATE_UNKNOWN = 0;
export const NTMS_SLOTSTATE_FULL = 1;
export const NTMS_SLOTSTATE_EMPTY = 2;
export const NTMS_SLOTSTATE_NOTPRESENT = 3;
export const NTMS_SLOTSTATE_NEEDSINVENTORY = 4;
export const NTMS_DOORSTATE_UNKNOWN = 0;
export const NTMS_DOORSTATE_CLOSED = 1;
export const NTMS_DOORSTATE_OPEN = 2;
export const NTMS_PORTPOSITION_UNKNOWN = 0;
export const NTMS_PORTPOSITION_EXTENDED = 1;
export const NTMS_PORTPOSITION_RETRACTED = 2;
export const NTMS_PORTCONTENT_UNKNOWN = 0;
export const NTMS_PORTCONTENT_FULL = 1;
export const NTMS_PORTCONTENT_EMPTY = 2;
export const NTMS_BARCODESTATE_OK = 1;
export const NTMS_BARCODESTATE_UNREADABLE = 2;
export const NTMS_MEDIASTATE_IDLE = 0;
export const NTMS_MEDIASTATE_INUSE = 1;
export const NTMS_MEDIASTATE_MOUNTED = 2;
export const NTMS_MEDIASTATE_LOADED = 3;
export const NTMS_MEDIASTATE_UNLOADED = 4;
export const NTMS_MEDIASTATE_OPERROR = 5;
export const NTMS_MEDIASTATE_OPREQ = 6;
export const NTMS_PARTSTATE_UNKNOWN = 0;
export const NTMS_PARTSTATE_UNPREPARED = 1;
export const NTMS_PARTSTATE_INCOMPATIBLE = 2;
export const NTMS_PARTSTATE_DECOMMISSIONED = 3;
export const NTMS_PARTSTATE_AVAILABLE = 4;
export const NTMS_PARTSTATE_ALLOCATED = 5;
export const NTMS_PARTSTATE_COMPLETE = 6;
export const NTMS_PARTSTATE_FOREIGN = 7;
export const NTMS_PARTSTATE_IMPORT = 8;
export const NTMS_PARTSTATE_RESERVED = 9;
export const NTMS_POOLTYPE_UNKNOWN = 0;
export const NTMS_POOLTYPE_SCRATCH = 1;
export const NTMS_POOLTYPE_FOREIGN = 2;
export const NTMS_POOLTYPE_IMPORT = 3;
export const NTMS_POOLTYPE_APPLICATION = 1000;
export const NTMS_ALLOCATE_FROMSCRATCH = 1;
export const NTMS_DEALLOCATE_TOSCRATCH = 1;
export const NTMS_MEDIARW_UNKNOWN = 0;
export const NTMS_MEDIARW_REWRITABLE = 1;
export const NTMS_MEDIARW_WRITEONCE = 2;
export const NTMS_MEDIARW_READONLY = 3;
export const NTMS_LM_REMOVE = 0;
export const NTMS_LM_DISABLECHANGER = 1;
export const NTMS_LM_DISABLELIBRARY = 1;
export const NTMS_LM_ENABLECHANGER = 2;
export const NTMS_LM_ENABLELIBRARY = 2;
export const NTMS_LM_DISABLEDRIVE = 3;
export const NTMS_LM_ENABLEDRIVE = 4;
export const NTMS_LM_DISABLEMEDIA = 5;
export const NTMS_LM_ENABLEMEDIA = 6;
export const NTMS_LM_UPDATEOMID = 7;
export const NTMS_LM_INVENTORY = 8;
export const NTMS_LM_DOORACCESS = 9;
export const NTMS_LM_EJECT = 10;
export const NTMS_LM_EJECTCLEANER = 11;
export const NTMS_LM_INJECT = 12;
export const NTMS_LM_INJECTCLEANER = 13;
export const NTMS_LM_PROCESSOMID = 14;
export const NTMS_LM_CLEANDRIVE = 15;
export const NTMS_LM_DISMOUNT = 16;
export const NTMS_LM_MOUNT = 17;
export const NTMS_LM_WRITESCRATCH = 18;
export const NTMS_LM_CLASSIFY = 19;
export const NTMS_LM_RESERVECLEANER = 20;
export const NTMS_LM_RELEASECLEANER = 21;
export const NTMS_LM_MAXWORKITEM = 22;
export const NTMS_LM_QUEUED = 0;
export const NTMS_LM_INPROCESS = 1;
export const NTMS_LM_PASSED = 2;
export const NTMS_LM_FAILED = 3;
export const NTMS_LM_INVALID = 4;
export const NTMS_LM_WAITING = 5;
export const NTMS_LM_DEFERRED = 6;
export const NTMS_LM_DEFFERED = 6;
export const NTMS_LM_CANCELLED = 7;
export const NTMS_LM_STOPPED = 8;
export const NTMS_OPREQ_UNKNOWN = 0;
export const NTMS_OPREQ_NEWMEDIA = 1;
export const NTMS_OPREQ_CLEANER = 2;
export const NTMS_OPREQ_DEVICESERVICE = 3;
export const NTMS_OPREQ_MOVEMEDIA = 4;
export const NTMS_OPREQ_MESSAGE = 5;
export const NTMS_OPSTATE_UNKNOWN = 0;
export const NTMS_OPSTATE_SUBMITTED = 1;
export const NTMS_OPSTATE_ACTIVE = 2;
export const NTMS_OPSTATE_INPROGRESS = 3;
export const NTMS_OPSTATE_REFUSED = 4;
export const NTMS_OPSTATE_COMPLETE = 5;
export const NTMS_LIBREQFLAGS_NOAUTOPURGE = 1;
export const NTMS_LIBREQFLAGS_NOFAILEDPURGE = 2;
export const NTMS_OPREQFLAGS_NOAUTOPURGE = 1;
export const NTMS_OPREQFLAGS_NOFAILEDPURGE = 2;
export const NTMS_OPREQFLAGS_NOALERTS = 16;
export const NTMS_OPREQFLAGS_NOTRAYICON = 32;
export const NTMS_POOLPOLICY_PURGEOFFLINESCRATCH = 1;
export const NTMS_POOLPOLICY_KEEPOFFLINEIMPORT = 2;
export const NTMS_READY = 0;
export const NTMS_INITIALIZING = 10;
export const NTMS_NEEDS_SERVICE = 20;
export const NTMS_NOT_PRESENT = 21;
export const NTMS_ERROR_ON_DUPLICATE = 1;
export const NTMS_ENUM_DEFAULT = 0;
export const NTMS_ENUM_ROOTPOOL = 1;
export const NTMS_EJECT_START = 0;
export const NTMS_EJECT_STOP = 1;
export const NTMS_EJECT_QUEUE = 2;
export const NTMS_EJECT_FORCE = 3;
export const NTMS_EJECT_IMMEDIATE = 4;
export const NTMS_EJECT_ASK_USER = 5;
export const NTMS_INJECT_START = 0;
export const NTMS_INJECT_STOP = 1;
export const NTMS_INJECT_RETRACT = 2;
export const NTMS_INJECT_STARTMANY = 3;
export const NTMS_UNKNOWN_DRIVE = 0;
export const NTMS_USE_ACCESS = 1;
export const NTMS_MODIFY_ACCESS = 2;
export const NTMS_CONTROL_ACCESS = 4;
export const NTMS_UITYPE_INVALID = 0;
export const NTMS_UITYPE_INFO = 1;
export const NTMS_UITYPE_REQ = 2;
export const NTMS_UITYPE_ERR = 3;
export const NTMS_UITYPE_MAX = 4;
export const NTMS_UIDEST_ADD = 1;
export const NTMS_UIDEST_DELETE = 2;
export const NTMS_UIDEST_DELETEALL = 3;
export const NTMS_UIOPERATION_MAX = 4;
export const NTMS_OBJ_UPDATE = 1;
export const NTMS_OBJ_INSERT = 2;
export const NTMS_OBJ_DELETE = 3;
export const NTMS_EVENT_SIGNAL = 4;
export const NTMS_EVENT_COMPLETE = 5;
export const ClsContextNone = 0;
export const ClsContextUndoNext = 1;
export const ClsContextPrevious = 2;
export const ClsContextForward = 3;
export const ClfsContextNone = 0;
export const ClfsContextUndoNext = 1;
export const ClfsContextPrevious = 2;
export const ClfsContextForward = 3;
export const ClfsLogBasicInformation = 0;
export const ClfsLogBasicInformationPhysical = 1;
export const ClfsLogPhysicalNameInformation = 2;
export const ClfsLogStreamIdentifierInformation = 3;
export const ClfsLogSystemMarkingInformation = 4;
export const ClfsLogPhysicalLsnInformation = 5;
export const ClsIoStatsDefault = 0;
export const ClsIoStatsMax = 65535;
export const ClfsIoStatsDefault = 0;
export const ClfsIoStatsMax = 65535;
export const ClfsLogArchiveEnabled = 1;
export const ClfsLogArchiveDisabled = 2;
export const ClfsMgmtPolicyMaximumSize = 0;
export const ClfsMgmtPolicyMinimumSize = 1;
export const ClfsMgmtPolicyNewContainerSize = 2;
export const ClfsMgmtPolicyGrowthRate = 3;
export const ClfsMgmtPolicyLogTail = 4;
export const ClfsMgmtPolicyAutoShrink = 5;
export const ClfsMgmtPolicyAutoGrow = 6;
export const ClfsMgmtPolicyNewContainerPrefix = 7;
export const ClfsMgmtPolicyNewContainerSuffix = 8;
export const ClfsMgmtPolicyNewContainerExtension = 9;
export const ClfsMgmtPolicyInvalid = 10;
export const ClfsMgmtAdvanceTailNotification = 0;
export const ClfsMgmtLogFullHandlerNotification = 1;
export const ClfsMgmtLogUnpinnedNotification = 2;
export const ClfsMgmtLogWriteNotification = 3;
export const QUIC = 0;
export const IORING_VERSION_INVALID = 0;
export const IORING_VERSION_1 = 1;
export const IORING_FEATURE_FLAGS_NONE = 0;
export const IORING_FEATURE_UM_EMULATION = 1;
export const IORING_FEATURE_SET_COMPLETION_EVENT = 2;
export const IORING_OP_NOP = 0;
export const IORING_OP_READ = 1;
export const IORING_OP_REGISTER_FILES = 2;
export const IORING_OP_REGISTER_BUFFERS = 3;
export const IORING_OP_CANCEL = 4;
export const IOSQE_FLAGS_NONE = 0;
export const IORING_CREATE_REQUIRED_FLAGS_NONE = 0;
export const IORING_CREATE_ADVISORY_FLAGS_NONE = 0;
export const IORING_REF_RAW = 0;
export const IORING_REF_REGISTERED = 1;
export const TransactionOutcomeUndetermined = 1;
export const TransactionOutcomeCommitted = 2;
export const TransactionOutcomeAborted = 3;
export const BusTypeUnknown = 0;
export const BusTypeScsi = 1;
export const BusTypeAtapi = 2;
export const BusTypeAta = 3;
export const BusType1394 = 4;
export const BusTypeSsa = 5;
export const BusTypeFibre = 6;
export const BusTypeUsb = 7;
export const BusTypeRAID = 8;
export const BusTypeiScsi = 9;
export const BusTypeSas = 10;
export const BusTypeSata = 11;
export const BusTypeSd = 12;
export const BusTypeMmc = 13;
export const BusTypeVirtual = 14;
export const BusTypeFileBackedVirtual = 15;
export const BusTypeSpaces = 16;
export const BusTypeNvme = 17;
export const BusTypeSCM = 18;
export const BusTypeUfs = 19;
export const BusTypeMax = 20;
export const BusTypeMaxReserved = 127;
export const COPYFILE2_CALLBACK_NONE = 0;
export const COPYFILE2_CALLBACK_CHUNK_STARTED = 1;
export const COPYFILE2_CALLBACK_CHUNK_FINISHED = 2;
export const COPYFILE2_CALLBACK_STREAM_STARTED = 3;
export const COPYFILE2_CALLBACK_STREAM_FINISHED = 4;
export const COPYFILE2_CALLBACK_POLL_CONTINUE = 5;
export const COPYFILE2_CALLBACK_ERROR = 6;
export const COPYFILE2_CALLBACK_MAX = 7;
export const COPYFILE2_PROGRESS_CONTINUE = 0;
export const COPYFILE2_PROGRESS_CANCEL = 1;
export const COPYFILE2_PROGRESS_STOP = 2;
export const COPYFILE2_PROGRESS_QUIET = 3;
export const COPYFILE2_PROGRESS_PAUSE = 4;
export const COPYFILE2_PHASE_NONE = 0;
export const COPYFILE2_PHASE_PREPARE_SOURCE = 1;
export const COPYFILE2_PHASE_PREPARE_DEST = 2;
export const COPYFILE2_PHASE_READ_SOURCE = 3;
export const COPYFILE2_PHASE_WRITE_DESTINATION = 4;
export const COPYFILE2_PHASE_SERVER_COPY = 5;
export const COPYFILE2_PHASE_NAMEGRAFT_COPY = 6;
export const COPYFILE2_PHASE_MAX = 7;
export const IoPriorityHintVeryLow = 0;
export const IoPriorityHintLow = 1;
export const IoPriorityHintNormal = 2;
export const MaximumIoPriorityHintType = 3;
export const FileIdType = 0;
export const ObjectIdType = 1;
export const ExtendedFileIdType = 2;
export const MaximumFileIdType = 3;

// Structs

export type BOOLEAN = number;

/**
 * Windows.Win32.Storage.FileSystem.FILE_DISPOSITION_INFO (size: 8)
 */
export interface FILE_DISPOSITION_INFO {
  /** Windows.Win32.Foundation.BOOLEAN */
  DeleteFile: Uint8Array | Deno.PointerValue;
}

export const sizeofFILE_DISPOSITION_INFO = 8;

export function allocFILE_DISPOSITION_INFO(data?: Partial<FILE_DISPOSITION_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_DISPOSITION_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.DeleteFile !== undefined) view.setBigUint64(0, data.DeleteFile === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.DeleteFile))), true);
  return buf;
}

export class FILE_DISPOSITION_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get DeleteFile(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set DeleteFile(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

export type FindFileHandle = bigint | number;

export type FindFileNameHandle = bigint | number;

export type FindStreamHandle = bigint | number;

export type FindChangeNotificationHandle = bigint | number;

export type FindVolumeHandle = bigint | number;

export type FindVolumeMointPointHandle = bigint | number;

/**
 * Windows.Win32.Foundation.FILETIME (size: 8)
 */
export interface FILETIME {
  /** u32 */
  dwLowDateTime: number;
  /** u32 */
  dwHighDateTime: number;
}

export const sizeofFILETIME = 8;

export function allocFILETIME(data?: Partial<FILETIME>): Uint8Array {
  const buf = new Uint8Array(sizeofFILETIME);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwLowDateTime !== undefined) view.setUint32(0, Number(data.dwLowDateTime), true);
  // 0x04: u32
  if (data?.dwHighDateTime !== undefined) view.setUint32(4, Number(data.dwHighDateTime), true);
  return buf;
}

export class FILETIMEView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwLowDateTime(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get dwHighDateTime(): number {
    return this.view.getUint32(4, true);
  }

  // 0x00: u32
  set dwLowDateTime(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set dwHighDateTime(value: number) {
    this.view.setUint32(4, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.WIN32_FIND_DATAA (size: 64)
 */
export interface WIN32_FIND_DATAA {
  /** u32 */
  dwFileAttributes: number;
  /** Windows.Win32.Foundation.FILETIME */
  ftCreationTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.FILETIME */
  ftLastAccessTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.FILETIME */
  ftLastWriteTime: Uint8Array | Deno.PointerValue;
  /** u32 */
  nFileSizeHigh: number;
  /** u32 */
  nFileSizeLow: number;
  /** u32 */
  dwReserved0: number;
  /** u32 */
  dwReserved1: number;
  /** array */
  cFileName: Deno.PointerValue;
  /** array */
  cAlternateFileName: Deno.PointerValue;
}

export const sizeofWIN32_FIND_DATAA = 64;

export function allocWIN32_FIND_DATAA(data?: Partial<WIN32_FIND_DATAA>): Uint8Array {
  const buf = new Uint8Array(sizeofWIN32_FIND_DATAA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwFileAttributes !== undefined) view.setUint32(0, Number(data.dwFileAttributes), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.ftCreationTime !== undefined) view.setBigUint64(8, data.ftCreationTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ftCreationTime))), true);
  // 0x10: pointer
  if (data?.ftLastAccessTime !== undefined) view.setBigUint64(16, data.ftLastAccessTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ftLastAccessTime))), true);
  // 0x18: pointer
  if (data?.ftLastWriteTime !== undefined) view.setBigUint64(24, data.ftLastWriteTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ftLastWriteTime))), true);
  // 0x20: u32
  if (data?.nFileSizeHigh !== undefined) view.setUint32(32, Number(data.nFileSizeHigh), true);
  // 0x24: u32
  if (data?.nFileSizeLow !== undefined) view.setUint32(36, Number(data.nFileSizeLow), true);
  // 0x28: u32
  if (data?.dwReserved0 !== undefined) view.setUint32(40, Number(data.dwReserved0), true);
  // 0x2c: u32
  if (data?.dwReserved1 !== undefined) view.setUint32(44, Number(data.dwReserved1), true);
  // 0x30: pointer
  if (data?.cFileName !== undefined) view.setBigUint64(48, data.cFileName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.cFileName))), true);
  // 0x38: pointer
  if (data?.cAlternateFileName !== undefined) view.setBigUint64(56, data.cAlternateFileName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.cAlternateFileName))), true);
  return buf;
}

export class WIN32_FIND_DATAAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwFileAttributes(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get ftCreationTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get ftLastAccessTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get ftLastWriteTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: u32
  get nFileSizeHigh(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: u32
  get nFileSizeLow(): number {
    return this.view.getUint32(36, true);
  }

  // 0x28: u32
  get dwReserved0(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: u32
  get dwReserved1(): number {
    return this.view.getUint32(44, true);
  }

  // 0x30: pointer
  get cFileName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: pointer
  get cAlternateFileName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwFileAttributes(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set ftCreationTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set ftLastAccessTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set ftLastWriteTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: u32
  set nFileSizeHigh(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: u32
  set nFileSizeLow(value: number) {
    this.view.setUint32(36, value, true);
  }

  // 0x28: u32
  set dwReserved0(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: u32
  set dwReserved1(value: number) {
    this.view.setUint32(44, value, true);
  }

  // 0x30: pointer
  set cFileName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: pointer
  set cAlternateFileName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.WIN32_FIND_DATAW (size: 64)
 */
export interface WIN32_FIND_DATAW {
  /** u32 */
  dwFileAttributes: number;
  /** Windows.Win32.Foundation.FILETIME */
  ftCreationTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.FILETIME */
  ftLastAccessTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.FILETIME */
  ftLastWriteTime: Uint8Array | Deno.PointerValue;
  /** u32 */
  nFileSizeHigh: number;
  /** u32 */
  nFileSizeLow: number;
  /** u32 */
  dwReserved0: number;
  /** u32 */
  dwReserved1: number;
  /** array */
  cFileName: Deno.PointerValue;
  /** array */
  cAlternateFileName: Deno.PointerValue;
}

export const sizeofWIN32_FIND_DATAW = 64;

export function allocWIN32_FIND_DATAW(data?: Partial<WIN32_FIND_DATAW>): Uint8Array {
  const buf = new Uint8Array(sizeofWIN32_FIND_DATAW);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwFileAttributes !== undefined) view.setUint32(0, Number(data.dwFileAttributes), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.ftCreationTime !== undefined) view.setBigUint64(8, data.ftCreationTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ftCreationTime))), true);
  // 0x10: pointer
  if (data?.ftLastAccessTime !== undefined) view.setBigUint64(16, data.ftLastAccessTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ftLastAccessTime))), true);
  // 0x18: pointer
  if (data?.ftLastWriteTime !== undefined) view.setBigUint64(24, data.ftLastWriteTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ftLastWriteTime))), true);
  // 0x20: u32
  if (data?.nFileSizeHigh !== undefined) view.setUint32(32, Number(data.nFileSizeHigh), true);
  // 0x24: u32
  if (data?.nFileSizeLow !== undefined) view.setUint32(36, Number(data.nFileSizeLow), true);
  // 0x28: u32
  if (data?.dwReserved0 !== undefined) view.setUint32(40, Number(data.dwReserved0), true);
  // 0x2c: u32
  if (data?.dwReserved1 !== undefined) view.setUint32(44, Number(data.dwReserved1), true);
  // 0x30: pointer
  if (data?.cFileName !== undefined) view.setBigUint64(48, data.cFileName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.cFileName))), true);
  // 0x38: pointer
  if (data?.cAlternateFileName !== undefined) view.setBigUint64(56, data.cAlternateFileName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.cAlternateFileName))), true);
  return buf;
}

export class WIN32_FIND_DATAWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwFileAttributes(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get ftCreationTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get ftLastAccessTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get ftLastWriteTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: u32
  get nFileSizeHigh(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: u32
  get nFileSizeLow(): number {
    return this.view.getUint32(36, true);
  }

  // 0x28: u32
  get dwReserved0(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: u32
  get dwReserved1(): number {
    return this.view.getUint32(44, true);
  }

  // 0x30: pointer
  get cFileName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: pointer
  get cAlternateFileName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwFileAttributes(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set ftCreationTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set ftLastAccessTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set ftLastWriteTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: u32
  set nFileSizeHigh(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: u32
  set nFileSizeLow(value: number) {
    this.view.setUint32(36, value, true);
  }

  // 0x28: u32
  set dwReserved0(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: u32
  set dwReserved1(value: number) {
    this.view.setUint32(44, value, true);
  }

  // 0x30: pointer
  set cFileName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: pointer
  set cAlternateFileName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * _Anonymous_e__Struct (size: 16)
 */
export interface _Anonymous_e__Struct {
  /** u64 */
  Alignment: bigint | number;
  /** u64 */
  Region: bigint | number;
}

export const sizeof_Anonymous_e__Struct = 16;

export function alloc_Anonymous_e__Struct(data?: Partial<_Anonymous_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_Anonymous_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: u64
  if (data?.Alignment !== undefined) view.setBigUint64(0, BigInt(data.Alignment), true);
  // 0x08: u64
  if (data?.Region !== undefined) view.setBigUint64(8, BigInt(data.Region), true);
  return buf;
}

export class _Anonymous_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u64
  get Alignment(): bigint | number {
    return Number(this.view.getBigUint64(0, true));
  }

  // 0x08: u64
  get Region(): bigint | number {
    return Number(this.view.getBigUint64(8, true));
  }

  // 0x00: u64
  set Alignment(value: bigint | number) {
    this.view.setBigUint64(0, BigInt(value), true);
  }

  // 0x08: u64
  set Region(value: bigint | number) {
    this.view.setBigUint64(8, BigInt(value), true);
  }
}

export type PWSTR = Deno.PointerValue | Uint8Array;

/**
 * _u_e__Struct (size: 16)
 */
export interface _u_e__Struct {
  /** u32 */
  dwValue: number;
  /** Windows.Win32.Foundation.PWSTR */
  pwszName: string | null | Uint8Array | Uint16Array;
}

export const sizeof_u_e__Struct = 16;

export function alloc_u_e__Struct(data?: Partial<_u_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_u_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwValue !== undefined) view.setUint32(0, Number(data.dwValue), true);
  // 0x04: pad4
  // 0x08: buffer
  if (data?.pwszName !== undefined) {
    (buf as any)._f8 = util.pwstrToFfi(data.pwszName);
    view.setBigUint64(8, (buf as any)._f8 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f8))), true);
  }
  return buf;
}

export class _u_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwValue(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: buffer
  get pwszName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwValue(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: buffer
  set pwszName(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f8 = value;
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f8))), true);
  }
}

/**
 * Windows.Win32.Foundation.LARGE_INTEGER (size: 24)
 */
export interface LARGE_INTEGER {
  /** _Anonymous_e__Struct */
  Anonymous: Uint8Array | Deno.PointerValue;
  /** _u_e__Struct */
  u: Uint8Array | Deno.PointerValue;
  /** i64 */
  QuadPart: bigint | number;
}

export const sizeofLARGE_INTEGER = 24;

export function allocLARGE_INTEGER(data?: Partial<LARGE_INTEGER>): Uint8Array {
  const buf = new Uint8Array(sizeofLARGE_INTEGER);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Anonymous !== undefined) view.setBigUint64(0, data.Anonymous === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Anonymous))), true);
  // 0x08: pointer
  if (data?.u !== undefined) view.setBigUint64(8, data.u === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.u))), true);
  // 0x10: i64
  if (data?.QuadPart !== undefined) view.setBigInt64(16, BigInt(data.QuadPart), true);
  return buf;
}

export class LARGE_INTEGERView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Anonymous(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get u(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: i64
  get QuadPart(): bigint | number {
    return Number(this.view.getBigInt64(16, true));
  }

  // 0x00: pointer
  set Anonymous(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set u(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: i64
  set QuadPart(value: bigint | number) {
    this.view.setBigInt64(16, BigInt(value), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.TRANSACTION_NOTIFICATION (size: 32)
 */
export interface TRANSACTION_NOTIFICATION {
  /** ptr */
  TransactionKey: Deno.PointerValue | Uint8Array;
  /** u32 */
  TransactionNotification: number;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  TmVirtualClock: Uint8Array | Deno.PointerValue;
  /** u32 */
  ArgumentLength: number;
}

export const sizeofTRANSACTION_NOTIFICATION = 32;

export function allocTRANSACTION_NOTIFICATION(data?: Partial<TRANSACTION_NOTIFICATION>): Uint8Array {
  const buf = new Uint8Array(sizeofTRANSACTION_NOTIFICATION);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.TransactionKey !== undefined) view.setBigUint64(0, data.TransactionKey === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TransactionKey))), true);
  // 0x08: u32
  if (data?.TransactionNotification !== undefined) view.setUint32(8, Number(data.TransactionNotification), true);
  // 0x0c: pad4
  // 0x10: pointer
  if (data?.TmVirtualClock !== undefined) view.setBigUint64(16, data.TmVirtualClock === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TmVirtualClock))), true);
  // 0x18: u32
  if (data?.ArgumentLength !== undefined) view.setUint32(24, Number(data.ArgumentLength), true);
  // 0x1c: pad4
  return buf;
}

export class TRANSACTION_NOTIFICATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get TransactionKey(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get TransactionNotification(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  get TmVirtualClock(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u32
  get ArgumentLength(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: pad4

  // 0x00: pointer
  set TransactionKey(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u32
  set TransactionNotification(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  set TmVirtualClock(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: u32
  set ArgumentLength(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT (size: 16)
 */
export interface TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT {
  /** System.Guid */
  EnlistmentId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  UOW: Uint8Array | Deno.PointerValue;
}

export const sizeofTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT = 16;

export function allocTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT(data?: Partial<TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT>): Uint8Array {
  const buf = new Uint8Array(sizeofTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.EnlistmentId !== undefined) view.setBigUint64(0, data.EnlistmentId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.EnlistmentId))), true);
  // 0x08: pointer
  if (data?.UOW !== undefined) view.setBigUint64(8, data.UOW === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.UOW))), true);
  return buf;
}

export class TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get EnlistmentId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get UOW(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set EnlistmentId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set UOW(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT (size: 16)
 */
export interface TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT {
  /** System.Guid */
  TmIdentity: Uint8Array | Deno.PointerValue;
  /** u32 */
  Flags: number;
}

export const sizeofTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT = 16;

export function allocTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT(data?: Partial<TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT>): Uint8Array {
  const buf = new Uint8Array(sizeofTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.TmIdentity !== undefined) view.setBigUint64(0, data.TmIdentity === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TmIdentity))), true);
  // 0x08: u32
  if (data?.Flags !== undefined) view.setUint32(8, Number(data.Flags), true);
  // 0x0c: pad4
  return buf;
}

export class TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get TmIdentity(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get Flags(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x00: pointer
  set TmIdentity(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u32
  set Flags(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT (size: 8)
 */
export interface TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT {
  /** u32 */
  SavepointId: number;
}

export const sizeofTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT = 8;

export function allocTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT(data?: Partial<TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT>): Uint8Array {
  const buf = new Uint8Array(sizeofTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.SavepointId !== undefined) view.setUint32(0, Number(data.SavepointId), true);
  // 0x04: pad4
  return buf;
}

export class TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get SavepointId(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x00: u32
  set SavepointId(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT (size: 32)
 */
export interface TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT {
  /** u32 */
  PropagationCookie: number;
  /** System.Guid */
  UOW: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  TmIdentity: Uint8Array | Deno.PointerValue;
  /** u32 */
  BufferLength: number;
}

export const sizeofTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT = 32;

export function allocTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT(data?: Partial<TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT>): Uint8Array {
  const buf = new Uint8Array(sizeofTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.PropagationCookie !== undefined) view.setUint32(0, Number(data.PropagationCookie), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.UOW !== undefined) view.setBigUint64(8, data.UOW === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.UOW))), true);
  // 0x10: pointer
  if (data?.TmIdentity !== undefined) view.setBigUint64(16, data.TmIdentity === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TmIdentity))), true);
  // 0x18: u32
  if (data?.BufferLength !== undefined) view.setUint32(24, Number(data.BufferLength), true);
  // 0x1c: pad4
  return buf;
}

export class TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get PropagationCookie(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get UOW(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get TmIdentity(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u32
  get BufferLength(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: pad4

  // 0x00: u32
  set PropagationCookie(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set UOW(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set TmIdentity(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: u32
  set BufferLength(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT (size: 16)
 */
export interface TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT {
  /** u32 */
  MarshalCookie: number;
  /** System.Guid */
  UOW: Uint8Array | Deno.PointerValue;
}

export const sizeofTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT = 16;

export function allocTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT(data?: Partial<TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT>): Uint8Array {
  const buf = new Uint8Array(sizeofTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.MarshalCookie !== undefined) view.setUint32(0, Number(data.MarshalCookie), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.UOW !== undefined) view.setBigUint64(8, data.UOW === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.UOW))), true);
  return buf;
}

export class TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get MarshalCookie(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get UOW(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set MarshalCookie(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set UOW(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.KCRM_MARSHAL_HEADER (size: 16)
 */
export interface KCRM_MARSHAL_HEADER {
  /** u32 */
  VersionMajor: number;
  /** u32 */
  VersionMinor: number;
  /** u32 */
  NumProtocols: number;
  /** u32 */
  Unused: number;
}

export const sizeofKCRM_MARSHAL_HEADER = 16;

export function allocKCRM_MARSHAL_HEADER(data?: Partial<KCRM_MARSHAL_HEADER>): Uint8Array {
  const buf = new Uint8Array(sizeofKCRM_MARSHAL_HEADER);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.VersionMajor !== undefined) view.setUint32(0, Number(data.VersionMajor), true);
  // 0x04: u32
  if (data?.VersionMinor !== undefined) view.setUint32(4, Number(data.VersionMinor), true);
  // 0x08: u32
  if (data?.NumProtocols !== undefined) view.setUint32(8, Number(data.NumProtocols), true);
  // 0x0c: u32
  if (data?.Unused !== undefined) view.setUint32(12, Number(data.Unused), true);
  return buf;
}

export class KCRM_MARSHAL_HEADERView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get VersionMajor(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get VersionMinor(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get NumProtocols(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get Unused(): number {
    return this.view.getUint32(12, true);
  }

  // 0x00: u32
  set VersionMajor(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set VersionMinor(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set NumProtocols(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set Unused(value: number) {
    this.view.setUint32(12, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.KCRM_TRANSACTION_BLOB (size: 40)
 */
export interface KCRM_TRANSACTION_BLOB {
  /** System.Guid */
  UOW: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  TmIdentity: Uint8Array | Deno.PointerValue;
  /** u32 */
  IsolationLevel: number;
  /** u32 */
  IsolationFlags: number;
  /** u32 */
  Timeout: number;
  /** array */
  Description: Deno.PointerValue;
}

export const sizeofKCRM_TRANSACTION_BLOB = 40;

export function allocKCRM_TRANSACTION_BLOB(data?: Partial<KCRM_TRANSACTION_BLOB>): Uint8Array {
  const buf = new Uint8Array(sizeofKCRM_TRANSACTION_BLOB);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.UOW !== undefined) view.setBigUint64(0, data.UOW === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.UOW))), true);
  // 0x08: pointer
  if (data?.TmIdentity !== undefined) view.setBigUint64(8, data.TmIdentity === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TmIdentity))), true);
  // 0x10: u32
  if (data?.IsolationLevel !== undefined) view.setUint32(16, Number(data.IsolationLevel), true);
  // 0x14: u32
  if (data?.IsolationFlags !== undefined) view.setUint32(20, Number(data.IsolationFlags), true);
  // 0x18: u32
  if (data?.Timeout !== undefined) view.setUint32(24, Number(data.Timeout), true);
  // 0x1c: pad4
  // 0x20: pointer
  if (data?.Description !== undefined) view.setBigUint64(32, data.Description === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Description))), true);
  return buf;
}

export class KCRM_TRANSACTION_BLOBView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get UOW(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get TmIdentity(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get IsolationLevel(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get IsolationFlags(): number {
    return this.view.getUint32(20, true);
  }

  // 0x18: u32
  get Timeout(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: pad4

  // 0x20: pointer
  get Description(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set UOW(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set TmIdentity(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set IsolationLevel(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set IsolationFlags(value: number) {
    this.view.setUint32(20, value, true);
  }

  // 0x18: u32
  set Timeout(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: pad4

  // 0x20: pointer
  set Description(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.KCRM_PROTOCOL_BLOB (size: 24)
 */
export interface KCRM_PROTOCOL_BLOB {
  /** System.Guid */
  ProtocolId: Uint8Array | Deno.PointerValue;
  /** u32 */
  StaticInfoLength: number;
  /** u32 */
  TransactionIdInfoLength: number;
  /** u32 */
  Unused1: number;
  /** u32 */
  Unused2: number;
}

export const sizeofKCRM_PROTOCOL_BLOB = 24;

export function allocKCRM_PROTOCOL_BLOB(data?: Partial<KCRM_PROTOCOL_BLOB>): Uint8Array {
  const buf = new Uint8Array(sizeofKCRM_PROTOCOL_BLOB);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.ProtocolId !== undefined) view.setBigUint64(0, data.ProtocolId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ProtocolId))), true);
  // 0x08: u32
  if (data?.StaticInfoLength !== undefined) view.setUint32(8, Number(data.StaticInfoLength), true);
  // 0x0c: u32
  if (data?.TransactionIdInfoLength !== undefined) view.setUint32(12, Number(data.TransactionIdInfoLength), true);
  // 0x10: u32
  if (data?.Unused1 !== undefined) view.setUint32(16, Number(data.Unused1), true);
  // 0x14: u32
  if (data?.Unused2 !== undefined) view.setUint32(20, Number(data.Unused2), true);
  return buf;
}

export class KCRM_PROTOCOL_BLOBView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get ProtocolId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get StaticInfoLength(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get TransactionIdInfoLength(): number {
    return this.view.getUint32(12, true);
  }

  // 0x10: u32
  get Unused1(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get Unused2(): number {
    return this.view.getUint32(20, true);
  }

  // 0x00: pointer
  set ProtocolId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u32
  set StaticInfoLength(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set TransactionIdInfoLength(value: number) {
    this.view.setUint32(12, value, true);
  }

  // 0x10: u32
  set Unused1(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set Unused2(value: number) {
    this.view.setUint32(20, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.DISK_SPACE_INFORMATION (size: 96)
 */
export interface DISK_SPACE_INFORMATION {
  /** u64 */
  ActualTotalAllocationUnits: bigint | number;
  /** u64 */
  ActualAvailableAllocationUnits: bigint | number;
  /** u64 */
  ActualPoolUnavailableAllocationUnits: bigint | number;
  /** u64 */
  CallerTotalAllocationUnits: bigint | number;
  /** u64 */
  CallerAvailableAllocationUnits: bigint | number;
  /** u64 */
  CallerPoolUnavailableAllocationUnits: bigint | number;
  /** u64 */
  UsedAllocationUnits: bigint | number;
  /** u64 */
  TotalReservedAllocationUnits: bigint | number;
  /** u64 */
  VolumeStorageReserveAllocationUnits: bigint | number;
  /** u64 */
  AvailableCommittedAllocationUnits: bigint | number;
  /** u64 */
  PoolAvailableAllocationUnits: bigint | number;
  /** u32 */
  SectorsPerAllocationUnit: number;
  /** u32 */
  BytesPerSector: number;
}

export const sizeofDISK_SPACE_INFORMATION = 96;

export function allocDISK_SPACE_INFORMATION(data?: Partial<DISK_SPACE_INFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofDISK_SPACE_INFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u64
  if (data?.ActualTotalAllocationUnits !== undefined) view.setBigUint64(0, BigInt(data.ActualTotalAllocationUnits), true);
  // 0x08: u64
  if (data?.ActualAvailableAllocationUnits !== undefined) view.setBigUint64(8, BigInt(data.ActualAvailableAllocationUnits), true);
  // 0x10: u64
  if (data?.ActualPoolUnavailableAllocationUnits !== undefined) view.setBigUint64(16, BigInt(data.ActualPoolUnavailableAllocationUnits), true);
  // 0x18: u64
  if (data?.CallerTotalAllocationUnits !== undefined) view.setBigUint64(24, BigInt(data.CallerTotalAllocationUnits), true);
  // 0x20: u64
  if (data?.CallerAvailableAllocationUnits !== undefined) view.setBigUint64(32, BigInt(data.CallerAvailableAllocationUnits), true);
  // 0x28: u64
  if (data?.CallerPoolUnavailableAllocationUnits !== undefined) view.setBigUint64(40, BigInt(data.CallerPoolUnavailableAllocationUnits), true);
  // 0x30: u64
  if (data?.UsedAllocationUnits !== undefined) view.setBigUint64(48, BigInt(data.UsedAllocationUnits), true);
  // 0x38: u64
  if (data?.TotalReservedAllocationUnits !== undefined) view.setBigUint64(56, BigInt(data.TotalReservedAllocationUnits), true);
  // 0x40: u64
  if (data?.VolumeStorageReserveAllocationUnits !== undefined) view.setBigUint64(64, BigInt(data.VolumeStorageReserveAllocationUnits), true);
  // 0x48: u64
  if (data?.AvailableCommittedAllocationUnits !== undefined) view.setBigUint64(72, BigInt(data.AvailableCommittedAllocationUnits), true);
  // 0x50: u64
  if (data?.PoolAvailableAllocationUnits !== undefined) view.setBigUint64(80, BigInt(data.PoolAvailableAllocationUnits), true);
  // 0x58: u32
  if (data?.SectorsPerAllocationUnit !== undefined) view.setUint32(88, Number(data.SectorsPerAllocationUnit), true);
  // 0x5c: u32
  if (data?.BytesPerSector !== undefined) view.setUint32(92, Number(data.BytesPerSector), true);
  return buf;
}

export class DISK_SPACE_INFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u64
  get ActualTotalAllocationUnits(): bigint | number {
    return Number(this.view.getBigUint64(0, true));
  }

  // 0x08: u64
  get ActualAvailableAllocationUnits(): bigint | number {
    return Number(this.view.getBigUint64(8, true));
  }

  // 0x10: u64
  get ActualPoolUnavailableAllocationUnits(): bigint | number {
    return Number(this.view.getBigUint64(16, true));
  }

  // 0x18: u64
  get CallerTotalAllocationUnits(): bigint | number {
    return Number(this.view.getBigUint64(24, true));
  }

  // 0x20: u64
  get CallerAvailableAllocationUnits(): bigint | number {
    return Number(this.view.getBigUint64(32, true));
  }

  // 0x28: u64
  get CallerPoolUnavailableAllocationUnits(): bigint | number {
    return Number(this.view.getBigUint64(40, true));
  }

  // 0x30: u64
  get UsedAllocationUnits(): bigint | number {
    return Number(this.view.getBigUint64(48, true));
  }

  // 0x38: u64
  get TotalReservedAllocationUnits(): bigint | number {
    return Number(this.view.getBigUint64(56, true));
  }

  // 0x40: u64
  get VolumeStorageReserveAllocationUnits(): bigint | number {
    return Number(this.view.getBigUint64(64, true));
  }

  // 0x48: u64
  get AvailableCommittedAllocationUnits(): bigint | number {
    return Number(this.view.getBigUint64(72, true));
  }

  // 0x50: u64
  get PoolAvailableAllocationUnits(): bigint | number {
    return Number(this.view.getBigUint64(80, true));
  }

  // 0x58: u32
  get SectorsPerAllocationUnit(): number {
    return this.view.getUint32(88, true);
  }

  // 0x5c: u32
  get BytesPerSector(): number {
    return this.view.getUint32(92, true);
  }

  // 0x00: u64
  set ActualTotalAllocationUnits(value: bigint | number) {
    this.view.setBigUint64(0, BigInt(value), true);
  }

  // 0x08: u64
  set ActualAvailableAllocationUnits(value: bigint | number) {
    this.view.setBigUint64(8, BigInt(value), true);
  }

  // 0x10: u64
  set ActualPoolUnavailableAllocationUnits(value: bigint | number) {
    this.view.setBigUint64(16, BigInt(value), true);
  }

  // 0x18: u64
  set CallerTotalAllocationUnits(value: bigint | number) {
    this.view.setBigUint64(24, BigInt(value), true);
  }

  // 0x20: u64
  set CallerAvailableAllocationUnits(value: bigint | number) {
    this.view.setBigUint64(32, BigInt(value), true);
  }

  // 0x28: u64
  set CallerPoolUnavailableAllocationUnits(value: bigint | number) {
    this.view.setBigUint64(40, BigInt(value), true);
  }

  // 0x30: u64
  set UsedAllocationUnits(value: bigint | number) {
    this.view.setBigUint64(48, BigInt(value), true);
  }

  // 0x38: u64
  set TotalReservedAllocationUnits(value: bigint | number) {
    this.view.setBigUint64(56, BigInt(value), true);
  }

  // 0x40: u64
  set VolumeStorageReserveAllocationUnits(value: bigint | number) {
    this.view.setBigUint64(64, BigInt(value), true);
  }

  // 0x48: u64
  set AvailableCommittedAllocationUnits(value: bigint | number) {
    this.view.setBigUint64(72, BigInt(value), true);
  }

  // 0x50: u64
  set PoolAvailableAllocationUnits(value: bigint | number) {
    this.view.setBigUint64(80, BigInt(value), true);
  }

  // 0x58: u32
  set SectorsPerAllocationUnit(value: number) {
    this.view.setUint32(88, value, true);
  }

  // 0x5c: u32
  set BytesPerSector(value: number) {
    this.view.setUint32(92, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.WIN32_FILE_ATTRIBUTE_DATA (size: 40)
 */
export interface WIN32_FILE_ATTRIBUTE_DATA {
  /** u32 */
  dwFileAttributes: number;
  /** Windows.Win32.Foundation.FILETIME */
  ftCreationTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.FILETIME */
  ftLastAccessTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.FILETIME */
  ftLastWriteTime: Uint8Array | Deno.PointerValue;
  /** u32 */
  nFileSizeHigh: number;
  /** u32 */
  nFileSizeLow: number;
}

export const sizeofWIN32_FILE_ATTRIBUTE_DATA = 40;

export function allocWIN32_FILE_ATTRIBUTE_DATA(data?: Partial<WIN32_FILE_ATTRIBUTE_DATA>): Uint8Array {
  const buf = new Uint8Array(sizeofWIN32_FILE_ATTRIBUTE_DATA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwFileAttributes !== undefined) view.setUint32(0, Number(data.dwFileAttributes), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.ftCreationTime !== undefined) view.setBigUint64(8, data.ftCreationTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ftCreationTime))), true);
  // 0x10: pointer
  if (data?.ftLastAccessTime !== undefined) view.setBigUint64(16, data.ftLastAccessTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ftLastAccessTime))), true);
  // 0x18: pointer
  if (data?.ftLastWriteTime !== undefined) view.setBigUint64(24, data.ftLastWriteTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ftLastWriteTime))), true);
  // 0x20: u32
  if (data?.nFileSizeHigh !== undefined) view.setUint32(32, Number(data.nFileSizeHigh), true);
  // 0x24: u32
  if (data?.nFileSizeLow !== undefined) view.setUint32(36, Number(data.nFileSizeLow), true);
  return buf;
}

export class WIN32_FILE_ATTRIBUTE_DATAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwFileAttributes(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get ftCreationTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get ftLastAccessTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get ftLastWriteTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: u32
  get nFileSizeHigh(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: u32
  get nFileSizeLow(): number {
    return this.view.getUint32(36, true);
  }

  // 0x00: u32
  set dwFileAttributes(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set ftCreationTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set ftLastAccessTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set ftLastWriteTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: u32
  set nFileSizeHigh(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: u32
  set nFileSizeLow(value: number) {
    this.view.setUint32(36, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.BY_HANDLE_FILE_INFORMATION (size: 56)
 */
export interface BY_HANDLE_FILE_INFORMATION {
  /** u32 */
  dwFileAttributes: number;
  /** Windows.Win32.Foundation.FILETIME */
  ftCreationTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.FILETIME */
  ftLastAccessTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.FILETIME */
  ftLastWriteTime: Uint8Array | Deno.PointerValue;
  /** u32 */
  dwVolumeSerialNumber: number;
  /** u32 */
  nFileSizeHigh: number;
  /** u32 */
  nFileSizeLow: number;
  /** u32 */
  nNumberOfLinks: number;
  /** u32 */
  nFileIndexHigh: number;
  /** u32 */
  nFileIndexLow: number;
}

export const sizeofBY_HANDLE_FILE_INFORMATION = 56;

export function allocBY_HANDLE_FILE_INFORMATION(data?: Partial<BY_HANDLE_FILE_INFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofBY_HANDLE_FILE_INFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwFileAttributes !== undefined) view.setUint32(0, Number(data.dwFileAttributes), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.ftCreationTime !== undefined) view.setBigUint64(8, data.ftCreationTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ftCreationTime))), true);
  // 0x10: pointer
  if (data?.ftLastAccessTime !== undefined) view.setBigUint64(16, data.ftLastAccessTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ftLastAccessTime))), true);
  // 0x18: pointer
  if (data?.ftLastWriteTime !== undefined) view.setBigUint64(24, data.ftLastWriteTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ftLastWriteTime))), true);
  // 0x20: u32
  if (data?.dwVolumeSerialNumber !== undefined) view.setUint32(32, Number(data.dwVolumeSerialNumber), true);
  // 0x24: u32
  if (data?.nFileSizeHigh !== undefined) view.setUint32(36, Number(data.nFileSizeHigh), true);
  // 0x28: u32
  if (data?.nFileSizeLow !== undefined) view.setUint32(40, Number(data.nFileSizeLow), true);
  // 0x2c: u32
  if (data?.nNumberOfLinks !== undefined) view.setUint32(44, Number(data.nNumberOfLinks), true);
  // 0x30: u32
  if (data?.nFileIndexHigh !== undefined) view.setUint32(48, Number(data.nFileIndexHigh), true);
  // 0x34: u32
  if (data?.nFileIndexLow !== undefined) view.setUint32(52, Number(data.nFileIndexLow), true);
  return buf;
}

export class BY_HANDLE_FILE_INFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwFileAttributes(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get ftCreationTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get ftLastAccessTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get ftLastWriteTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: u32
  get dwVolumeSerialNumber(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: u32
  get nFileSizeHigh(): number {
    return this.view.getUint32(36, true);
  }

  // 0x28: u32
  get nFileSizeLow(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: u32
  get nNumberOfLinks(): number {
    return this.view.getUint32(44, true);
  }

  // 0x30: u32
  get nFileIndexHigh(): number {
    return this.view.getUint32(48, true);
  }

  // 0x34: u32
  get nFileIndexLow(): number {
    return this.view.getUint32(52, true);
  }

  // 0x00: u32
  set dwFileAttributes(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set ftCreationTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set ftLastAccessTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set ftLastWriteTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: u32
  set dwVolumeSerialNumber(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: u32
  set nFileSizeHigh(value: number) {
    this.view.setUint32(36, value, true);
  }

  // 0x28: u32
  set nFileSizeLow(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: u32
  set nNumberOfLinks(value: number) {
    this.view.setUint32(44, value, true);
  }

  // 0x30: u32
  set nFileIndexHigh(value: number) {
    this.view.setUint32(48, value, true);
  }

  // 0x34: u32
  set nFileIndexLow(value: number) {
    this.view.setUint32(52, value, true);
  }
}

export type HANDLE = bigint | number;

/**
 * Windows.Win32.Storage.FileSystem.CREATEFILE2_EXTENDED_PARAMETERS (size: 32)
 */
export interface CREATEFILE2_EXTENDED_PARAMETERS {
  /** u32 */
  dwSize: number;
  /** u32 */
  dwFileAttributes: number;
  /** u32 */
  dwFileFlags: number;
  /** u32 */
  dwSecurityQosFlags: number;
  /** ptr */
  lpSecurityAttributes: Deno.PointerValue | Uint8Array;
  /** Windows.Win32.Foundation.HANDLE */
  hTemplateFile: Uint8Array | Deno.PointerValue;
}

export const sizeofCREATEFILE2_EXTENDED_PARAMETERS = 32;

export function allocCREATEFILE2_EXTENDED_PARAMETERS(data?: Partial<CREATEFILE2_EXTENDED_PARAMETERS>): Uint8Array {
  const buf = new Uint8Array(sizeofCREATEFILE2_EXTENDED_PARAMETERS);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwSize !== undefined) view.setUint32(0, Number(data.dwSize), true);
  // 0x04: u32
  if (data?.dwFileAttributes !== undefined) view.setUint32(4, Number(data.dwFileAttributes), true);
  // 0x08: u32
  if (data?.dwFileFlags !== undefined) view.setUint32(8, Number(data.dwFileFlags), true);
  // 0x0c: u32
  if (data?.dwSecurityQosFlags !== undefined) view.setUint32(12, Number(data.dwSecurityQosFlags), true);
  // 0x10: pointer
  if (data?.lpSecurityAttributes !== undefined) view.setBigUint64(16, data.lpSecurityAttributes === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lpSecurityAttributes))), true);
  // 0x18: pointer
  if (data?.hTemplateFile !== undefined) view.setBigUint64(24, data.hTemplateFile === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hTemplateFile))), true);
  return buf;
}

export class CREATEFILE2_EXTENDED_PARAMETERSView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get dwFileAttributes(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get dwFileFlags(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get dwSecurityQosFlags(): number {
    return this.view.getUint32(12, true);
  }

  // 0x10: pointer
  get lpSecurityAttributes(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get hTemplateFile(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set dwFileAttributes(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set dwFileFlags(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set dwSecurityQosFlags(value: number) {
    this.view.setUint32(12, value, true);
  }

  // 0x10: pointer
  set lpSecurityAttributes(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set hTemplateFile(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.WIN32_FIND_STREAM_DATA (size: 16)
 */
export interface WIN32_FIND_STREAM_DATA {
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  StreamSize: Uint8Array | Deno.PointerValue;
  /** array */
  cStreamName: Deno.PointerValue;
}

export const sizeofWIN32_FIND_STREAM_DATA = 16;

export function allocWIN32_FIND_STREAM_DATA(data?: Partial<WIN32_FIND_STREAM_DATA>): Uint8Array {
  const buf = new Uint8Array(sizeofWIN32_FIND_STREAM_DATA);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.StreamSize !== undefined) view.setBigUint64(0, data.StreamSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.StreamSize))), true);
  // 0x08: pointer
  if (data?.cStreamName !== undefined) view.setBigUint64(8, data.cStreamName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.cStreamName))), true);
  return buf;
}

export class WIN32_FIND_STREAM_DATAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get StreamSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get cStreamName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set StreamSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set cStreamName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.VS_FIXEDFILEINFO (size: 56)
 */
export interface VS_FIXEDFILEINFO {
  /** u32 */
  dwSignature: number;
  /** u32 */
  dwStrucVersion: number;
  /** u32 */
  dwFileVersionMS: number;
  /** u32 */
  dwFileVersionLS: number;
  /** u32 */
  dwProductVersionMS: number;
  /** u32 */
  dwProductVersionLS: number;
  /** u32 */
  dwFileFlagsMask: number;
  /** Windows.Win32.Storage.FileSystem.VS_FIXEDFILEINFO_FILE_FLAGS */
  dwFileFlags: VS_FIXEDFILEINFO_FILE_FLAGS;
  /** Windows.Win32.Storage.FileSystem.VS_FIXEDFILEINFO_FILE_OS */
  dwFileOS: VS_FIXEDFILEINFO_FILE_OS;
  /** Windows.Win32.Storage.FileSystem.VS_FIXEDFILEINFO_FILE_TYPE */
  dwFileType: VS_FIXEDFILEINFO_FILE_TYPE;
  /** Windows.Win32.Storage.FileSystem.VS_FIXEDFILEINFO_FILE_SUBTYPE */
  dwFileSubtype: VS_FIXEDFILEINFO_FILE_SUBTYPE;
  /** u32 */
  dwFileDateMS: number;
  /** u32 */
  dwFileDateLS: number;
}

export const sizeofVS_FIXEDFILEINFO = 56;

export function allocVS_FIXEDFILEINFO(data?: Partial<VS_FIXEDFILEINFO>): Uint8Array {
  const buf = new Uint8Array(sizeofVS_FIXEDFILEINFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwSignature !== undefined) view.setUint32(0, Number(data.dwSignature), true);
  // 0x04: u32
  if (data?.dwStrucVersion !== undefined) view.setUint32(4, Number(data.dwStrucVersion), true);
  // 0x08: u32
  if (data?.dwFileVersionMS !== undefined) view.setUint32(8, Number(data.dwFileVersionMS), true);
  // 0x0c: u32
  if (data?.dwFileVersionLS !== undefined) view.setUint32(12, Number(data.dwFileVersionLS), true);
  // 0x10: u32
  if (data?.dwProductVersionMS !== undefined) view.setUint32(16, Number(data.dwProductVersionMS), true);
  // 0x14: u32
  if (data?.dwProductVersionLS !== undefined) view.setUint32(20, Number(data.dwProductVersionLS), true);
  // 0x18: u32
  if (data?.dwFileFlagsMask !== undefined) view.setUint32(24, Number(data.dwFileFlagsMask), true);
  // 0x1c: u32
  if (data?.dwFileFlags !== undefined) view.setUint32(28, Number(data.dwFileFlags), true);
  // 0x20: i32
  if (data?.dwFileOS !== undefined) view.setInt32(32, Number(data.dwFileOS), true);
  // 0x24: i32
  if (data?.dwFileType !== undefined) view.setInt32(36, Number(data.dwFileType), true);
  // 0x28: i32
  if (data?.dwFileSubtype !== undefined) view.setInt32(40, Number(data.dwFileSubtype), true);
  // 0x2c: u32
  if (data?.dwFileDateMS !== undefined) view.setUint32(44, Number(data.dwFileDateMS), true);
  // 0x30: u32
  if (data?.dwFileDateLS !== undefined) view.setUint32(48, Number(data.dwFileDateLS), true);
  // 0x34: pad4
  return buf;
}

export class VS_FIXEDFILEINFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwSignature(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get dwStrucVersion(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get dwFileVersionMS(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get dwFileVersionLS(): number {
    return this.view.getUint32(12, true);
  }

  // 0x10: u32
  get dwProductVersionMS(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get dwProductVersionLS(): number {
    return this.view.getUint32(20, true);
  }

  // 0x18: u32
  get dwFileFlagsMask(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: u32
  get dwFileFlags(): number {
    return this.view.getUint32(28, true);
  }

  // 0x20: i32
  get dwFileOS(): number {
    return this.view.getInt32(32, true);
  }

  // 0x24: i32
  get dwFileType(): number {
    return this.view.getInt32(36, true);
  }

  // 0x28: i32
  get dwFileSubtype(): number {
    return this.view.getInt32(40, true);
  }

  // 0x2c: u32
  get dwFileDateMS(): number {
    return this.view.getUint32(44, true);
  }

  // 0x30: u32
  get dwFileDateLS(): number {
    return this.view.getUint32(48, true);
  }

  // 0x34: pad4

  // 0x00: u32
  set dwSignature(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set dwStrucVersion(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set dwFileVersionMS(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set dwFileVersionLS(value: number) {
    this.view.setUint32(12, value, true);
  }

  // 0x10: u32
  set dwProductVersionMS(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set dwProductVersionLS(value: number) {
    this.view.setUint32(20, value, true);
  }

  // 0x18: u32
  set dwFileFlagsMask(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: u32
  set dwFileFlags(value: number) {
    this.view.setUint32(28, value, true);
  }

  // 0x20: i32
  set dwFileOS(value: number) {
    this.view.setInt32(32, value, true);
  }

  // 0x24: i32
  set dwFileType(value: number) {
    this.view.setInt32(36, value, true);
  }

  // 0x28: i32
  set dwFileSubtype(value: number) {
    this.view.setInt32(40, value, true);
  }

  // 0x2c: u32
  set dwFileDateMS(value: number) {
    this.view.setUint32(44, value, true);
  }

  // 0x30: u32
  set dwFileDateLS(value: number) {
    this.view.setUint32(48, value, true);
  }

  // 0x34: pad4
}

export type BOOL = number;

/**
 * Windows.Win32.Storage.FileSystem.NTMS_ASYNC_IO (size: 48)
 */
export interface NTMS_ASYNC_IO {
  /** System.Guid */
  OperationId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  EventId: Uint8Array | Deno.PointerValue;
  /** u32 */
  dwOperationType: number;
  /** u32 */
  dwResult: number;
  /** u32 */
  dwAsyncState: number;
  /** Windows.Win32.Foundation.HANDLE */
  hEvent: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.BOOL */
  bOnStateChange: boolean;
}

export const sizeofNTMS_ASYNC_IO = 48;

export function allocNTMS_ASYNC_IO(data?: Partial<NTMS_ASYNC_IO>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_ASYNC_IO);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.OperationId !== undefined) view.setBigUint64(0, data.OperationId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.OperationId))), true);
  // 0x08: pointer
  if (data?.EventId !== undefined) view.setBigUint64(8, data.EventId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.EventId))), true);
  // 0x10: u32
  if (data?.dwOperationType !== undefined) view.setUint32(16, Number(data.dwOperationType), true);
  // 0x14: u32
  if (data?.dwResult !== undefined) view.setUint32(20, Number(data.dwResult), true);
  // 0x18: u32
  if (data?.dwAsyncState !== undefined) view.setUint32(24, Number(data.dwAsyncState), true);
  // 0x1c: pad4
  // 0x20: pointer
  if (data?.hEvent !== undefined) view.setBigUint64(32, data.hEvent === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hEvent))), true);
  // 0x28: i32
  if (data?.bOnStateChange !== undefined) view.setInt32(40, Number(data.bOnStateChange), true);
  // 0x2c: pad4
  return buf;
}

export class NTMS_ASYNC_IOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get OperationId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get EventId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get dwOperationType(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get dwResult(): number {
    return this.view.getUint32(20, true);
  }

  // 0x18: u32
  get dwAsyncState(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: pad4

  // 0x20: pointer
  get hEvent(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: i32
  get bOnStateChange(): number {
    return this.view.getInt32(40, true);
  }

  // 0x2c: pad4

  // 0x00: pointer
  set OperationId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set EventId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set dwOperationType(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set dwResult(value: number) {
    this.view.setUint32(20, value, true);
  }

  // 0x18: u32
  set dwAsyncState(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: pad4

  // 0x20: pointer
  set hEvent(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: i32
  set bOnStateChange(value: number) {
    this.view.setInt32(40, value, true);
  }

  // 0x2c: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_MOUNT_INFORMATION (size: 16)
 */
export interface NTMS_MOUNT_INFORMATION {
  /** u32 */
  dwSize: number;
  /** ptr */
  lpReserved: Deno.PointerValue | Uint8Array;
}

export const sizeofNTMS_MOUNT_INFORMATION = 16;

export function allocNTMS_MOUNT_INFORMATION(data?: Partial<NTMS_MOUNT_INFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_MOUNT_INFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwSize !== undefined) view.setUint32(0, Number(data.dwSize), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.lpReserved !== undefined) view.setBigUint64(8, data.lpReserved === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lpReserved))), true);
  return buf;
}

export class NTMS_MOUNT_INFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get lpReserved(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set lpReserved(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_ALLOCATION_INFORMATION (size: 24)
 */
export interface NTMS_ALLOCATION_INFORMATION {
  /** u32 */
  dwSize: number;
  /** ptr */
  lpReserved: Deno.PointerValue | Uint8Array;
  /** System.Guid */
  AllocatedFrom: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_ALLOCATION_INFORMATION = 24;

export function allocNTMS_ALLOCATION_INFORMATION(data?: Partial<NTMS_ALLOCATION_INFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_ALLOCATION_INFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwSize !== undefined) view.setUint32(0, Number(data.dwSize), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.lpReserved !== undefined) view.setBigUint64(8, data.lpReserved === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.lpReserved))), true);
  // 0x10: pointer
  if (data?.AllocatedFrom !== undefined) view.setBigUint64(16, data.AllocatedFrom === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.AllocatedFrom))), true);
  return buf;
}

export class NTMS_ALLOCATION_INFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get lpReserved(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get AllocatedFrom(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set lpReserved(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set AllocatedFrom(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Foundation.SYSTEMTIME (size: 16)
 */
export interface SYSTEMTIME {
  /** u16 */
  wYear: number;
  /** u16 */
  wMonth: number;
  /** u16 */
  wDayOfWeek: number;
  /** u16 */
  wDay: number;
  /** u16 */
  wHour: number;
  /** u16 */
  wMinute: number;
  /** u16 */
  wSecond: number;
  /** u16 */
  wMilliseconds: number;
}

export const sizeofSYSTEMTIME = 16;

export function allocSYSTEMTIME(data?: Partial<SYSTEMTIME>): Uint8Array {
  const buf = new Uint8Array(sizeofSYSTEMTIME);
  const view = new DataView(buf.buffer);
  // 0x00: u16
  if (data?.wYear !== undefined) view.setUint16(0, Number(data.wYear), true);
  // 0x02: u16
  if (data?.wMonth !== undefined) view.setUint16(2, Number(data.wMonth), true);
  // 0x04: u16
  if (data?.wDayOfWeek !== undefined) view.setUint16(4, Number(data.wDayOfWeek), true);
  // 0x06: u16
  if (data?.wDay !== undefined) view.setUint16(6, Number(data.wDay), true);
  // 0x08: u16
  if (data?.wHour !== undefined) view.setUint16(8, Number(data.wHour), true);
  // 0x0a: u16
  if (data?.wMinute !== undefined) view.setUint16(10, Number(data.wMinute), true);
  // 0x0c: u16
  if (data?.wSecond !== undefined) view.setUint16(12, Number(data.wSecond), true);
  // 0x0e: u16
  if (data?.wMilliseconds !== undefined) view.setUint16(14, Number(data.wMilliseconds), true);
  return buf;
}

export class SYSTEMTIMEView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u16
  get wYear(): number {
    return this.view.getUint16(0, true);
  }

  // 0x02: u16
  get wMonth(): number {
    return this.view.getUint16(2, true);
  }

  // 0x04: u16
  get wDayOfWeek(): number {
    return this.view.getUint16(4, true);
  }

  // 0x06: u16
  get wDay(): number {
    return this.view.getUint16(6, true);
  }

  // 0x08: u16
  get wHour(): number {
    return this.view.getUint16(8, true);
  }

  // 0x0a: u16
  get wMinute(): number {
    return this.view.getUint16(10, true);
  }

  // 0x0c: u16
  get wSecond(): number {
    return this.view.getUint16(12, true);
  }

  // 0x0e: u16
  get wMilliseconds(): number {
    return this.view.getUint16(14, true);
  }

  // 0x00: u16
  set wYear(value: number) {
    this.view.setUint16(0, value, true);
  }

  // 0x02: u16
  set wMonth(value: number) {
    this.view.setUint16(2, value, true);
  }

  // 0x04: u16
  set wDayOfWeek(value: number) {
    this.view.setUint16(4, value, true);
  }

  // 0x06: u16
  set wDay(value: number) {
    this.view.setUint16(6, value, true);
  }

  // 0x08: u16
  set wHour(value: number) {
    this.view.setUint16(8, value, true);
  }

  // 0x0a: u16
  set wMinute(value: number) {
    this.view.setUint16(10, value, true);
  }

  // 0x0c: u16
  set wSecond(value: number) {
    this.view.setUint16(12, value, true);
  }

  // 0x0e: u16
  set wMilliseconds(value: number) {
    this.view.setUint16(14, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_DRIVEINFORMATIONA (size: 96)
 */
export interface NTMS_DRIVEINFORMATIONA {
  /** u32 */
  Number: number;
  /** Windows.Win32.Storage.FileSystem.NtmsDriveState */
  State: NtmsDriveState;
  /** System.Guid */
  DriveType: Uint8Array | Deno.PointerValue;
  /** array */
  szDeviceName: Deno.PointerValue;
  /** array */
  szSerialNumber: Deno.PointerValue;
  /** array */
  szRevision: Deno.PointerValue;
  /** u16 */
  ScsiPort: number;
  /** u16 */
  ScsiBus: number;
  /** u16 */
  ScsiTarget: number;
  /** u16 */
  ScsiLun: number;
  /** u32 */
  dwMountCount: number;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  LastCleanedTs: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  SavedPartitionId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  Library: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  Reserved: Uint8Array | Deno.PointerValue;
  /** u32 */
  dwDeferDismountDelay: number;
}

export const sizeofNTMS_DRIVEINFORMATIONA = 96;

export function allocNTMS_DRIVEINFORMATIONA(data?: Partial<NTMS_DRIVEINFORMATIONA>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_DRIVEINFORMATIONA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Number !== undefined) view.setUint32(0, Number(data.Number), true);
  // 0x04: i32
  if (data?.State !== undefined) view.setInt32(4, Number(data.State), true);
  // 0x08: pointer
  if (data?.DriveType !== undefined) view.setBigUint64(8, data.DriveType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.DriveType))), true);
  // 0x10: pointer
  if (data?.szDeviceName !== undefined) view.setBigUint64(16, data.szDeviceName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szDeviceName))), true);
  // 0x18: pointer
  if (data?.szSerialNumber !== undefined) view.setBigUint64(24, data.szSerialNumber === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szSerialNumber))), true);
  // 0x20: pointer
  if (data?.szRevision !== undefined) view.setBigUint64(32, data.szRevision === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szRevision))), true);
  // 0x28: u16
  if (data?.ScsiPort !== undefined) view.setUint16(40, Number(data.ScsiPort), true);
  // 0x2a: u16
  if (data?.ScsiBus !== undefined) view.setUint16(42, Number(data.ScsiBus), true);
  // 0x2c: u16
  if (data?.ScsiTarget !== undefined) view.setUint16(44, Number(data.ScsiTarget), true);
  // 0x2e: u16
  if (data?.ScsiLun !== undefined) view.setUint16(46, Number(data.ScsiLun), true);
  // 0x30: u32
  if (data?.dwMountCount !== undefined) view.setUint32(48, Number(data.dwMountCount), true);
  // 0x34: pad4
  // 0x38: pointer
  if (data?.LastCleanedTs !== undefined) view.setBigUint64(56, data.LastCleanedTs === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LastCleanedTs))), true);
  // 0x40: pointer
  if (data?.SavedPartitionId !== undefined) view.setBigUint64(64, data.SavedPartitionId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.SavedPartitionId))), true);
  // 0x48: pointer
  if (data?.Library !== undefined) view.setBigUint64(72, data.Library === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Library))), true);
  // 0x50: pointer
  if (data?.Reserved !== undefined) view.setBigUint64(80, data.Reserved === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Reserved))), true);
  // 0x58: u32
  if (data?.dwDeferDismountDelay !== undefined) view.setUint32(88, Number(data.dwDeferDismountDelay), true);
  // 0x5c: pad4
  return buf;
}

export class NTMS_DRIVEINFORMATIONAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Number(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get State(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: pointer
  get DriveType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get szDeviceName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get szSerialNumber(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get szRevision(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: u16
  get ScsiPort(): number {
    return this.view.getUint16(40, true);
  }

  // 0x2a: u16
  get ScsiBus(): number {
    return this.view.getUint16(42, true);
  }

  // 0x2c: u16
  get ScsiTarget(): number {
    return this.view.getUint16(44, true);
  }

  // 0x2e: u16
  get ScsiLun(): number {
    return this.view.getUint16(46, true);
  }

  // 0x30: u32
  get dwMountCount(): number {
    return this.view.getUint32(48, true);
  }

  // 0x34: pad4

  // 0x38: pointer
  get LastCleanedTs(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: pointer
  get SavedPartitionId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get Library(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: pointer
  get Reserved(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(80, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x58: u32
  get dwDeferDismountDelay(): number {
    return this.view.getUint32(88, true);
  }

  // 0x5c: pad4

  // 0x00: u32
  set Number(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set State(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: pointer
  set DriveType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set szDeviceName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set szSerialNumber(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set szRevision(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: u16
  set ScsiPort(value: number) {
    this.view.setUint16(40, value, true);
  }

  // 0x2a: u16
  set ScsiBus(value: number) {
    this.view.setUint16(42, value, true);
  }

  // 0x2c: u16
  set ScsiTarget(value: number) {
    this.view.setUint16(44, value, true);
  }

  // 0x2e: u16
  set ScsiLun(value: number) {
    this.view.setUint16(46, value, true);
  }

  // 0x30: u32
  set dwMountCount(value: number) {
    this.view.setUint32(48, value, true);
  }

  // 0x34: pad4

  // 0x38: pointer
  set LastCleanedTs(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: pointer
  set SavedPartitionId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set Library(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: pointer
  set Reserved(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(80, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x58: u32
  set dwDeferDismountDelay(value: number) {
    this.view.setUint32(88, value, true);
  }

  // 0x5c: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_DRIVEINFORMATIONW (size: 96)
 */
export interface NTMS_DRIVEINFORMATIONW {
  /** u32 */
  Number: number;
  /** Windows.Win32.Storage.FileSystem.NtmsDriveState */
  State: NtmsDriveState;
  /** System.Guid */
  DriveType: Uint8Array | Deno.PointerValue;
  /** array */
  szDeviceName: Deno.PointerValue;
  /** array */
  szSerialNumber: Deno.PointerValue;
  /** array */
  szRevision: Deno.PointerValue;
  /** u16 */
  ScsiPort: number;
  /** u16 */
  ScsiBus: number;
  /** u16 */
  ScsiTarget: number;
  /** u16 */
  ScsiLun: number;
  /** u32 */
  dwMountCount: number;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  LastCleanedTs: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  SavedPartitionId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  Library: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  Reserved: Uint8Array | Deno.PointerValue;
  /** u32 */
  dwDeferDismountDelay: number;
}

export const sizeofNTMS_DRIVEINFORMATIONW = 96;

export function allocNTMS_DRIVEINFORMATIONW(data?: Partial<NTMS_DRIVEINFORMATIONW>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_DRIVEINFORMATIONW);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Number !== undefined) view.setUint32(0, Number(data.Number), true);
  // 0x04: i32
  if (data?.State !== undefined) view.setInt32(4, Number(data.State), true);
  // 0x08: pointer
  if (data?.DriveType !== undefined) view.setBigUint64(8, data.DriveType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.DriveType))), true);
  // 0x10: pointer
  if (data?.szDeviceName !== undefined) view.setBigUint64(16, data.szDeviceName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szDeviceName))), true);
  // 0x18: pointer
  if (data?.szSerialNumber !== undefined) view.setBigUint64(24, data.szSerialNumber === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szSerialNumber))), true);
  // 0x20: pointer
  if (data?.szRevision !== undefined) view.setBigUint64(32, data.szRevision === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szRevision))), true);
  // 0x28: u16
  if (data?.ScsiPort !== undefined) view.setUint16(40, Number(data.ScsiPort), true);
  // 0x2a: u16
  if (data?.ScsiBus !== undefined) view.setUint16(42, Number(data.ScsiBus), true);
  // 0x2c: u16
  if (data?.ScsiTarget !== undefined) view.setUint16(44, Number(data.ScsiTarget), true);
  // 0x2e: u16
  if (data?.ScsiLun !== undefined) view.setUint16(46, Number(data.ScsiLun), true);
  // 0x30: u32
  if (data?.dwMountCount !== undefined) view.setUint32(48, Number(data.dwMountCount), true);
  // 0x34: pad4
  // 0x38: pointer
  if (data?.LastCleanedTs !== undefined) view.setBigUint64(56, data.LastCleanedTs === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LastCleanedTs))), true);
  // 0x40: pointer
  if (data?.SavedPartitionId !== undefined) view.setBigUint64(64, data.SavedPartitionId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.SavedPartitionId))), true);
  // 0x48: pointer
  if (data?.Library !== undefined) view.setBigUint64(72, data.Library === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Library))), true);
  // 0x50: pointer
  if (data?.Reserved !== undefined) view.setBigUint64(80, data.Reserved === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Reserved))), true);
  // 0x58: u32
  if (data?.dwDeferDismountDelay !== undefined) view.setUint32(88, Number(data.dwDeferDismountDelay), true);
  // 0x5c: pad4
  return buf;
}

export class NTMS_DRIVEINFORMATIONWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Number(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get State(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: pointer
  get DriveType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get szDeviceName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get szSerialNumber(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get szRevision(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: u16
  get ScsiPort(): number {
    return this.view.getUint16(40, true);
  }

  // 0x2a: u16
  get ScsiBus(): number {
    return this.view.getUint16(42, true);
  }

  // 0x2c: u16
  get ScsiTarget(): number {
    return this.view.getUint16(44, true);
  }

  // 0x2e: u16
  get ScsiLun(): number {
    return this.view.getUint16(46, true);
  }

  // 0x30: u32
  get dwMountCount(): number {
    return this.view.getUint32(48, true);
  }

  // 0x34: pad4

  // 0x38: pointer
  get LastCleanedTs(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: pointer
  get SavedPartitionId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get Library(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: pointer
  get Reserved(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(80, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x58: u32
  get dwDeferDismountDelay(): number {
    return this.view.getUint32(88, true);
  }

  // 0x5c: pad4

  // 0x00: u32
  set Number(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set State(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: pointer
  set DriveType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set szDeviceName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set szSerialNumber(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set szRevision(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: u16
  set ScsiPort(value: number) {
    this.view.setUint16(40, value, true);
  }

  // 0x2a: u16
  set ScsiBus(value: number) {
    this.view.setUint16(42, value, true);
  }

  // 0x2c: u16
  set ScsiTarget(value: number) {
    this.view.setUint16(44, value, true);
  }

  // 0x2e: u16
  set ScsiLun(value: number) {
    this.view.setUint16(46, value, true);
  }

  // 0x30: u32
  set dwMountCount(value: number) {
    this.view.setUint32(48, value, true);
  }

  // 0x34: pad4

  // 0x38: pointer
  set LastCleanedTs(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: pointer
  set SavedPartitionId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set Library(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: pointer
  set Reserved(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(80, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x58: u32
  set dwDeferDismountDelay(value: number) {
    this.view.setUint32(88, value, true);
  }

  // 0x5c: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_LIBRARYINFORMATION (size: 112)
 */
export interface NTMS_LIBRARYINFORMATION {
  /** Windows.Win32.Storage.FileSystem.NtmsLibraryType */
  LibraryType: NtmsLibraryType;
  /** System.Guid */
  CleanerSlot: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  CleanerSlotDefault: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.BOOL */
  LibrarySupportsDriveCleaning: boolean;
  /** Windows.Win32.Foundation.BOOL */
  BarCodeReaderInstalled: boolean;
  /** Windows.Win32.Storage.FileSystem.NtmsInventoryMethod */
  InventoryMethod: NtmsInventoryMethod;
  /** u32 */
  dwCleanerUsesRemaining: number;
  /** u32 */
  FirstDriveNumber: number;
  /** u32 */
  dwNumberOfDrives: number;
  /** u32 */
  FirstSlotNumber: number;
  /** u32 */
  dwNumberOfSlots: number;
  /** u32 */
  FirstDoorNumber: number;
  /** u32 */
  dwNumberOfDoors: number;
  /** u32 */
  FirstPortNumber: number;
  /** u32 */
  dwNumberOfPorts: number;
  /** u32 */
  FirstChangerNumber: number;
  /** u32 */
  dwNumberOfChangers: number;
  /** u32 */
  dwNumberOfMedia: number;
  /** u32 */
  dwNumberOfMediaTypes: number;
  /** u32 */
  dwNumberOfLibRequests: number;
  /** System.Guid */
  Reserved: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.BOOL */
  AutoRecovery: boolean;
  /** Windows.Win32.Storage.FileSystem.NtmsLibraryFlags */
  dwFlags: NtmsLibraryFlags;
}

export const sizeofNTMS_LIBRARYINFORMATION = 112;

export function allocNTMS_LIBRARYINFORMATION(data?: Partial<NTMS_LIBRARYINFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_LIBRARYINFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.LibraryType !== undefined) view.setInt32(0, Number(data.LibraryType), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.CleanerSlot !== undefined) view.setBigUint64(8, data.CleanerSlot === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CleanerSlot))), true);
  // 0x10: pointer
  if (data?.CleanerSlotDefault !== undefined) view.setBigUint64(16, data.CleanerSlotDefault === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CleanerSlotDefault))), true);
  // 0x18: i32
  if (data?.LibrarySupportsDriveCleaning !== undefined) view.setInt32(24, Number(data.LibrarySupportsDriveCleaning), true);
  // 0x1c: i32
  if (data?.BarCodeReaderInstalled !== undefined) view.setInt32(28, Number(data.BarCodeReaderInstalled), true);
  // 0x20: i32
  if (data?.InventoryMethod !== undefined) view.setInt32(32, Number(data.InventoryMethod), true);
  // 0x24: u32
  if (data?.dwCleanerUsesRemaining !== undefined) view.setUint32(36, Number(data.dwCleanerUsesRemaining), true);
  // 0x28: u32
  if (data?.FirstDriveNumber !== undefined) view.setUint32(40, Number(data.FirstDriveNumber), true);
  // 0x2c: u32
  if (data?.dwNumberOfDrives !== undefined) view.setUint32(44, Number(data.dwNumberOfDrives), true);
  // 0x30: u32
  if (data?.FirstSlotNumber !== undefined) view.setUint32(48, Number(data.FirstSlotNumber), true);
  // 0x34: u32
  if (data?.dwNumberOfSlots !== undefined) view.setUint32(52, Number(data.dwNumberOfSlots), true);
  // 0x38: u32
  if (data?.FirstDoorNumber !== undefined) view.setUint32(56, Number(data.FirstDoorNumber), true);
  // 0x3c: u32
  if (data?.dwNumberOfDoors !== undefined) view.setUint32(60, Number(data.dwNumberOfDoors), true);
  // 0x40: u32
  if (data?.FirstPortNumber !== undefined) view.setUint32(64, Number(data.FirstPortNumber), true);
  // 0x44: u32
  if (data?.dwNumberOfPorts !== undefined) view.setUint32(68, Number(data.dwNumberOfPorts), true);
  // 0x48: u32
  if (data?.FirstChangerNumber !== undefined) view.setUint32(72, Number(data.FirstChangerNumber), true);
  // 0x4c: u32
  if (data?.dwNumberOfChangers !== undefined) view.setUint32(76, Number(data.dwNumberOfChangers), true);
  // 0x50: u32
  if (data?.dwNumberOfMedia !== undefined) view.setUint32(80, Number(data.dwNumberOfMedia), true);
  // 0x54: u32
  if (data?.dwNumberOfMediaTypes !== undefined) view.setUint32(84, Number(data.dwNumberOfMediaTypes), true);
  // 0x58: u32
  if (data?.dwNumberOfLibRequests !== undefined) view.setUint32(88, Number(data.dwNumberOfLibRequests), true);
  // 0x5c: pad4
  // 0x60: pointer
  if (data?.Reserved !== undefined) view.setBigUint64(96, data.Reserved === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Reserved))), true);
  // 0x68: i32
  if (data?.AutoRecovery !== undefined) view.setInt32(104, Number(data.AutoRecovery), true);
  // 0x6c: i32
  if (data?.dwFlags !== undefined) view.setInt32(108, Number(data.dwFlags), true);
  return buf;
}

export class NTMS_LIBRARYINFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get LibraryType(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get CleanerSlot(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get CleanerSlotDefault(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: i32
  get LibrarySupportsDriveCleaning(): number {
    return this.view.getInt32(24, true);
  }

  // 0x1c: i32
  get BarCodeReaderInstalled(): number {
    return this.view.getInt32(28, true);
  }

  // 0x20: i32
  get InventoryMethod(): number {
    return this.view.getInt32(32, true);
  }

  // 0x24: u32
  get dwCleanerUsesRemaining(): number {
    return this.view.getUint32(36, true);
  }

  // 0x28: u32
  get FirstDriveNumber(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: u32
  get dwNumberOfDrives(): number {
    return this.view.getUint32(44, true);
  }

  // 0x30: u32
  get FirstSlotNumber(): number {
    return this.view.getUint32(48, true);
  }

  // 0x34: u32
  get dwNumberOfSlots(): number {
    return this.view.getUint32(52, true);
  }

  // 0x38: u32
  get FirstDoorNumber(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: u32
  get dwNumberOfDoors(): number {
    return this.view.getUint32(60, true);
  }

  // 0x40: u32
  get FirstPortNumber(): number {
    return this.view.getUint32(64, true);
  }

  // 0x44: u32
  get dwNumberOfPorts(): number {
    return this.view.getUint32(68, true);
  }

  // 0x48: u32
  get FirstChangerNumber(): number {
    return this.view.getUint32(72, true);
  }

  // 0x4c: u32
  get dwNumberOfChangers(): number {
    return this.view.getUint32(76, true);
  }

  // 0x50: u32
  get dwNumberOfMedia(): number {
    return this.view.getUint32(80, true);
  }

  // 0x54: u32
  get dwNumberOfMediaTypes(): number {
    return this.view.getUint32(84, true);
  }

  // 0x58: u32
  get dwNumberOfLibRequests(): number {
    return this.view.getUint32(88, true);
  }

  // 0x5c: pad4

  // 0x60: pointer
  get Reserved(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(96, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x68: i32
  get AutoRecovery(): number {
    return this.view.getInt32(104, true);
  }

  // 0x6c: i32
  get dwFlags(): number {
    return this.view.getInt32(108, true);
  }

  // 0x00: i32
  set LibraryType(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set CleanerSlot(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set CleanerSlotDefault(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: i32
  set LibrarySupportsDriveCleaning(value: number) {
    this.view.setInt32(24, value, true);
  }

  // 0x1c: i32
  set BarCodeReaderInstalled(value: number) {
    this.view.setInt32(28, value, true);
  }

  // 0x20: i32
  set InventoryMethod(value: number) {
    this.view.setInt32(32, value, true);
  }

  // 0x24: u32
  set dwCleanerUsesRemaining(value: number) {
    this.view.setUint32(36, value, true);
  }

  // 0x28: u32
  set FirstDriveNumber(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: u32
  set dwNumberOfDrives(value: number) {
    this.view.setUint32(44, value, true);
  }

  // 0x30: u32
  set FirstSlotNumber(value: number) {
    this.view.setUint32(48, value, true);
  }

  // 0x34: u32
  set dwNumberOfSlots(value: number) {
    this.view.setUint32(52, value, true);
  }

  // 0x38: u32
  set FirstDoorNumber(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: u32
  set dwNumberOfDoors(value: number) {
    this.view.setUint32(60, value, true);
  }

  // 0x40: u32
  set FirstPortNumber(value: number) {
    this.view.setUint32(64, value, true);
  }

  // 0x44: u32
  set dwNumberOfPorts(value: number) {
    this.view.setUint32(68, value, true);
  }

  // 0x48: u32
  set FirstChangerNumber(value: number) {
    this.view.setUint32(72, value, true);
  }

  // 0x4c: u32
  set dwNumberOfChangers(value: number) {
    this.view.setUint32(76, value, true);
  }

  // 0x50: u32
  set dwNumberOfMedia(value: number) {
    this.view.setUint32(80, value, true);
  }

  // 0x54: u32
  set dwNumberOfMediaTypes(value: number) {
    this.view.setUint32(84, value, true);
  }

  // 0x58: u32
  set dwNumberOfLibRequests(value: number) {
    this.view.setUint32(88, value, true);
  }

  // 0x5c: pad4

  // 0x60: pointer
  set Reserved(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(96, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x68: i32
  set AutoRecovery(value: number) {
    this.view.setInt32(104, value, true);
  }

  // 0x6c: i32
  set dwFlags(value: number) {
    this.view.setInt32(108, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_CHANGERINFORMATIONA (size: 56)
 */
export interface NTMS_CHANGERINFORMATIONA {
  /** u32 */
  Number: number;
  /** System.Guid */
  ChangerType: Uint8Array | Deno.PointerValue;
  /** array */
  szSerialNumber: Deno.PointerValue;
  /** array */
  szRevision: Deno.PointerValue;
  /** array */
  szDeviceName: Deno.PointerValue;
  /** u16 */
  ScsiPort: number;
  /** u16 */
  ScsiBus: number;
  /** u16 */
  ScsiTarget: number;
  /** u16 */
  ScsiLun: number;
  /** System.Guid */
  Library: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_CHANGERINFORMATIONA = 56;

export function allocNTMS_CHANGERINFORMATIONA(data?: Partial<NTMS_CHANGERINFORMATIONA>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_CHANGERINFORMATIONA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Number !== undefined) view.setUint32(0, Number(data.Number), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.ChangerType !== undefined) view.setBigUint64(8, data.ChangerType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ChangerType))), true);
  // 0x10: pointer
  if (data?.szSerialNumber !== undefined) view.setBigUint64(16, data.szSerialNumber === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szSerialNumber))), true);
  // 0x18: pointer
  if (data?.szRevision !== undefined) view.setBigUint64(24, data.szRevision === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szRevision))), true);
  // 0x20: pointer
  if (data?.szDeviceName !== undefined) view.setBigUint64(32, data.szDeviceName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szDeviceName))), true);
  // 0x28: u16
  if (data?.ScsiPort !== undefined) view.setUint16(40, Number(data.ScsiPort), true);
  // 0x2a: u16
  if (data?.ScsiBus !== undefined) view.setUint16(42, Number(data.ScsiBus), true);
  // 0x2c: u16
  if (data?.ScsiTarget !== undefined) view.setUint16(44, Number(data.ScsiTarget), true);
  // 0x2e: u16
  if (data?.ScsiLun !== undefined) view.setUint16(46, Number(data.ScsiLun), true);
  // 0x30: pointer
  if (data?.Library !== undefined) view.setBigUint64(48, data.Library === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Library))), true);
  return buf;
}

export class NTMS_CHANGERINFORMATIONAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Number(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get ChangerType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get szSerialNumber(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get szRevision(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get szDeviceName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: u16
  get ScsiPort(): number {
    return this.view.getUint16(40, true);
  }

  // 0x2a: u16
  get ScsiBus(): number {
    return this.view.getUint16(42, true);
  }

  // 0x2c: u16
  get ScsiTarget(): number {
    return this.view.getUint16(44, true);
  }

  // 0x2e: u16
  get ScsiLun(): number {
    return this.view.getUint16(46, true);
  }

  // 0x30: pointer
  get Library(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set Number(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set ChangerType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set szSerialNumber(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set szRevision(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set szDeviceName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: u16
  set ScsiPort(value: number) {
    this.view.setUint16(40, value, true);
  }

  // 0x2a: u16
  set ScsiBus(value: number) {
    this.view.setUint16(42, value, true);
  }

  // 0x2c: u16
  set ScsiTarget(value: number) {
    this.view.setUint16(44, value, true);
  }

  // 0x2e: u16
  set ScsiLun(value: number) {
    this.view.setUint16(46, value, true);
  }

  // 0x30: pointer
  set Library(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_CHANGERINFORMATIONW (size: 56)
 */
export interface NTMS_CHANGERINFORMATIONW {
  /** u32 */
  Number: number;
  /** System.Guid */
  ChangerType: Uint8Array | Deno.PointerValue;
  /** array */
  szSerialNumber: Deno.PointerValue;
  /** array */
  szRevision: Deno.PointerValue;
  /** array */
  szDeviceName: Deno.PointerValue;
  /** u16 */
  ScsiPort: number;
  /** u16 */
  ScsiBus: number;
  /** u16 */
  ScsiTarget: number;
  /** u16 */
  ScsiLun: number;
  /** System.Guid */
  Library: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_CHANGERINFORMATIONW = 56;

export function allocNTMS_CHANGERINFORMATIONW(data?: Partial<NTMS_CHANGERINFORMATIONW>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_CHANGERINFORMATIONW);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Number !== undefined) view.setUint32(0, Number(data.Number), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.ChangerType !== undefined) view.setBigUint64(8, data.ChangerType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ChangerType))), true);
  // 0x10: pointer
  if (data?.szSerialNumber !== undefined) view.setBigUint64(16, data.szSerialNumber === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szSerialNumber))), true);
  // 0x18: pointer
  if (data?.szRevision !== undefined) view.setBigUint64(24, data.szRevision === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szRevision))), true);
  // 0x20: pointer
  if (data?.szDeviceName !== undefined) view.setBigUint64(32, data.szDeviceName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szDeviceName))), true);
  // 0x28: u16
  if (data?.ScsiPort !== undefined) view.setUint16(40, Number(data.ScsiPort), true);
  // 0x2a: u16
  if (data?.ScsiBus !== undefined) view.setUint16(42, Number(data.ScsiBus), true);
  // 0x2c: u16
  if (data?.ScsiTarget !== undefined) view.setUint16(44, Number(data.ScsiTarget), true);
  // 0x2e: u16
  if (data?.ScsiLun !== undefined) view.setUint16(46, Number(data.ScsiLun), true);
  // 0x30: pointer
  if (data?.Library !== undefined) view.setBigUint64(48, data.Library === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Library))), true);
  return buf;
}

export class NTMS_CHANGERINFORMATIONWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Number(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get ChangerType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get szSerialNumber(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get szRevision(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get szDeviceName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: u16
  get ScsiPort(): number {
    return this.view.getUint16(40, true);
  }

  // 0x2a: u16
  get ScsiBus(): number {
    return this.view.getUint16(42, true);
  }

  // 0x2c: u16
  get ScsiTarget(): number {
    return this.view.getUint16(44, true);
  }

  // 0x2e: u16
  get ScsiLun(): number {
    return this.view.getUint16(46, true);
  }

  // 0x30: pointer
  get Library(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set Number(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set ChangerType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set szSerialNumber(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set szRevision(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set szDeviceName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: u16
  set ScsiPort(value: number) {
    this.view.setUint16(40, value, true);
  }

  // 0x2a: u16
  set ScsiBus(value: number) {
    this.view.setUint16(42, value, true);
  }

  // 0x2c: u16
  set ScsiTarget(value: number) {
    this.view.setUint16(44, value, true);
  }

  // 0x2e: u16
  set ScsiLun(value: number) {
    this.view.setUint16(46, value, true);
  }

  // 0x30: pointer
  set Library(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_STORAGESLOTINFORMATION (size: 16)
 */
export interface NTMS_STORAGESLOTINFORMATION {
  /** u32 */
  Number: number;
  /** u32 */
  State: number;
  /** System.Guid */
  Library: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_STORAGESLOTINFORMATION = 16;

export function allocNTMS_STORAGESLOTINFORMATION(data?: Partial<NTMS_STORAGESLOTINFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_STORAGESLOTINFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Number !== undefined) view.setUint32(0, Number(data.Number), true);
  // 0x04: u32
  if (data?.State !== undefined) view.setUint32(4, Number(data.State), true);
  // 0x08: pointer
  if (data?.Library !== undefined) view.setBigUint64(8, data.Library === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Library))), true);
  return buf;
}

export class NTMS_STORAGESLOTINFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Number(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get State(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get Library(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set Number(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set State(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set Library(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_IEDOORINFORMATION (size: 24)
 */
export interface NTMS_IEDOORINFORMATION {
  /** u32 */
  Number: number;
  /** Windows.Win32.Storage.FileSystem.NtmsDoorState */
  State: NtmsDoorState;
  /** u16 */
  MaxOpenSecs: number;
  /** System.Guid */
  Library: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_IEDOORINFORMATION = 24;

export function allocNTMS_IEDOORINFORMATION(data?: Partial<NTMS_IEDOORINFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_IEDOORINFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Number !== undefined) view.setUint32(0, Number(data.Number), true);
  // 0x04: i32
  if (data?.State !== undefined) view.setInt32(4, Number(data.State), true);
  // 0x08: u16
  if (data?.MaxOpenSecs !== undefined) view.setUint16(8, Number(data.MaxOpenSecs), true);
  // 0x0a: pad6
  // 0x10: pointer
  if (data?.Library !== undefined) view.setBigUint64(16, data.Library === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Library))), true);
  return buf;
}

export class NTMS_IEDOORINFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Number(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get State(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: u16
  get MaxOpenSecs(): number {
    return this.view.getUint16(8, true);
  }

  // 0x0a: pad6

  // 0x10: pointer
  get Library(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set Number(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set State(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: u16
  set MaxOpenSecs(value: number) {
    this.view.setUint16(8, value, true);
  }

  // 0x0a: pad6

  // 0x10: pointer
  set Library(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_IEPORTINFORMATION (size: 24)
 */
export interface NTMS_IEPORTINFORMATION {
  /** u32 */
  Number: number;
  /** Windows.Win32.Storage.FileSystem.NtmsPortContent */
  Content: NtmsPortContent;
  /** Windows.Win32.Storage.FileSystem.NtmsPortPosition */
  Position: NtmsPortPosition;
  /** u16 */
  MaxExtendSecs: number;
  /** System.Guid */
  Library: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_IEPORTINFORMATION = 24;

export function allocNTMS_IEPORTINFORMATION(data?: Partial<NTMS_IEPORTINFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_IEPORTINFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Number !== undefined) view.setUint32(0, Number(data.Number), true);
  // 0x04: i32
  if (data?.Content !== undefined) view.setInt32(4, Number(data.Content), true);
  // 0x08: i32
  if (data?.Position !== undefined) view.setInt32(8, Number(data.Position), true);
  // 0x0c: u16
  if (data?.MaxExtendSecs !== undefined) view.setUint16(12, Number(data.MaxExtendSecs), true);
  // 0x0e: pad2
  // 0x10: pointer
  if (data?.Library !== undefined) view.setBigUint64(16, data.Library === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Library))), true);
  return buf;
}

export class NTMS_IEPORTINFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Number(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get Content(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: i32
  get Position(): number {
    return this.view.getInt32(8, true);
  }

  // 0x0c: u16
  get MaxExtendSecs(): number {
    return this.view.getUint16(12, true);
  }

  // 0x0e: pad2

  // 0x10: pointer
  get Library(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set Number(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set Content(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: i32
  set Position(value: number) {
    this.view.setInt32(8, value, true);
  }

  // 0x0c: u16
  set MaxExtendSecs(value: number) {
    this.view.setUint16(12, value, true);
  }

  // 0x0e: pad2

  // 0x10: pointer
  set Library(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_PMIDINFORMATIONA (size: 96)
 */
export interface NTMS_PMIDINFORMATIONA {
  /** System.Guid */
  CurrentLibrary: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  MediaPool: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  Location: Uint8Array | Deno.PointerValue;
  /** u32 */
  LocationType: number;
  /** System.Guid */
  MediaType: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  HomeSlot: Uint8Array | Deno.PointerValue;
  /** array */
  szBarCode: Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NtmsBarCodeState */
  BarCodeState: NtmsBarCodeState;
  /** array */
  szSequenceNumber: Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NtmsMediaState */
  MediaState: NtmsMediaState;
  /** u32 */
  dwNumberOfPartitions: number;
  /** u32 */
  dwMediaTypeCode: number;
  /** u32 */
  dwDensityCode: number;
  /** System.Guid */
  MountedPartition: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_PMIDINFORMATIONA = 96;

export function allocNTMS_PMIDINFORMATIONA(data?: Partial<NTMS_PMIDINFORMATIONA>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_PMIDINFORMATIONA);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.CurrentLibrary !== undefined) view.setBigUint64(0, data.CurrentLibrary === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CurrentLibrary))), true);
  // 0x08: pointer
  if (data?.MediaPool !== undefined) view.setBigUint64(8, data.MediaPool === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MediaPool))), true);
  // 0x10: pointer
  if (data?.Location !== undefined) view.setBigUint64(16, data.Location === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Location))), true);
  // 0x18: u32
  if (data?.LocationType !== undefined) view.setUint32(24, Number(data.LocationType), true);
  // 0x1c: pad4
  // 0x20: pointer
  if (data?.MediaType !== undefined) view.setBigUint64(32, data.MediaType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MediaType))), true);
  // 0x28: pointer
  if (data?.HomeSlot !== undefined) view.setBigUint64(40, data.HomeSlot === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.HomeSlot))), true);
  // 0x30: pointer
  if (data?.szBarCode !== undefined) view.setBigUint64(48, data.szBarCode === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szBarCode))), true);
  // 0x38: i32
  if (data?.BarCodeState !== undefined) view.setInt32(56, Number(data.BarCodeState), true);
  // 0x3c: pad4
  // 0x40: pointer
  if (data?.szSequenceNumber !== undefined) view.setBigUint64(64, data.szSequenceNumber === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szSequenceNumber))), true);
  // 0x48: i32
  if (data?.MediaState !== undefined) view.setInt32(72, Number(data.MediaState), true);
  // 0x4c: u32
  if (data?.dwNumberOfPartitions !== undefined) view.setUint32(76, Number(data.dwNumberOfPartitions), true);
  // 0x50: u32
  if (data?.dwMediaTypeCode !== undefined) view.setUint32(80, Number(data.dwMediaTypeCode), true);
  // 0x54: u32
  if (data?.dwDensityCode !== undefined) view.setUint32(84, Number(data.dwDensityCode), true);
  // 0x58: pointer
  if (data?.MountedPartition !== undefined) view.setBigUint64(88, data.MountedPartition === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MountedPartition))), true);
  return buf;
}

export class NTMS_PMIDINFORMATIONAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get CurrentLibrary(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get MediaPool(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get Location(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u32
  get LocationType(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: pad4

  // 0x20: pointer
  get MediaType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get HomeSlot(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get szBarCode(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: i32
  get BarCodeState(): number {
    return this.view.getInt32(56, true);
  }

  // 0x3c: pad4

  // 0x40: pointer
  get szSequenceNumber(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: i32
  get MediaState(): number {
    return this.view.getInt32(72, true);
  }

  // 0x4c: u32
  get dwNumberOfPartitions(): number {
    return this.view.getUint32(76, true);
  }

  // 0x50: u32
  get dwMediaTypeCode(): number {
    return this.view.getUint32(80, true);
  }

  // 0x54: u32
  get dwDensityCode(): number {
    return this.view.getUint32(84, true);
  }

  // 0x58: pointer
  get MountedPartition(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(88, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set CurrentLibrary(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set MediaPool(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set Location(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: u32
  set LocationType(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: pad4

  // 0x20: pointer
  set MediaType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set HomeSlot(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set szBarCode(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: i32
  set BarCodeState(value: number) {
    this.view.setInt32(56, value, true);
  }

  // 0x3c: pad4

  // 0x40: pointer
  set szSequenceNumber(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: i32
  set MediaState(value: number) {
    this.view.setInt32(72, value, true);
  }

  // 0x4c: u32
  set dwNumberOfPartitions(value: number) {
    this.view.setUint32(76, value, true);
  }

  // 0x50: u32
  set dwMediaTypeCode(value: number) {
    this.view.setUint32(80, value, true);
  }

  // 0x54: u32
  set dwDensityCode(value: number) {
    this.view.setUint32(84, value, true);
  }

  // 0x58: pointer
  set MountedPartition(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(88, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_PMIDINFORMATIONW (size: 96)
 */
export interface NTMS_PMIDINFORMATIONW {
  /** System.Guid */
  CurrentLibrary: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  MediaPool: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  Location: Uint8Array | Deno.PointerValue;
  /** u32 */
  LocationType: number;
  /** System.Guid */
  MediaType: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  HomeSlot: Uint8Array | Deno.PointerValue;
  /** array */
  szBarCode: Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NtmsBarCodeState */
  BarCodeState: NtmsBarCodeState;
  /** array */
  szSequenceNumber: Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NtmsMediaState */
  MediaState: NtmsMediaState;
  /** u32 */
  dwNumberOfPartitions: number;
  /** u32 */
  dwMediaTypeCode: number;
  /** u32 */
  dwDensityCode: number;
  /** System.Guid */
  MountedPartition: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_PMIDINFORMATIONW = 96;

export function allocNTMS_PMIDINFORMATIONW(data?: Partial<NTMS_PMIDINFORMATIONW>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_PMIDINFORMATIONW);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.CurrentLibrary !== undefined) view.setBigUint64(0, data.CurrentLibrary === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CurrentLibrary))), true);
  // 0x08: pointer
  if (data?.MediaPool !== undefined) view.setBigUint64(8, data.MediaPool === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MediaPool))), true);
  // 0x10: pointer
  if (data?.Location !== undefined) view.setBigUint64(16, data.Location === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Location))), true);
  // 0x18: u32
  if (data?.LocationType !== undefined) view.setUint32(24, Number(data.LocationType), true);
  // 0x1c: pad4
  // 0x20: pointer
  if (data?.MediaType !== undefined) view.setBigUint64(32, data.MediaType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MediaType))), true);
  // 0x28: pointer
  if (data?.HomeSlot !== undefined) view.setBigUint64(40, data.HomeSlot === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.HomeSlot))), true);
  // 0x30: pointer
  if (data?.szBarCode !== undefined) view.setBigUint64(48, data.szBarCode === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szBarCode))), true);
  // 0x38: i32
  if (data?.BarCodeState !== undefined) view.setInt32(56, Number(data.BarCodeState), true);
  // 0x3c: pad4
  // 0x40: pointer
  if (data?.szSequenceNumber !== undefined) view.setBigUint64(64, data.szSequenceNumber === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szSequenceNumber))), true);
  // 0x48: i32
  if (data?.MediaState !== undefined) view.setInt32(72, Number(data.MediaState), true);
  // 0x4c: u32
  if (data?.dwNumberOfPartitions !== undefined) view.setUint32(76, Number(data.dwNumberOfPartitions), true);
  // 0x50: u32
  if (data?.dwMediaTypeCode !== undefined) view.setUint32(80, Number(data.dwMediaTypeCode), true);
  // 0x54: u32
  if (data?.dwDensityCode !== undefined) view.setUint32(84, Number(data.dwDensityCode), true);
  // 0x58: pointer
  if (data?.MountedPartition !== undefined) view.setBigUint64(88, data.MountedPartition === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MountedPartition))), true);
  return buf;
}

export class NTMS_PMIDINFORMATIONWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get CurrentLibrary(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get MediaPool(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get Location(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u32
  get LocationType(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: pad4

  // 0x20: pointer
  get MediaType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get HomeSlot(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get szBarCode(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: i32
  get BarCodeState(): number {
    return this.view.getInt32(56, true);
  }

  // 0x3c: pad4

  // 0x40: pointer
  get szSequenceNumber(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: i32
  get MediaState(): number {
    return this.view.getInt32(72, true);
  }

  // 0x4c: u32
  get dwNumberOfPartitions(): number {
    return this.view.getUint32(76, true);
  }

  // 0x50: u32
  get dwMediaTypeCode(): number {
    return this.view.getUint32(80, true);
  }

  // 0x54: u32
  get dwDensityCode(): number {
    return this.view.getUint32(84, true);
  }

  // 0x58: pointer
  get MountedPartition(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(88, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set CurrentLibrary(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set MediaPool(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set Location(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: u32
  set LocationType(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: pad4

  // 0x20: pointer
  set MediaType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set HomeSlot(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set szBarCode(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: i32
  set BarCodeState(value: number) {
    this.view.setInt32(56, value, true);
  }

  // 0x3c: pad4

  // 0x40: pointer
  set szSequenceNumber(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: i32
  set MediaState(value: number) {
    this.view.setInt32(72, value, true);
  }

  // 0x4c: u32
  set dwNumberOfPartitions(value: number) {
    this.view.setUint32(76, value, true);
  }

  // 0x50: u32
  set dwMediaTypeCode(value: number) {
    this.view.setUint32(80, value, true);
  }

  // 0x54: u32
  set dwDensityCode(value: number) {
    this.view.setUint32(84, value, true);
  }

  // 0x58: pointer
  set MountedPartition(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(88, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_LMIDINFORMATION (size: 16)
 */
export interface NTMS_LMIDINFORMATION {
  /** System.Guid */
  MediaPool: Uint8Array | Deno.PointerValue;
  /** u32 */
  dwNumberOfPartitions: number;
}

export const sizeofNTMS_LMIDINFORMATION = 16;

export function allocNTMS_LMIDINFORMATION(data?: Partial<NTMS_LMIDINFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_LMIDINFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.MediaPool !== undefined) view.setBigUint64(0, data.MediaPool === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MediaPool))), true);
  // 0x08: u32
  if (data?.dwNumberOfPartitions !== undefined) view.setUint32(8, Number(data.dwNumberOfPartitions), true);
  // 0x0c: pad4
  return buf;
}

export class NTMS_LMIDINFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get MediaPool(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get dwNumberOfPartitions(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x00: pointer
  set MediaPool(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u32
  set dwNumberOfPartitions(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_PARTITIONINFORMATIONA (size: 72)
 */
export interface NTMS_PARTITIONINFORMATIONA {
  /** System.Guid */
  PhysicalMedia: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  LogicalMedia: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NtmsPartitionState */
  State: NtmsPartitionState;
  /** u16 */
  Side: number;
  /** u32 */
  dwOmidLabelIdLength: number;
  /** array */
  OmidLabelId: Deno.PointerValue;
  /** array */
  szOmidLabelType: Deno.PointerValue;
  /** array */
  szOmidLabelInfo: Deno.PointerValue;
  /** u32 */
  dwMountCount: number;
  /** u32 */
  dwAllocateCount: number;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  Capacity: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_PARTITIONINFORMATIONA = 72;

export function allocNTMS_PARTITIONINFORMATIONA(data?: Partial<NTMS_PARTITIONINFORMATIONA>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_PARTITIONINFORMATIONA);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.PhysicalMedia !== undefined) view.setBigUint64(0, data.PhysicalMedia === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PhysicalMedia))), true);
  // 0x08: pointer
  if (data?.LogicalMedia !== undefined) view.setBigUint64(8, data.LogicalMedia === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LogicalMedia))), true);
  // 0x10: i32
  if (data?.State !== undefined) view.setInt32(16, Number(data.State), true);
  // 0x14: u16
  if (data?.Side !== undefined) view.setUint16(20, Number(data.Side), true);
  // 0x16: u32
  if (data?.dwOmidLabelIdLength !== undefined) view.setUint32(22, Number(data.dwOmidLabelIdLength), true);
  // 0x1a: pad6
  // 0x20: pointer
  if (data?.OmidLabelId !== undefined) view.setBigUint64(32, data.OmidLabelId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.OmidLabelId))), true);
  // 0x28: pointer
  if (data?.szOmidLabelType !== undefined) view.setBigUint64(40, data.szOmidLabelType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szOmidLabelType))), true);
  // 0x30: pointer
  if (data?.szOmidLabelInfo !== undefined) view.setBigUint64(48, data.szOmidLabelInfo === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szOmidLabelInfo))), true);
  // 0x38: u32
  if (data?.dwMountCount !== undefined) view.setUint32(56, Number(data.dwMountCount), true);
  // 0x3c: u32
  if (data?.dwAllocateCount !== undefined) view.setUint32(60, Number(data.dwAllocateCount), true);
  // 0x40: pointer
  if (data?.Capacity !== undefined) view.setBigUint64(64, data.Capacity === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Capacity))), true);
  return buf;
}

export class NTMS_PARTITIONINFORMATIONAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get PhysicalMedia(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get LogicalMedia(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: i32
  get State(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: u16
  get Side(): number {
    return this.view.getUint16(20, true);
  }

  // 0x16: u32
  get dwOmidLabelIdLength(): number {
    return this.view.getUint32(22, true);
  }

  // 0x1a: pad6

  // 0x20: pointer
  get OmidLabelId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get szOmidLabelType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get szOmidLabelInfo(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: u32
  get dwMountCount(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: u32
  get dwAllocateCount(): number {
    return this.view.getUint32(60, true);
  }

  // 0x40: pointer
  get Capacity(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set PhysicalMedia(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set LogicalMedia(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: i32
  set State(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: u16
  set Side(value: number) {
    this.view.setUint16(20, value, true);
  }

  // 0x16: u32
  set dwOmidLabelIdLength(value: number) {
    this.view.setUint32(22, value, true);
  }

  // 0x1a: pad6

  // 0x20: pointer
  set OmidLabelId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set szOmidLabelType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set szOmidLabelInfo(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: u32
  set dwMountCount(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: u32
  set dwAllocateCount(value: number) {
    this.view.setUint32(60, value, true);
  }

  // 0x40: pointer
  set Capacity(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_PARTITIONINFORMATIONW (size: 72)
 */
export interface NTMS_PARTITIONINFORMATIONW {
  /** System.Guid */
  PhysicalMedia: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  LogicalMedia: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NtmsPartitionState */
  State: NtmsPartitionState;
  /** u16 */
  Side: number;
  /** u32 */
  dwOmidLabelIdLength: number;
  /** array */
  OmidLabelId: Deno.PointerValue;
  /** array */
  szOmidLabelType: Deno.PointerValue;
  /** array */
  szOmidLabelInfo: Deno.PointerValue;
  /** u32 */
  dwMountCount: number;
  /** u32 */
  dwAllocateCount: number;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  Capacity: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_PARTITIONINFORMATIONW = 72;

export function allocNTMS_PARTITIONINFORMATIONW(data?: Partial<NTMS_PARTITIONINFORMATIONW>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_PARTITIONINFORMATIONW);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.PhysicalMedia !== undefined) view.setBigUint64(0, data.PhysicalMedia === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PhysicalMedia))), true);
  // 0x08: pointer
  if (data?.LogicalMedia !== undefined) view.setBigUint64(8, data.LogicalMedia === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LogicalMedia))), true);
  // 0x10: i32
  if (data?.State !== undefined) view.setInt32(16, Number(data.State), true);
  // 0x14: u16
  if (data?.Side !== undefined) view.setUint16(20, Number(data.Side), true);
  // 0x16: u32
  if (data?.dwOmidLabelIdLength !== undefined) view.setUint32(22, Number(data.dwOmidLabelIdLength), true);
  // 0x1a: pad6
  // 0x20: pointer
  if (data?.OmidLabelId !== undefined) view.setBigUint64(32, data.OmidLabelId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.OmidLabelId))), true);
  // 0x28: pointer
  if (data?.szOmidLabelType !== undefined) view.setBigUint64(40, data.szOmidLabelType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szOmidLabelType))), true);
  // 0x30: pointer
  if (data?.szOmidLabelInfo !== undefined) view.setBigUint64(48, data.szOmidLabelInfo === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szOmidLabelInfo))), true);
  // 0x38: u32
  if (data?.dwMountCount !== undefined) view.setUint32(56, Number(data.dwMountCount), true);
  // 0x3c: u32
  if (data?.dwAllocateCount !== undefined) view.setUint32(60, Number(data.dwAllocateCount), true);
  // 0x40: pointer
  if (data?.Capacity !== undefined) view.setBigUint64(64, data.Capacity === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Capacity))), true);
  return buf;
}

export class NTMS_PARTITIONINFORMATIONWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get PhysicalMedia(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get LogicalMedia(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: i32
  get State(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: u16
  get Side(): number {
    return this.view.getUint16(20, true);
  }

  // 0x16: u32
  get dwOmidLabelIdLength(): number {
    return this.view.getUint32(22, true);
  }

  // 0x1a: pad6

  // 0x20: pointer
  get OmidLabelId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get szOmidLabelType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get szOmidLabelInfo(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: u32
  get dwMountCount(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: u32
  get dwAllocateCount(): number {
    return this.view.getUint32(60, true);
  }

  // 0x40: pointer
  get Capacity(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set PhysicalMedia(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set LogicalMedia(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: i32
  set State(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: u16
  set Side(value: number) {
    this.view.setUint16(20, value, true);
  }

  // 0x16: u32
  set dwOmidLabelIdLength(value: number) {
    this.view.setUint32(22, value, true);
  }

  // 0x1a: pad6

  // 0x20: pointer
  set OmidLabelId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set szOmidLabelType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set szOmidLabelInfo(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: u32
  set dwMountCount(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: u32
  set dwAllocateCount(value: number) {
    this.view.setUint32(60, value, true);
  }

  // 0x40: pointer
  set Capacity(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_MEDIAPOOLINFORMATION (size: 48)
 */
export interface NTMS_MEDIAPOOLINFORMATION {
  /** u32 */
  PoolType: number;
  /** System.Guid */
  MediaType: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  Parent: Uint8Array | Deno.PointerValue;
  /** u32 */
  AllocationPolicy: number;
  /** u32 */
  DeallocationPolicy: number;
  /** u32 */
  dwMaxAllocates: number;
  /** u32 */
  dwNumberOfPhysicalMedia: number;
  /** u32 */
  dwNumberOfLogicalMedia: number;
  /** u32 */
  dwNumberOfMediaPools: number;
}

export const sizeofNTMS_MEDIAPOOLINFORMATION = 48;

export function allocNTMS_MEDIAPOOLINFORMATION(data?: Partial<NTMS_MEDIAPOOLINFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_MEDIAPOOLINFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.PoolType !== undefined) view.setUint32(0, Number(data.PoolType), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.MediaType !== undefined) view.setBigUint64(8, data.MediaType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MediaType))), true);
  // 0x10: pointer
  if (data?.Parent !== undefined) view.setBigUint64(16, data.Parent === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Parent))), true);
  // 0x18: u32
  if (data?.AllocationPolicy !== undefined) view.setUint32(24, Number(data.AllocationPolicy), true);
  // 0x1c: u32
  if (data?.DeallocationPolicy !== undefined) view.setUint32(28, Number(data.DeallocationPolicy), true);
  // 0x20: u32
  if (data?.dwMaxAllocates !== undefined) view.setUint32(32, Number(data.dwMaxAllocates), true);
  // 0x24: u32
  if (data?.dwNumberOfPhysicalMedia !== undefined) view.setUint32(36, Number(data.dwNumberOfPhysicalMedia), true);
  // 0x28: u32
  if (data?.dwNumberOfLogicalMedia !== undefined) view.setUint32(40, Number(data.dwNumberOfLogicalMedia), true);
  // 0x2c: u32
  if (data?.dwNumberOfMediaPools !== undefined) view.setUint32(44, Number(data.dwNumberOfMediaPools), true);
  return buf;
}

export class NTMS_MEDIAPOOLINFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get PoolType(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get MediaType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get Parent(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u32
  get AllocationPolicy(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: u32
  get DeallocationPolicy(): number {
    return this.view.getUint32(28, true);
  }

  // 0x20: u32
  get dwMaxAllocates(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: u32
  get dwNumberOfPhysicalMedia(): number {
    return this.view.getUint32(36, true);
  }

  // 0x28: u32
  get dwNumberOfLogicalMedia(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: u32
  get dwNumberOfMediaPools(): number {
    return this.view.getUint32(44, true);
  }

  // 0x00: u32
  set PoolType(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set MediaType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set Parent(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: u32
  set AllocationPolicy(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: u32
  set DeallocationPolicy(value: number) {
    this.view.setUint32(28, value, true);
  }

  // 0x20: u32
  set dwMaxAllocates(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: u32
  set dwNumberOfPhysicalMedia(value: number) {
    this.view.setUint32(36, value, true);
  }

  // 0x28: u32
  set dwNumberOfLogicalMedia(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: u32
  set dwNumberOfMediaPools(value: number) {
    this.view.setUint32(44, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_MEDIATYPEINFORMATION (size: 16)
 */
export interface NTMS_MEDIATYPEINFORMATION {
  /** u32 */
  MediaType: number;
  /** u32 */
  NumberOfSides: number;
  /** Windows.Win32.Storage.FileSystem.NtmsReadWriteCharacteristics */
  ReadWriteCharacteristics: NtmsReadWriteCharacteristics;
  /** Windows.Win32.Storage.FileSystem.FILE_DEVICE_TYPE */
  DeviceType: FILE_DEVICE_TYPE;
}

export const sizeofNTMS_MEDIATYPEINFORMATION = 16;

export function allocNTMS_MEDIATYPEINFORMATION(data?: Partial<NTMS_MEDIATYPEINFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_MEDIATYPEINFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.MediaType !== undefined) view.setUint32(0, Number(data.MediaType), true);
  // 0x04: u32
  if (data?.NumberOfSides !== undefined) view.setUint32(4, Number(data.NumberOfSides), true);
  // 0x08: i32
  if (data?.ReadWriteCharacteristics !== undefined) view.setInt32(8, Number(data.ReadWriteCharacteristics), true);
  // 0x0c: u32
  if (data?.DeviceType !== undefined) view.setUint32(12, Number(data.DeviceType), true);
  return buf;
}

export class NTMS_MEDIATYPEINFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get MediaType(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get NumberOfSides(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: i32
  get ReadWriteCharacteristics(): number {
    return this.view.getInt32(8, true);
  }

  // 0x0c: u32
  get DeviceType(): number {
    return this.view.getUint32(12, true);
  }

  // 0x00: u32
  set MediaType(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set NumberOfSides(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: i32
  set ReadWriteCharacteristics(value: number) {
    this.view.setInt32(8, value, true);
  }

  // 0x0c: u32
  set DeviceType(value: number) {
    this.view.setUint32(12, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_DRIVETYPEINFORMATIONA (size: 24)
 */
export interface NTMS_DRIVETYPEINFORMATIONA {
  /** array */
  szVendor: Deno.PointerValue;
  /** array */
  szProduct: Deno.PointerValue;
  /** u32 */
  NumberOfHeads: number;
  /** Windows.Win32.Storage.FileSystem.FILE_DEVICE_TYPE */
  DeviceType: FILE_DEVICE_TYPE;
}

export const sizeofNTMS_DRIVETYPEINFORMATIONA = 24;

export function allocNTMS_DRIVETYPEINFORMATIONA(data?: Partial<NTMS_DRIVETYPEINFORMATIONA>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_DRIVETYPEINFORMATIONA);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.szVendor !== undefined) view.setBigUint64(0, data.szVendor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szVendor))), true);
  // 0x08: pointer
  if (data?.szProduct !== undefined) view.setBigUint64(8, data.szProduct === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szProduct))), true);
  // 0x10: u32
  if (data?.NumberOfHeads !== undefined) view.setUint32(16, Number(data.NumberOfHeads), true);
  // 0x14: u32
  if (data?.DeviceType !== undefined) view.setUint32(20, Number(data.DeviceType), true);
  return buf;
}

export class NTMS_DRIVETYPEINFORMATIONAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get szVendor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get szProduct(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get NumberOfHeads(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get DeviceType(): number {
    return this.view.getUint32(20, true);
  }

  // 0x00: pointer
  set szVendor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set szProduct(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set NumberOfHeads(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set DeviceType(value: number) {
    this.view.setUint32(20, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_DRIVETYPEINFORMATIONW (size: 24)
 */
export interface NTMS_DRIVETYPEINFORMATIONW {
  /** array */
  szVendor: Deno.PointerValue;
  /** array */
  szProduct: Deno.PointerValue;
  /** u32 */
  NumberOfHeads: number;
  /** Windows.Win32.Storage.FileSystem.FILE_DEVICE_TYPE */
  DeviceType: FILE_DEVICE_TYPE;
}

export const sizeofNTMS_DRIVETYPEINFORMATIONW = 24;

export function allocNTMS_DRIVETYPEINFORMATIONW(data?: Partial<NTMS_DRIVETYPEINFORMATIONW>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_DRIVETYPEINFORMATIONW);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.szVendor !== undefined) view.setBigUint64(0, data.szVendor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szVendor))), true);
  // 0x08: pointer
  if (data?.szProduct !== undefined) view.setBigUint64(8, data.szProduct === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szProduct))), true);
  // 0x10: u32
  if (data?.NumberOfHeads !== undefined) view.setUint32(16, Number(data.NumberOfHeads), true);
  // 0x14: u32
  if (data?.DeviceType !== undefined) view.setUint32(20, Number(data.DeviceType), true);
  return buf;
}

export class NTMS_DRIVETYPEINFORMATIONWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get szVendor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get szProduct(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get NumberOfHeads(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get DeviceType(): number {
    return this.view.getUint32(20, true);
  }

  // 0x00: pointer
  set szVendor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set szProduct(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set NumberOfHeads(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set DeviceType(value: number) {
    this.view.setUint32(20, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_CHANGERTYPEINFORMATIONA (size: 24)
 */
export interface NTMS_CHANGERTYPEINFORMATIONA {
  /** array */
  szVendor: Deno.PointerValue;
  /** array */
  szProduct: Deno.PointerValue;
  /** u32 */
  DeviceType: number;
}

export const sizeofNTMS_CHANGERTYPEINFORMATIONA = 24;

export function allocNTMS_CHANGERTYPEINFORMATIONA(data?: Partial<NTMS_CHANGERTYPEINFORMATIONA>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_CHANGERTYPEINFORMATIONA);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.szVendor !== undefined) view.setBigUint64(0, data.szVendor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szVendor))), true);
  // 0x08: pointer
  if (data?.szProduct !== undefined) view.setBigUint64(8, data.szProduct === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szProduct))), true);
  // 0x10: u32
  if (data?.DeviceType !== undefined) view.setUint32(16, Number(data.DeviceType), true);
  // 0x14: pad4
  return buf;
}

export class NTMS_CHANGERTYPEINFORMATIONAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get szVendor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get szProduct(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get DeviceType(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x00: pointer
  set szVendor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set szProduct(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set DeviceType(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_CHANGERTYPEINFORMATIONW (size: 24)
 */
export interface NTMS_CHANGERTYPEINFORMATIONW {
  /** array */
  szVendor: Deno.PointerValue;
  /** array */
  szProduct: Deno.PointerValue;
  /** u32 */
  DeviceType: number;
}

export const sizeofNTMS_CHANGERTYPEINFORMATIONW = 24;

export function allocNTMS_CHANGERTYPEINFORMATIONW(data?: Partial<NTMS_CHANGERTYPEINFORMATIONW>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_CHANGERTYPEINFORMATIONW);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.szVendor !== undefined) view.setBigUint64(0, data.szVendor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szVendor))), true);
  // 0x08: pointer
  if (data?.szProduct !== undefined) view.setBigUint64(8, data.szProduct === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szProduct))), true);
  // 0x10: u32
  if (data?.DeviceType !== undefined) view.setUint32(16, Number(data.DeviceType), true);
  // 0x14: pad4
  return buf;
}

export class NTMS_CHANGERTYPEINFORMATIONWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get szVendor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get szProduct(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get DeviceType(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x00: pointer
  set szVendor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set szProduct(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set DeviceType(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_LIBREQUESTINFORMATIONA (size: 120)
 */
export interface NTMS_LIBREQUESTINFORMATIONA {
  /** Windows.Win32.Storage.FileSystem.NtmsLmOperation */
  OperationCode: NtmsLmOperation;
  /** u32 */
  OperationOption: number;
  /** Windows.Win32.Storage.FileSystem.NtmsLmState */
  State: NtmsLmState;
  /** System.Guid */
  PartitionId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  DriveId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  PhysMediaId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  Library: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  SlotId: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  TimeQueued: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  TimeCompleted: Uint8Array | Deno.PointerValue;
  /** array */
  szApplication: Deno.PointerValue;
  /** array */
  szUser: Deno.PointerValue;
  /** array */
  szComputer: Deno.PointerValue;
  /** u32 */
  dwErrorCode: number;
  /** System.Guid */
  WorkItemId: Uint8Array | Deno.PointerValue;
  /** u32 */
  dwPriority: number;
}

export const sizeofNTMS_LIBREQUESTINFORMATIONA = 120;

export function allocNTMS_LIBREQUESTINFORMATIONA(data?: Partial<NTMS_LIBREQUESTINFORMATIONA>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_LIBREQUESTINFORMATIONA);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.OperationCode !== undefined) view.setInt32(0, Number(data.OperationCode), true);
  // 0x04: u32
  if (data?.OperationOption !== undefined) view.setUint32(4, Number(data.OperationOption), true);
  // 0x08: i32
  if (data?.State !== undefined) view.setInt32(8, Number(data.State), true);
  // 0x0c: pad4
  // 0x10: pointer
  if (data?.PartitionId !== undefined) view.setBigUint64(16, data.PartitionId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PartitionId))), true);
  // 0x18: pointer
  if (data?.DriveId !== undefined) view.setBigUint64(24, data.DriveId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.DriveId))), true);
  // 0x20: pointer
  if (data?.PhysMediaId !== undefined) view.setBigUint64(32, data.PhysMediaId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PhysMediaId))), true);
  // 0x28: pointer
  if (data?.Library !== undefined) view.setBigUint64(40, data.Library === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Library))), true);
  // 0x30: pointer
  if (data?.SlotId !== undefined) view.setBigUint64(48, data.SlotId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.SlotId))), true);
  // 0x38: pointer
  if (data?.TimeQueued !== undefined) view.setBigUint64(56, data.TimeQueued === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TimeQueued))), true);
  // 0x40: pointer
  if (data?.TimeCompleted !== undefined) view.setBigUint64(64, data.TimeCompleted === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TimeCompleted))), true);
  // 0x48: pointer
  if (data?.szApplication !== undefined) view.setBigUint64(72, data.szApplication === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szApplication))), true);
  // 0x50: pointer
  if (data?.szUser !== undefined) view.setBigUint64(80, data.szUser === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szUser))), true);
  // 0x58: pointer
  if (data?.szComputer !== undefined) view.setBigUint64(88, data.szComputer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szComputer))), true);
  // 0x60: u32
  if (data?.dwErrorCode !== undefined) view.setUint32(96, Number(data.dwErrorCode), true);
  // 0x64: pad4
  // 0x68: pointer
  if (data?.WorkItemId !== undefined) view.setBigUint64(104, data.WorkItemId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.WorkItemId))), true);
  // 0x70: u32
  if (data?.dwPriority !== undefined) view.setUint32(112, Number(data.dwPriority), true);
  // 0x74: pad4
  return buf;
}

export class NTMS_LIBREQUESTINFORMATIONAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get OperationCode(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: u32
  get OperationOption(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: i32
  get State(): number {
    return this.view.getInt32(8, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  get PartitionId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get DriveId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get PhysMediaId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get Library(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get SlotId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: pointer
  get TimeQueued(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: pointer
  get TimeCompleted(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get szApplication(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: pointer
  get szUser(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(80, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x58: pointer
  get szComputer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(88, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x60: u32
  get dwErrorCode(): number {
    return this.view.getUint32(96, true);
  }

  // 0x64: pad4

  // 0x68: pointer
  get WorkItemId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(104, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x70: u32
  get dwPriority(): number {
    return this.view.getUint32(112, true);
  }

  // 0x74: pad4

  // 0x00: i32
  set OperationCode(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: u32
  set OperationOption(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: i32
  set State(value: number) {
    this.view.setInt32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  set PartitionId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set DriveId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set PhysMediaId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set Library(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set SlotId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: pointer
  set TimeQueued(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: pointer
  set TimeCompleted(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set szApplication(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: pointer
  set szUser(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(80, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x58: pointer
  set szComputer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(88, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x60: u32
  set dwErrorCode(value: number) {
    this.view.setUint32(96, value, true);
  }

  // 0x64: pad4

  // 0x68: pointer
  set WorkItemId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(104, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x70: u32
  set dwPriority(value: number) {
    this.view.setUint32(112, value, true);
  }

  // 0x74: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_LIBREQUESTINFORMATIONW (size: 120)
 */
export interface NTMS_LIBREQUESTINFORMATIONW {
  /** Windows.Win32.Storage.FileSystem.NtmsLmOperation */
  OperationCode: NtmsLmOperation;
  /** u32 */
  OperationOption: number;
  /** Windows.Win32.Storage.FileSystem.NtmsLmState */
  State: NtmsLmState;
  /** System.Guid */
  PartitionId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  DriveId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  PhysMediaId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  Library: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  SlotId: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  TimeQueued: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  TimeCompleted: Uint8Array | Deno.PointerValue;
  /** array */
  szApplication: Deno.PointerValue;
  /** array */
  szUser: Deno.PointerValue;
  /** array */
  szComputer: Deno.PointerValue;
  /** u32 */
  dwErrorCode: number;
  /** System.Guid */
  WorkItemId: Uint8Array | Deno.PointerValue;
  /** u32 */
  dwPriority: number;
}

export const sizeofNTMS_LIBREQUESTINFORMATIONW = 120;

export function allocNTMS_LIBREQUESTINFORMATIONW(data?: Partial<NTMS_LIBREQUESTINFORMATIONW>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_LIBREQUESTINFORMATIONW);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.OperationCode !== undefined) view.setInt32(0, Number(data.OperationCode), true);
  // 0x04: u32
  if (data?.OperationOption !== undefined) view.setUint32(4, Number(data.OperationOption), true);
  // 0x08: i32
  if (data?.State !== undefined) view.setInt32(8, Number(data.State), true);
  // 0x0c: pad4
  // 0x10: pointer
  if (data?.PartitionId !== undefined) view.setBigUint64(16, data.PartitionId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PartitionId))), true);
  // 0x18: pointer
  if (data?.DriveId !== undefined) view.setBigUint64(24, data.DriveId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.DriveId))), true);
  // 0x20: pointer
  if (data?.PhysMediaId !== undefined) view.setBigUint64(32, data.PhysMediaId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PhysMediaId))), true);
  // 0x28: pointer
  if (data?.Library !== undefined) view.setBigUint64(40, data.Library === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Library))), true);
  // 0x30: pointer
  if (data?.SlotId !== undefined) view.setBigUint64(48, data.SlotId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.SlotId))), true);
  // 0x38: pointer
  if (data?.TimeQueued !== undefined) view.setBigUint64(56, data.TimeQueued === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TimeQueued))), true);
  // 0x40: pointer
  if (data?.TimeCompleted !== undefined) view.setBigUint64(64, data.TimeCompleted === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TimeCompleted))), true);
  // 0x48: pointer
  if (data?.szApplication !== undefined) view.setBigUint64(72, data.szApplication === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szApplication))), true);
  // 0x50: pointer
  if (data?.szUser !== undefined) view.setBigUint64(80, data.szUser === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szUser))), true);
  // 0x58: pointer
  if (data?.szComputer !== undefined) view.setBigUint64(88, data.szComputer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szComputer))), true);
  // 0x60: u32
  if (data?.dwErrorCode !== undefined) view.setUint32(96, Number(data.dwErrorCode), true);
  // 0x64: pad4
  // 0x68: pointer
  if (data?.WorkItemId !== undefined) view.setBigUint64(104, data.WorkItemId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.WorkItemId))), true);
  // 0x70: u32
  if (data?.dwPriority !== undefined) view.setUint32(112, Number(data.dwPriority), true);
  // 0x74: pad4
  return buf;
}

export class NTMS_LIBREQUESTINFORMATIONWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get OperationCode(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: u32
  get OperationOption(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: i32
  get State(): number {
    return this.view.getInt32(8, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  get PartitionId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get DriveId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get PhysMediaId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get Library(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get SlotId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: pointer
  get TimeQueued(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: pointer
  get TimeCompleted(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get szApplication(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: pointer
  get szUser(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(80, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x58: pointer
  get szComputer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(88, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x60: u32
  get dwErrorCode(): number {
    return this.view.getUint32(96, true);
  }

  // 0x64: pad4

  // 0x68: pointer
  get WorkItemId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(104, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x70: u32
  get dwPriority(): number {
    return this.view.getUint32(112, true);
  }

  // 0x74: pad4

  // 0x00: i32
  set OperationCode(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: u32
  set OperationOption(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: i32
  set State(value: number) {
    this.view.setInt32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  set PartitionId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set DriveId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set PhysMediaId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set Library(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set SlotId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: pointer
  set TimeQueued(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: pointer
  set TimeCompleted(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set szApplication(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: pointer
  set szUser(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(80, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x58: pointer
  set szComputer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(88, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x60: u32
  set dwErrorCode(value: number) {
    this.view.setUint32(96, value, true);
  }

  // 0x64: pad4

  // 0x68: pointer
  set WorkItemId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(104, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x70: u32
  set dwPriority(value: number) {
    this.view.setUint32(112, value, true);
  }

  // 0x74: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_OPREQUESTINFORMATIONA (size: 88)
 */
export interface NTMS_OPREQUESTINFORMATIONA {
  /** Windows.Win32.Storage.FileSystem.NtmsOpreqCommand */
  Request: NtmsOpreqCommand;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  Submitted: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NtmsOpreqState */
  State: NtmsOpreqState;
  /** array */
  szMessage: Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NtmsObjectsTypes */
  Arg1Type: NtmsObjectsTypes;
  /** System.Guid */
  Arg1: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NtmsObjectsTypes */
  Arg2Type: NtmsObjectsTypes;
  /** System.Guid */
  Arg2: Uint8Array | Deno.PointerValue;
  /** array */
  szApplication: Deno.PointerValue;
  /** array */
  szUser: Deno.PointerValue;
  /** array */
  szComputer: Deno.PointerValue;
}

export const sizeofNTMS_OPREQUESTINFORMATIONA = 88;

export function allocNTMS_OPREQUESTINFORMATIONA(data?: Partial<NTMS_OPREQUESTINFORMATIONA>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_OPREQUESTINFORMATIONA);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.Request !== undefined) view.setInt32(0, Number(data.Request), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.Submitted !== undefined) view.setBigUint64(8, data.Submitted === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Submitted))), true);
  // 0x10: i32
  if (data?.State !== undefined) view.setInt32(16, Number(data.State), true);
  // 0x14: pad4
  // 0x18: pointer
  if (data?.szMessage !== undefined) view.setBigUint64(24, data.szMessage === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szMessage))), true);
  // 0x20: i32
  if (data?.Arg1Type !== undefined) view.setInt32(32, Number(data.Arg1Type), true);
  // 0x24: pad4
  // 0x28: pointer
  if (data?.Arg1 !== undefined) view.setBigUint64(40, data.Arg1 === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Arg1))), true);
  // 0x30: i32
  if (data?.Arg2Type !== undefined) view.setInt32(48, Number(data.Arg2Type), true);
  // 0x34: pad4
  // 0x38: pointer
  if (data?.Arg2 !== undefined) view.setBigUint64(56, data.Arg2 === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Arg2))), true);
  // 0x40: pointer
  if (data?.szApplication !== undefined) view.setBigUint64(64, data.szApplication === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szApplication))), true);
  // 0x48: pointer
  if (data?.szUser !== undefined) view.setBigUint64(72, data.szUser === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szUser))), true);
  // 0x50: pointer
  if (data?.szComputer !== undefined) view.setBigUint64(80, data.szComputer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szComputer))), true);
  return buf;
}

export class NTMS_OPREQUESTINFORMATIONAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get Request(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get Submitted(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: i32
  get State(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  get szMessage(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: i32
  get Arg1Type(): number {
    return this.view.getInt32(32, true);
  }

  // 0x24: pad4

  // 0x28: pointer
  get Arg1(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: i32
  get Arg2Type(): number {
    return this.view.getInt32(48, true);
  }

  // 0x34: pad4

  // 0x38: pointer
  get Arg2(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: pointer
  get szApplication(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get szUser(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: pointer
  get szComputer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(80, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set Request(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set Submitted(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: i32
  set State(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  set szMessage(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: i32
  set Arg1Type(value: number) {
    this.view.setInt32(32, value, true);
  }

  // 0x24: pad4

  // 0x28: pointer
  set Arg1(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: i32
  set Arg2Type(value: number) {
    this.view.setInt32(48, value, true);
  }

  // 0x34: pad4

  // 0x38: pointer
  set Arg2(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: pointer
  set szApplication(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set szUser(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: pointer
  set szComputer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(80, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_OPREQUESTINFORMATIONW (size: 88)
 */
export interface NTMS_OPREQUESTINFORMATIONW {
  /** Windows.Win32.Storage.FileSystem.NtmsOpreqCommand */
  Request: NtmsOpreqCommand;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  Submitted: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NtmsOpreqState */
  State: NtmsOpreqState;
  /** array */
  szMessage: Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NtmsObjectsTypes */
  Arg1Type: NtmsObjectsTypes;
  /** System.Guid */
  Arg1: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NtmsObjectsTypes */
  Arg2Type: NtmsObjectsTypes;
  /** System.Guid */
  Arg2: Uint8Array | Deno.PointerValue;
  /** array */
  szApplication: Deno.PointerValue;
  /** array */
  szUser: Deno.PointerValue;
  /** array */
  szComputer: Deno.PointerValue;
}

export const sizeofNTMS_OPREQUESTINFORMATIONW = 88;

export function allocNTMS_OPREQUESTINFORMATIONW(data?: Partial<NTMS_OPREQUESTINFORMATIONW>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_OPREQUESTINFORMATIONW);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.Request !== undefined) view.setInt32(0, Number(data.Request), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.Submitted !== undefined) view.setBigUint64(8, data.Submitted === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Submitted))), true);
  // 0x10: i32
  if (data?.State !== undefined) view.setInt32(16, Number(data.State), true);
  // 0x14: pad4
  // 0x18: pointer
  if (data?.szMessage !== undefined) view.setBigUint64(24, data.szMessage === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szMessage))), true);
  // 0x20: i32
  if (data?.Arg1Type !== undefined) view.setInt32(32, Number(data.Arg1Type), true);
  // 0x24: pad4
  // 0x28: pointer
  if (data?.Arg1 !== undefined) view.setBigUint64(40, data.Arg1 === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Arg1))), true);
  // 0x30: i32
  if (data?.Arg2Type !== undefined) view.setInt32(48, Number(data.Arg2Type), true);
  // 0x34: pad4
  // 0x38: pointer
  if (data?.Arg2 !== undefined) view.setBigUint64(56, data.Arg2 === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Arg2))), true);
  // 0x40: pointer
  if (data?.szApplication !== undefined) view.setBigUint64(64, data.szApplication === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szApplication))), true);
  // 0x48: pointer
  if (data?.szUser !== undefined) view.setBigUint64(72, data.szUser === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szUser))), true);
  // 0x50: pointer
  if (data?.szComputer !== undefined) view.setBigUint64(80, data.szComputer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szComputer))), true);
  return buf;
}

export class NTMS_OPREQUESTINFORMATIONWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get Request(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get Submitted(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: i32
  get State(): number {
    return this.view.getInt32(16, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  get szMessage(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: i32
  get Arg1Type(): number {
    return this.view.getInt32(32, true);
  }

  // 0x24: pad4

  // 0x28: pointer
  get Arg1(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: i32
  get Arg2Type(): number {
    return this.view.getInt32(48, true);
  }

  // 0x34: pad4

  // 0x38: pointer
  get Arg2(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: pointer
  get szApplication(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get szUser(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: pointer
  get szComputer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(80, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set Request(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set Submitted(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: i32
  set State(value: number) {
    this.view.setInt32(16, value, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  set szMessage(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: i32
  set Arg1Type(value: number) {
    this.view.setInt32(32, value, true);
  }

  // 0x24: pad4

  // 0x28: pointer
  set Arg1(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: i32
  set Arg2Type(value: number) {
    this.view.setInt32(48, value, true);
  }

  // 0x34: pad4

  // 0x38: pointer
  set Arg2(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: pointer
  set szApplication(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set szUser(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: pointer
  set szComputer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(80, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_COMPUTERINFORMATION (size: 24)
 */
export interface NTMS_COMPUTERINFORMATION {
  /** u32 */
  dwLibRequestPurgeTime: number;
  /** u32 */
  dwOpRequestPurgeTime: number;
  /** u32 */
  dwLibRequestFlags: number;
  /** u32 */
  dwOpRequestFlags: number;
  /** u32 */
  dwMediaPoolPolicy: number;
}

export const sizeofNTMS_COMPUTERINFORMATION = 24;

export function allocNTMS_COMPUTERINFORMATION(data?: Partial<NTMS_COMPUTERINFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_COMPUTERINFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwLibRequestPurgeTime !== undefined) view.setUint32(0, Number(data.dwLibRequestPurgeTime), true);
  // 0x04: u32
  if (data?.dwOpRequestPurgeTime !== undefined) view.setUint32(4, Number(data.dwOpRequestPurgeTime), true);
  // 0x08: u32
  if (data?.dwLibRequestFlags !== undefined) view.setUint32(8, Number(data.dwLibRequestFlags), true);
  // 0x0c: u32
  if (data?.dwOpRequestFlags !== undefined) view.setUint32(12, Number(data.dwOpRequestFlags), true);
  // 0x10: u32
  if (data?.dwMediaPoolPolicy !== undefined) view.setUint32(16, Number(data.dwMediaPoolPolicy), true);
  // 0x14: pad4
  return buf;
}

export class NTMS_COMPUTERINFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwLibRequestPurgeTime(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get dwOpRequestPurgeTime(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get dwLibRequestFlags(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get dwOpRequestFlags(): number {
    return this.view.getUint32(12, true);
  }

  // 0x10: u32
  get dwMediaPoolPolicy(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x00: u32
  set dwLibRequestPurgeTime(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set dwOpRequestPurgeTime(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set dwLibRequestFlags(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set dwOpRequestFlags(value: number) {
    this.view.setUint32(12, value, true);
  }

  // 0x10: u32
  set dwMediaPoolPolicy(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4
}

/**
 * _Info_e__Union (size: 128)
 */
export interface _Info_e__Union {
  /** Windows.Win32.Storage.FileSystem.NTMS_DRIVEINFORMATIONA */
  Drive: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NTMS_DRIVETYPEINFORMATIONA */
  DriveType: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NTMS_LIBRARYINFORMATION */
  Library: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NTMS_CHANGERINFORMATIONA */
  Changer: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NTMS_CHANGERTYPEINFORMATIONA */
  ChangerType: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NTMS_STORAGESLOTINFORMATION */
  StorageSlot: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NTMS_IEDOORINFORMATION */
  IEDoor: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NTMS_IEPORTINFORMATION */
  IEPort: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NTMS_PMIDINFORMATIONA */
  PhysicalMedia: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NTMS_LMIDINFORMATION */
  LogicalMedia: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NTMS_PARTITIONINFORMATIONA */
  Partition: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NTMS_MEDIAPOOLINFORMATION */
  MediaPool: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NTMS_MEDIATYPEINFORMATION */
  MediaType: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NTMS_LIBREQUESTINFORMATIONA */
  LibRequest: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NTMS_OPREQUESTINFORMATIONA */
  OpRequest: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.NTMS_COMPUTERINFORMATION */
  Computer: Uint8Array | Deno.PointerValue;
}

export const sizeof_Info_e__Union = 128;

export function alloc_Info_e__Union(data?: Partial<_Info_e__Union>): Uint8Array {
  const buf = new Uint8Array(sizeof_Info_e__Union);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Drive !== undefined) view.setBigUint64(0, data.Drive === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Drive))), true);
  // 0x08: pointer
  if (data?.DriveType !== undefined) view.setBigUint64(8, data.DriveType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.DriveType))), true);
  // 0x10: pointer
  if (data?.Library !== undefined) view.setBigUint64(16, data.Library === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Library))), true);
  // 0x18: pointer
  if (data?.Changer !== undefined) view.setBigUint64(24, data.Changer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Changer))), true);
  // 0x20: pointer
  if (data?.ChangerType !== undefined) view.setBigUint64(32, data.ChangerType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ChangerType))), true);
  // 0x28: pointer
  if (data?.StorageSlot !== undefined) view.setBigUint64(40, data.StorageSlot === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.StorageSlot))), true);
  // 0x30: pointer
  if (data?.IEDoor !== undefined) view.setBigUint64(48, data.IEDoor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.IEDoor))), true);
  // 0x38: pointer
  if (data?.IEPort !== undefined) view.setBigUint64(56, data.IEPort === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.IEPort))), true);
  // 0x40: pointer
  if (data?.PhysicalMedia !== undefined) view.setBigUint64(64, data.PhysicalMedia === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PhysicalMedia))), true);
  // 0x48: pointer
  if (data?.LogicalMedia !== undefined) view.setBigUint64(72, data.LogicalMedia === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LogicalMedia))), true);
  // 0x50: pointer
  if (data?.Partition !== undefined) view.setBigUint64(80, data.Partition === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Partition))), true);
  // 0x58: pointer
  if (data?.MediaPool !== undefined) view.setBigUint64(88, data.MediaPool === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MediaPool))), true);
  // 0x60: pointer
  if (data?.MediaType !== undefined) view.setBigUint64(96, data.MediaType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MediaType))), true);
  // 0x68: pointer
  if (data?.LibRequest !== undefined) view.setBigUint64(104, data.LibRequest === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LibRequest))), true);
  // 0x70: pointer
  if (data?.OpRequest !== undefined) view.setBigUint64(112, data.OpRequest === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.OpRequest))), true);
  // 0x78: pointer
  if (data?.Computer !== undefined) view.setBigUint64(120, data.Computer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Computer))), true);
  return buf;
}

export class _Info_e__UnionView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Drive(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get DriveType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get Library(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get Changer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get ChangerType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get StorageSlot(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get IEDoor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: pointer
  get IEPort(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: pointer
  get PhysicalMedia(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get LogicalMedia(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: pointer
  get Partition(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(80, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x58: pointer
  get MediaPool(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(88, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x60: pointer
  get MediaType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(96, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x68: pointer
  get LibRequest(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(104, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x70: pointer
  get OpRequest(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(112, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x78: pointer
  get Computer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(120, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set Drive(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set DriveType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set Library(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set Changer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set ChangerType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set StorageSlot(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set IEDoor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: pointer
  set IEPort(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: pointer
  set PhysicalMedia(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set LogicalMedia(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: pointer
  set Partition(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(80, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x58: pointer
  set MediaPool(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(88, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x60: pointer
  set MediaType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(96, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x68: pointer
  set LibRequest(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(104, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x70: pointer
  set OpRequest(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(112, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x78: pointer
  set Computer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(120, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_OBJECTINFORMATIONA (size: 64)
 */
export interface NTMS_OBJECTINFORMATIONA {
  /** u32 */
  dwSize: number;
  /** Windows.Win32.Storage.FileSystem.NtmsObjectsTypes */
  dwType: NtmsObjectsTypes;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  Created: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  Modified: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  ObjectGuid: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.BOOL */
  Enabled: boolean;
  /** Windows.Win32.Storage.FileSystem.NtmsOperationalState */
  dwOperationalState: NtmsOperationalState;
  /** array */
  szName: Deno.PointerValue;
  /** array */
  szDescription: Deno.PointerValue;
  /** _Info_e__Union */
  Info: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_OBJECTINFORMATIONA = 64;

export function allocNTMS_OBJECTINFORMATIONA(data?: Partial<NTMS_OBJECTINFORMATIONA>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_OBJECTINFORMATIONA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwSize !== undefined) view.setUint32(0, Number(data.dwSize), true);
  // 0x04: i32
  if (data?.dwType !== undefined) view.setInt32(4, Number(data.dwType), true);
  // 0x08: pointer
  if (data?.Created !== undefined) view.setBigUint64(8, data.Created === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Created))), true);
  // 0x10: pointer
  if (data?.Modified !== undefined) view.setBigUint64(16, data.Modified === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Modified))), true);
  // 0x18: pointer
  if (data?.ObjectGuid !== undefined) view.setBigUint64(24, data.ObjectGuid === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ObjectGuid))), true);
  // 0x20: i32
  if (data?.Enabled !== undefined) view.setInt32(32, Number(data.Enabled), true);
  // 0x24: i32
  if (data?.dwOperationalState !== undefined) view.setInt32(36, Number(data.dwOperationalState), true);
  // 0x28: pointer
  if (data?.szName !== undefined) view.setBigUint64(40, data.szName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szName))), true);
  // 0x30: pointer
  if (data?.szDescription !== undefined) view.setBigUint64(48, data.szDescription === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szDescription))), true);
  // 0x38: pointer
  if (data?.Info !== undefined) view.setBigUint64(56, data.Info === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Info))), true);
  return buf;
}

export class NTMS_OBJECTINFORMATIONAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get dwType(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: pointer
  get Created(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get Modified(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get ObjectGuid(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: i32
  get Enabled(): number {
    return this.view.getInt32(32, true);
  }

  // 0x24: i32
  get dwOperationalState(): number {
    return this.view.getInt32(36, true);
  }

  // 0x28: pointer
  get szName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get szDescription(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: pointer
  get Info(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set dwType(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: pointer
  set Created(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set Modified(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set ObjectGuid(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: i32
  set Enabled(value: number) {
    this.view.setInt32(32, value, true);
  }

  // 0x24: i32
  set dwOperationalState(value: number) {
    this.view.setInt32(36, value, true);
  }

  // 0x28: pointer
  set szName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set szDescription(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: pointer
  set Info(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_OBJECTINFORMATIONW (size: 64)
 */
export interface NTMS_OBJECTINFORMATIONW {
  /** u32 */
  dwSize: number;
  /** Windows.Win32.Storage.FileSystem.NtmsObjectsTypes */
  dwType: NtmsObjectsTypes;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  Created: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  Modified: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  ObjectGuid: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.BOOL */
  Enabled: boolean;
  /** Windows.Win32.Storage.FileSystem.NtmsOperationalState */
  dwOperationalState: NtmsOperationalState;
  /** array */
  szName: Deno.PointerValue;
  /** array */
  szDescription: Deno.PointerValue;
  /** _Info_e__Union */
  Info: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_OBJECTINFORMATIONW = 64;

export function allocNTMS_OBJECTINFORMATIONW(data?: Partial<NTMS_OBJECTINFORMATIONW>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_OBJECTINFORMATIONW);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwSize !== undefined) view.setUint32(0, Number(data.dwSize), true);
  // 0x04: i32
  if (data?.dwType !== undefined) view.setInt32(4, Number(data.dwType), true);
  // 0x08: pointer
  if (data?.Created !== undefined) view.setBigUint64(8, data.Created === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Created))), true);
  // 0x10: pointer
  if (data?.Modified !== undefined) view.setBigUint64(16, data.Modified === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Modified))), true);
  // 0x18: pointer
  if (data?.ObjectGuid !== undefined) view.setBigUint64(24, data.ObjectGuid === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ObjectGuid))), true);
  // 0x20: i32
  if (data?.Enabled !== undefined) view.setInt32(32, Number(data.Enabled), true);
  // 0x24: i32
  if (data?.dwOperationalState !== undefined) view.setInt32(36, Number(data.dwOperationalState), true);
  // 0x28: pointer
  if (data?.szName !== undefined) view.setBigUint64(40, data.szName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szName))), true);
  // 0x30: pointer
  if (data?.szDescription !== undefined) view.setBigUint64(48, data.szDescription === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szDescription))), true);
  // 0x38: pointer
  if (data?.Info !== undefined) view.setBigUint64(56, data.Info === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Info))), true);
  return buf;
}

export class NTMS_OBJECTINFORMATIONWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get dwType(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: pointer
  get Created(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get Modified(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get ObjectGuid(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: i32
  get Enabled(): number {
    return this.view.getInt32(32, true);
  }

  // 0x24: i32
  get dwOperationalState(): number {
    return this.view.getInt32(36, true);
  }

  // 0x28: pointer
  get szName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get szDescription(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: pointer
  get Info(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set dwType(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: pointer
  set Created(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set Modified(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set ObjectGuid(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: i32
  set Enabled(value: number) {
    this.view.setInt32(32, value, true);
  }

  // 0x24: i32
  set dwOperationalState(value: number) {
    this.view.setInt32(36, value, true);
  }

  // 0x28: pointer
  set szName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set szDescription(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: pointer
  set Info(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_I1_LIBRARYINFORMATION (size: 104)
 */
export interface NTMS_I1_LIBRARYINFORMATION {
  /** u32 */
  LibraryType: number;
  /** System.Guid */
  CleanerSlot: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  CleanerSlotDefault: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.BOOL */
  LibrarySupportsDriveCleaning: boolean;
  /** Windows.Win32.Foundation.BOOL */
  BarCodeReaderInstalled: boolean;
  /** u32 */
  InventoryMethod: number;
  /** u32 */
  dwCleanerUsesRemaining: number;
  /** u32 */
  FirstDriveNumber: number;
  /** u32 */
  dwNumberOfDrives: number;
  /** u32 */
  FirstSlotNumber: number;
  /** u32 */
  dwNumberOfSlots: number;
  /** u32 */
  FirstDoorNumber: number;
  /** u32 */
  dwNumberOfDoors: number;
  /** u32 */
  FirstPortNumber: number;
  /** u32 */
  dwNumberOfPorts: number;
  /** u32 */
  FirstChangerNumber: number;
  /** u32 */
  dwNumberOfChangers: number;
  /** u32 */
  dwNumberOfMedia: number;
  /** u32 */
  dwNumberOfMediaTypes: number;
  /** u32 */
  dwNumberOfLibRequests: number;
  /** System.Guid */
  Reserved: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_I1_LIBRARYINFORMATION = 104;

export function allocNTMS_I1_LIBRARYINFORMATION(data?: Partial<NTMS_I1_LIBRARYINFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_I1_LIBRARYINFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.LibraryType !== undefined) view.setUint32(0, Number(data.LibraryType), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.CleanerSlot !== undefined) view.setBigUint64(8, data.CleanerSlot === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CleanerSlot))), true);
  // 0x10: pointer
  if (data?.CleanerSlotDefault !== undefined) view.setBigUint64(16, data.CleanerSlotDefault === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CleanerSlotDefault))), true);
  // 0x18: i32
  if (data?.LibrarySupportsDriveCleaning !== undefined) view.setInt32(24, Number(data.LibrarySupportsDriveCleaning), true);
  // 0x1c: i32
  if (data?.BarCodeReaderInstalled !== undefined) view.setInt32(28, Number(data.BarCodeReaderInstalled), true);
  // 0x20: u32
  if (data?.InventoryMethod !== undefined) view.setUint32(32, Number(data.InventoryMethod), true);
  // 0x24: u32
  if (data?.dwCleanerUsesRemaining !== undefined) view.setUint32(36, Number(data.dwCleanerUsesRemaining), true);
  // 0x28: u32
  if (data?.FirstDriveNumber !== undefined) view.setUint32(40, Number(data.FirstDriveNumber), true);
  // 0x2c: u32
  if (data?.dwNumberOfDrives !== undefined) view.setUint32(44, Number(data.dwNumberOfDrives), true);
  // 0x30: u32
  if (data?.FirstSlotNumber !== undefined) view.setUint32(48, Number(data.FirstSlotNumber), true);
  // 0x34: u32
  if (data?.dwNumberOfSlots !== undefined) view.setUint32(52, Number(data.dwNumberOfSlots), true);
  // 0x38: u32
  if (data?.FirstDoorNumber !== undefined) view.setUint32(56, Number(data.FirstDoorNumber), true);
  // 0x3c: u32
  if (data?.dwNumberOfDoors !== undefined) view.setUint32(60, Number(data.dwNumberOfDoors), true);
  // 0x40: u32
  if (data?.FirstPortNumber !== undefined) view.setUint32(64, Number(data.FirstPortNumber), true);
  // 0x44: u32
  if (data?.dwNumberOfPorts !== undefined) view.setUint32(68, Number(data.dwNumberOfPorts), true);
  // 0x48: u32
  if (data?.FirstChangerNumber !== undefined) view.setUint32(72, Number(data.FirstChangerNumber), true);
  // 0x4c: u32
  if (data?.dwNumberOfChangers !== undefined) view.setUint32(76, Number(data.dwNumberOfChangers), true);
  // 0x50: u32
  if (data?.dwNumberOfMedia !== undefined) view.setUint32(80, Number(data.dwNumberOfMedia), true);
  // 0x54: u32
  if (data?.dwNumberOfMediaTypes !== undefined) view.setUint32(84, Number(data.dwNumberOfMediaTypes), true);
  // 0x58: u32
  if (data?.dwNumberOfLibRequests !== undefined) view.setUint32(88, Number(data.dwNumberOfLibRequests), true);
  // 0x5c: pad4
  // 0x60: pointer
  if (data?.Reserved !== undefined) view.setBigUint64(96, data.Reserved === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Reserved))), true);
  return buf;
}

export class NTMS_I1_LIBRARYINFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get LibraryType(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get CleanerSlot(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get CleanerSlotDefault(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: i32
  get LibrarySupportsDriveCleaning(): number {
    return this.view.getInt32(24, true);
  }

  // 0x1c: i32
  get BarCodeReaderInstalled(): number {
    return this.view.getInt32(28, true);
  }

  // 0x20: u32
  get InventoryMethod(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: u32
  get dwCleanerUsesRemaining(): number {
    return this.view.getUint32(36, true);
  }

  // 0x28: u32
  get FirstDriveNumber(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: u32
  get dwNumberOfDrives(): number {
    return this.view.getUint32(44, true);
  }

  // 0x30: u32
  get FirstSlotNumber(): number {
    return this.view.getUint32(48, true);
  }

  // 0x34: u32
  get dwNumberOfSlots(): number {
    return this.view.getUint32(52, true);
  }

  // 0x38: u32
  get FirstDoorNumber(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: u32
  get dwNumberOfDoors(): number {
    return this.view.getUint32(60, true);
  }

  // 0x40: u32
  get FirstPortNumber(): number {
    return this.view.getUint32(64, true);
  }

  // 0x44: u32
  get dwNumberOfPorts(): number {
    return this.view.getUint32(68, true);
  }

  // 0x48: u32
  get FirstChangerNumber(): number {
    return this.view.getUint32(72, true);
  }

  // 0x4c: u32
  get dwNumberOfChangers(): number {
    return this.view.getUint32(76, true);
  }

  // 0x50: u32
  get dwNumberOfMedia(): number {
    return this.view.getUint32(80, true);
  }

  // 0x54: u32
  get dwNumberOfMediaTypes(): number {
    return this.view.getUint32(84, true);
  }

  // 0x58: u32
  get dwNumberOfLibRequests(): number {
    return this.view.getUint32(88, true);
  }

  // 0x5c: pad4

  // 0x60: pointer
  get Reserved(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(96, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set LibraryType(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set CleanerSlot(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set CleanerSlotDefault(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: i32
  set LibrarySupportsDriveCleaning(value: number) {
    this.view.setInt32(24, value, true);
  }

  // 0x1c: i32
  set BarCodeReaderInstalled(value: number) {
    this.view.setInt32(28, value, true);
  }

  // 0x20: u32
  set InventoryMethod(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: u32
  set dwCleanerUsesRemaining(value: number) {
    this.view.setUint32(36, value, true);
  }

  // 0x28: u32
  set FirstDriveNumber(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: u32
  set dwNumberOfDrives(value: number) {
    this.view.setUint32(44, value, true);
  }

  // 0x30: u32
  set FirstSlotNumber(value: number) {
    this.view.setUint32(48, value, true);
  }

  // 0x34: u32
  set dwNumberOfSlots(value: number) {
    this.view.setUint32(52, value, true);
  }

  // 0x38: u32
  set FirstDoorNumber(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: u32
  set dwNumberOfDoors(value: number) {
    this.view.setUint32(60, value, true);
  }

  // 0x40: u32
  set FirstPortNumber(value: number) {
    this.view.setUint32(64, value, true);
  }

  // 0x44: u32
  set dwNumberOfPorts(value: number) {
    this.view.setUint32(68, value, true);
  }

  // 0x48: u32
  set FirstChangerNumber(value: number) {
    this.view.setUint32(72, value, true);
  }

  // 0x4c: u32
  set dwNumberOfChangers(value: number) {
    this.view.setUint32(76, value, true);
  }

  // 0x50: u32
  set dwNumberOfMedia(value: number) {
    this.view.setUint32(80, value, true);
  }

  // 0x54: u32
  set dwNumberOfMediaTypes(value: number) {
    this.view.setUint32(84, value, true);
  }

  // 0x58: u32
  set dwNumberOfLibRequests(value: number) {
    this.view.setUint32(88, value, true);
  }

  // 0x5c: pad4

  // 0x60: pointer
  set Reserved(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(96, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_I1_LIBREQUESTINFORMATIONA (size: 96)
 */
export interface NTMS_I1_LIBREQUESTINFORMATIONA {
  /** u32 */
  OperationCode: number;
  /** u32 */
  OperationOption: number;
  /** u32 */
  State: number;
  /** System.Guid */
  PartitionId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  DriveId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  PhysMediaId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  Library: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  SlotId: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  TimeQueued: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  TimeCompleted: Uint8Array | Deno.PointerValue;
  /** array */
  szApplication: Deno.PointerValue;
  /** array */
  szUser: Deno.PointerValue;
  /** array */
  szComputer: Deno.PointerValue;
}

export const sizeofNTMS_I1_LIBREQUESTINFORMATIONA = 96;

export function allocNTMS_I1_LIBREQUESTINFORMATIONA(data?: Partial<NTMS_I1_LIBREQUESTINFORMATIONA>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_I1_LIBREQUESTINFORMATIONA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.OperationCode !== undefined) view.setUint32(0, Number(data.OperationCode), true);
  // 0x04: u32
  if (data?.OperationOption !== undefined) view.setUint32(4, Number(data.OperationOption), true);
  // 0x08: u32
  if (data?.State !== undefined) view.setUint32(8, Number(data.State), true);
  // 0x0c: pad4
  // 0x10: pointer
  if (data?.PartitionId !== undefined) view.setBigUint64(16, data.PartitionId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PartitionId))), true);
  // 0x18: pointer
  if (data?.DriveId !== undefined) view.setBigUint64(24, data.DriveId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.DriveId))), true);
  // 0x20: pointer
  if (data?.PhysMediaId !== undefined) view.setBigUint64(32, data.PhysMediaId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PhysMediaId))), true);
  // 0x28: pointer
  if (data?.Library !== undefined) view.setBigUint64(40, data.Library === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Library))), true);
  // 0x30: pointer
  if (data?.SlotId !== undefined) view.setBigUint64(48, data.SlotId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.SlotId))), true);
  // 0x38: pointer
  if (data?.TimeQueued !== undefined) view.setBigUint64(56, data.TimeQueued === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TimeQueued))), true);
  // 0x40: pointer
  if (data?.TimeCompleted !== undefined) view.setBigUint64(64, data.TimeCompleted === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TimeCompleted))), true);
  // 0x48: pointer
  if (data?.szApplication !== undefined) view.setBigUint64(72, data.szApplication === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szApplication))), true);
  // 0x50: pointer
  if (data?.szUser !== undefined) view.setBigUint64(80, data.szUser === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szUser))), true);
  // 0x58: pointer
  if (data?.szComputer !== undefined) view.setBigUint64(88, data.szComputer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szComputer))), true);
  return buf;
}

export class NTMS_I1_LIBREQUESTINFORMATIONAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get OperationCode(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get OperationOption(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get State(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  get PartitionId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get DriveId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get PhysMediaId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get Library(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get SlotId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: pointer
  get TimeQueued(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: pointer
  get TimeCompleted(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get szApplication(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: pointer
  get szUser(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(80, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x58: pointer
  get szComputer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(88, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set OperationCode(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set OperationOption(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set State(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  set PartitionId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set DriveId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set PhysMediaId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set Library(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set SlotId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: pointer
  set TimeQueued(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: pointer
  set TimeCompleted(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set szApplication(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: pointer
  set szUser(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(80, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x58: pointer
  set szComputer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(88, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_I1_LIBREQUESTINFORMATIONW (size: 96)
 */
export interface NTMS_I1_LIBREQUESTINFORMATIONW {
  /** u32 */
  OperationCode: number;
  /** u32 */
  OperationOption: number;
  /** u32 */
  State: number;
  /** System.Guid */
  PartitionId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  DriveId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  PhysMediaId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  Library: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  SlotId: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  TimeQueued: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  TimeCompleted: Uint8Array | Deno.PointerValue;
  /** array */
  szApplication: Deno.PointerValue;
  /** array */
  szUser: Deno.PointerValue;
  /** array */
  szComputer: Deno.PointerValue;
}

export const sizeofNTMS_I1_LIBREQUESTINFORMATIONW = 96;

export function allocNTMS_I1_LIBREQUESTINFORMATIONW(data?: Partial<NTMS_I1_LIBREQUESTINFORMATIONW>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_I1_LIBREQUESTINFORMATIONW);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.OperationCode !== undefined) view.setUint32(0, Number(data.OperationCode), true);
  // 0x04: u32
  if (data?.OperationOption !== undefined) view.setUint32(4, Number(data.OperationOption), true);
  // 0x08: u32
  if (data?.State !== undefined) view.setUint32(8, Number(data.State), true);
  // 0x0c: pad4
  // 0x10: pointer
  if (data?.PartitionId !== undefined) view.setBigUint64(16, data.PartitionId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PartitionId))), true);
  // 0x18: pointer
  if (data?.DriveId !== undefined) view.setBigUint64(24, data.DriveId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.DriveId))), true);
  // 0x20: pointer
  if (data?.PhysMediaId !== undefined) view.setBigUint64(32, data.PhysMediaId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PhysMediaId))), true);
  // 0x28: pointer
  if (data?.Library !== undefined) view.setBigUint64(40, data.Library === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Library))), true);
  // 0x30: pointer
  if (data?.SlotId !== undefined) view.setBigUint64(48, data.SlotId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.SlotId))), true);
  // 0x38: pointer
  if (data?.TimeQueued !== undefined) view.setBigUint64(56, data.TimeQueued === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TimeQueued))), true);
  // 0x40: pointer
  if (data?.TimeCompleted !== undefined) view.setBigUint64(64, data.TimeCompleted === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TimeCompleted))), true);
  // 0x48: pointer
  if (data?.szApplication !== undefined) view.setBigUint64(72, data.szApplication === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szApplication))), true);
  // 0x50: pointer
  if (data?.szUser !== undefined) view.setBigUint64(80, data.szUser === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szUser))), true);
  // 0x58: pointer
  if (data?.szComputer !== undefined) view.setBigUint64(88, data.szComputer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szComputer))), true);
  return buf;
}

export class NTMS_I1_LIBREQUESTINFORMATIONWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get OperationCode(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get OperationOption(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get State(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  get PartitionId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get DriveId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get PhysMediaId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get Library(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get SlotId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: pointer
  get TimeQueued(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: pointer
  get TimeCompleted(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get szApplication(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: pointer
  get szUser(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(80, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x58: pointer
  get szComputer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(88, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set OperationCode(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set OperationOption(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set State(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  set PartitionId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set DriveId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set PhysMediaId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set Library(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set SlotId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: pointer
  set TimeQueued(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: pointer
  set TimeCompleted(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set szApplication(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: pointer
  set szUser(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(80, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x58: pointer
  set szComputer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(88, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_I1_PMIDINFORMATIONA (size: 80)
 */
export interface NTMS_I1_PMIDINFORMATIONA {
  /** System.Guid */
  CurrentLibrary: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  MediaPool: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  Location: Uint8Array | Deno.PointerValue;
  /** u32 */
  LocationType: number;
  /** System.Guid */
  MediaType: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  HomeSlot: Uint8Array | Deno.PointerValue;
  /** array */
  szBarCode: Deno.PointerValue;
  /** u32 */
  BarCodeState: number;
  /** array */
  szSequenceNumber: Deno.PointerValue;
  /** u32 */
  MediaState: number;
  /** u32 */
  dwNumberOfPartitions: number;
}

export const sizeofNTMS_I1_PMIDINFORMATIONA = 80;

export function allocNTMS_I1_PMIDINFORMATIONA(data?: Partial<NTMS_I1_PMIDINFORMATIONA>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_I1_PMIDINFORMATIONA);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.CurrentLibrary !== undefined) view.setBigUint64(0, data.CurrentLibrary === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CurrentLibrary))), true);
  // 0x08: pointer
  if (data?.MediaPool !== undefined) view.setBigUint64(8, data.MediaPool === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MediaPool))), true);
  // 0x10: pointer
  if (data?.Location !== undefined) view.setBigUint64(16, data.Location === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Location))), true);
  // 0x18: u32
  if (data?.LocationType !== undefined) view.setUint32(24, Number(data.LocationType), true);
  // 0x1c: pad4
  // 0x20: pointer
  if (data?.MediaType !== undefined) view.setBigUint64(32, data.MediaType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MediaType))), true);
  // 0x28: pointer
  if (data?.HomeSlot !== undefined) view.setBigUint64(40, data.HomeSlot === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.HomeSlot))), true);
  // 0x30: pointer
  if (data?.szBarCode !== undefined) view.setBigUint64(48, data.szBarCode === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szBarCode))), true);
  // 0x38: u32
  if (data?.BarCodeState !== undefined) view.setUint32(56, Number(data.BarCodeState), true);
  // 0x3c: pad4
  // 0x40: pointer
  if (data?.szSequenceNumber !== undefined) view.setBigUint64(64, data.szSequenceNumber === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szSequenceNumber))), true);
  // 0x48: u32
  if (data?.MediaState !== undefined) view.setUint32(72, Number(data.MediaState), true);
  // 0x4c: u32
  if (data?.dwNumberOfPartitions !== undefined) view.setUint32(76, Number(data.dwNumberOfPartitions), true);
  return buf;
}

export class NTMS_I1_PMIDINFORMATIONAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get CurrentLibrary(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get MediaPool(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get Location(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u32
  get LocationType(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: pad4

  // 0x20: pointer
  get MediaType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get HomeSlot(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get szBarCode(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: u32
  get BarCodeState(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: pad4

  // 0x40: pointer
  get szSequenceNumber(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: u32
  get MediaState(): number {
    return this.view.getUint32(72, true);
  }

  // 0x4c: u32
  get dwNumberOfPartitions(): number {
    return this.view.getUint32(76, true);
  }

  // 0x00: pointer
  set CurrentLibrary(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set MediaPool(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set Location(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: u32
  set LocationType(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: pad4

  // 0x20: pointer
  set MediaType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set HomeSlot(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set szBarCode(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: u32
  set BarCodeState(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: pad4

  // 0x40: pointer
  set szSequenceNumber(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: u32
  set MediaState(value: number) {
    this.view.setUint32(72, value, true);
  }

  // 0x4c: u32
  set dwNumberOfPartitions(value: number) {
    this.view.setUint32(76, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_I1_PMIDINFORMATIONW (size: 80)
 */
export interface NTMS_I1_PMIDINFORMATIONW {
  /** System.Guid */
  CurrentLibrary: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  MediaPool: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  Location: Uint8Array | Deno.PointerValue;
  /** u32 */
  LocationType: number;
  /** System.Guid */
  MediaType: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  HomeSlot: Uint8Array | Deno.PointerValue;
  /** array */
  szBarCode: Deno.PointerValue;
  /** u32 */
  BarCodeState: number;
  /** array */
  szSequenceNumber: Deno.PointerValue;
  /** u32 */
  MediaState: number;
  /** u32 */
  dwNumberOfPartitions: number;
}

export const sizeofNTMS_I1_PMIDINFORMATIONW = 80;

export function allocNTMS_I1_PMIDINFORMATIONW(data?: Partial<NTMS_I1_PMIDINFORMATIONW>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_I1_PMIDINFORMATIONW);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.CurrentLibrary !== undefined) view.setBigUint64(0, data.CurrentLibrary === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CurrentLibrary))), true);
  // 0x08: pointer
  if (data?.MediaPool !== undefined) view.setBigUint64(8, data.MediaPool === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MediaPool))), true);
  // 0x10: pointer
  if (data?.Location !== undefined) view.setBigUint64(16, data.Location === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Location))), true);
  // 0x18: u32
  if (data?.LocationType !== undefined) view.setUint32(24, Number(data.LocationType), true);
  // 0x1c: pad4
  // 0x20: pointer
  if (data?.MediaType !== undefined) view.setBigUint64(32, data.MediaType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MediaType))), true);
  // 0x28: pointer
  if (data?.HomeSlot !== undefined) view.setBigUint64(40, data.HomeSlot === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.HomeSlot))), true);
  // 0x30: pointer
  if (data?.szBarCode !== undefined) view.setBigUint64(48, data.szBarCode === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szBarCode))), true);
  // 0x38: u32
  if (data?.BarCodeState !== undefined) view.setUint32(56, Number(data.BarCodeState), true);
  // 0x3c: pad4
  // 0x40: pointer
  if (data?.szSequenceNumber !== undefined) view.setBigUint64(64, data.szSequenceNumber === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szSequenceNumber))), true);
  // 0x48: u32
  if (data?.MediaState !== undefined) view.setUint32(72, Number(data.MediaState), true);
  // 0x4c: u32
  if (data?.dwNumberOfPartitions !== undefined) view.setUint32(76, Number(data.dwNumberOfPartitions), true);
  return buf;
}

export class NTMS_I1_PMIDINFORMATIONWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get CurrentLibrary(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get MediaPool(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get Location(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u32
  get LocationType(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: pad4

  // 0x20: pointer
  get MediaType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get HomeSlot(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get szBarCode(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: u32
  get BarCodeState(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: pad4

  // 0x40: pointer
  get szSequenceNumber(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: u32
  get MediaState(): number {
    return this.view.getUint32(72, true);
  }

  // 0x4c: u32
  get dwNumberOfPartitions(): number {
    return this.view.getUint32(76, true);
  }

  // 0x00: pointer
  set CurrentLibrary(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set MediaPool(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set Location(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: u32
  set LocationType(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: pad4

  // 0x20: pointer
  set MediaType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set HomeSlot(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set szBarCode(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: u32
  set BarCodeState(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: pad4

  // 0x40: pointer
  set szSequenceNumber(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: u32
  set MediaState(value: number) {
    this.view.setUint32(72, value, true);
  }

  // 0x4c: u32
  set dwNumberOfPartitions(value: number) {
    this.view.setUint32(76, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_I1_PARTITIONINFORMATIONA (size: 64)
 */
export interface NTMS_I1_PARTITIONINFORMATIONA {
  /** System.Guid */
  PhysicalMedia: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  LogicalMedia: Uint8Array | Deno.PointerValue;
  /** u32 */
  State: number;
  /** u16 */
  Side: number;
  /** u32 */
  dwOmidLabelIdLength: number;
  /** array */
  OmidLabelId: Deno.PointerValue;
  /** array */
  szOmidLabelType: Deno.PointerValue;
  /** array */
  szOmidLabelInfo: Deno.PointerValue;
  /** u32 */
  dwMountCount: number;
  /** u32 */
  dwAllocateCount: number;
}

export const sizeofNTMS_I1_PARTITIONINFORMATIONA = 64;

export function allocNTMS_I1_PARTITIONINFORMATIONA(data?: Partial<NTMS_I1_PARTITIONINFORMATIONA>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_I1_PARTITIONINFORMATIONA);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.PhysicalMedia !== undefined) view.setBigUint64(0, data.PhysicalMedia === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PhysicalMedia))), true);
  // 0x08: pointer
  if (data?.LogicalMedia !== undefined) view.setBigUint64(8, data.LogicalMedia === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LogicalMedia))), true);
  // 0x10: u32
  if (data?.State !== undefined) view.setUint32(16, Number(data.State), true);
  // 0x14: u16
  if (data?.Side !== undefined) view.setUint16(20, Number(data.Side), true);
  // 0x16: u32
  if (data?.dwOmidLabelIdLength !== undefined) view.setUint32(22, Number(data.dwOmidLabelIdLength), true);
  // 0x1a: pad6
  // 0x20: pointer
  if (data?.OmidLabelId !== undefined) view.setBigUint64(32, data.OmidLabelId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.OmidLabelId))), true);
  // 0x28: pointer
  if (data?.szOmidLabelType !== undefined) view.setBigUint64(40, data.szOmidLabelType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szOmidLabelType))), true);
  // 0x30: pointer
  if (data?.szOmidLabelInfo !== undefined) view.setBigUint64(48, data.szOmidLabelInfo === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szOmidLabelInfo))), true);
  // 0x38: u32
  if (data?.dwMountCount !== undefined) view.setUint32(56, Number(data.dwMountCount), true);
  // 0x3c: u32
  if (data?.dwAllocateCount !== undefined) view.setUint32(60, Number(data.dwAllocateCount), true);
  return buf;
}

export class NTMS_I1_PARTITIONINFORMATIONAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get PhysicalMedia(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get LogicalMedia(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get State(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u16
  get Side(): number {
    return this.view.getUint16(20, true);
  }

  // 0x16: u32
  get dwOmidLabelIdLength(): number {
    return this.view.getUint32(22, true);
  }

  // 0x1a: pad6

  // 0x20: pointer
  get OmidLabelId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get szOmidLabelType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get szOmidLabelInfo(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: u32
  get dwMountCount(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: u32
  get dwAllocateCount(): number {
    return this.view.getUint32(60, true);
  }

  // 0x00: pointer
  set PhysicalMedia(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set LogicalMedia(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set State(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u16
  set Side(value: number) {
    this.view.setUint16(20, value, true);
  }

  // 0x16: u32
  set dwOmidLabelIdLength(value: number) {
    this.view.setUint32(22, value, true);
  }

  // 0x1a: pad6

  // 0x20: pointer
  set OmidLabelId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set szOmidLabelType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set szOmidLabelInfo(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: u32
  set dwMountCount(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: u32
  set dwAllocateCount(value: number) {
    this.view.setUint32(60, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_I1_PARTITIONINFORMATIONW (size: 64)
 */
export interface NTMS_I1_PARTITIONINFORMATIONW {
  /** System.Guid */
  PhysicalMedia: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  LogicalMedia: Uint8Array | Deno.PointerValue;
  /** u32 */
  State: number;
  /** u16 */
  Side: number;
  /** u32 */
  dwOmidLabelIdLength: number;
  /** array */
  OmidLabelId: Deno.PointerValue;
  /** array */
  szOmidLabelType: Deno.PointerValue;
  /** array */
  szOmidLabelInfo: Deno.PointerValue;
  /** u32 */
  dwMountCount: number;
  /** u32 */
  dwAllocateCount: number;
}

export const sizeofNTMS_I1_PARTITIONINFORMATIONW = 64;

export function allocNTMS_I1_PARTITIONINFORMATIONW(data?: Partial<NTMS_I1_PARTITIONINFORMATIONW>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_I1_PARTITIONINFORMATIONW);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.PhysicalMedia !== undefined) view.setBigUint64(0, data.PhysicalMedia === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PhysicalMedia))), true);
  // 0x08: pointer
  if (data?.LogicalMedia !== undefined) view.setBigUint64(8, data.LogicalMedia === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LogicalMedia))), true);
  // 0x10: u32
  if (data?.State !== undefined) view.setUint32(16, Number(data.State), true);
  // 0x14: u16
  if (data?.Side !== undefined) view.setUint16(20, Number(data.Side), true);
  // 0x16: u32
  if (data?.dwOmidLabelIdLength !== undefined) view.setUint32(22, Number(data.dwOmidLabelIdLength), true);
  // 0x1a: pad6
  // 0x20: pointer
  if (data?.OmidLabelId !== undefined) view.setBigUint64(32, data.OmidLabelId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.OmidLabelId))), true);
  // 0x28: pointer
  if (data?.szOmidLabelType !== undefined) view.setBigUint64(40, data.szOmidLabelType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szOmidLabelType))), true);
  // 0x30: pointer
  if (data?.szOmidLabelInfo !== undefined) view.setBigUint64(48, data.szOmidLabelInfo === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szOmidLabelInfo))), true);
  // 0x38: u32
  if (data?.dwMountCount !== undefined) view.setUint32(56, Number(data.dwMountCount), true);
  // 0x3c: u32
  if (data?.dwAllocateCount !== undefined) view.setUint32(60, Number(data.dwAllocateCount), true);
  return buf;
}

export class NTMS_I1_PARTITIONINFORMATIONWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get PhysicalMedia(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get LogicalMedia(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get State(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u16
  get Side(): number {
    return this.view.getUint16(20, true);
  }

  // 0x16: u32
  get dwOmidLabelIdLength(): number {
    return this.view.getUint32(22, true);
  }

  // 0x1a: pad6

  // 0x20: pointer
  get OmidLabelId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get szOmidLabelType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get szOmidLabelInfo(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: u32
  get dwMountCount(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: u32
  get dwAllocateCount(): number {
    return this.view.getUint32(60, true);
  }

  // 0x00: pointer
  set PhysicalMedia(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set LogicalMedia(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set State(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u16
  set Side(value: number) {
    this.view.setUint16(20, value, true);
  }

  // 0x16: u32
  set dwOmidLabelIdLength(value: number) {
    this.view.setUint32(22, value, true);
  }

  // 0x1a: pad6

  // 0x20: pointer
  set OmidLabelId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set szOmidLabelType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set szOmidLabelInfo(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: u32
  set dwMountCount(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: u32
  set dwAllocateCount(value: number) {
    this.view.setUint32(60, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_I1_OPREQUESTINFORMATIONA (size: 88)
 */
export interface NTMS_I1_OPREQUESTINFORMATIONA {
  /** u32 */
  Request: number;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  Submitted: Uint8Array | Deno.PointerValue;
  /** u32 */
  State: number;
  /** array */
  szMessage: Deno.PointerValue;
  /** u32 */
  Arg1Type: number;
  /** System.Guid */
  Arg1: Uint8Array | Deno.PointerValue;
  /** u32 */
  Arg2Type: number;
  /** System.Guid */
  Arg2: Uint8Array | Deno.PointerValue;
  /** array */
  szApplication: Deno.PointerValue;
  /** array */
  szUser: Deno.PointerValue;
  /** array */
  szComputer: Deno.PointerValue;
}

export const sizeofNTMS_I1_OPREQUESTINFORMATIONA = 88;

export function allocNTMS_I1_OPREQUESTINFORMATIONA(data?: Partial<NTMS_I1_OPREQUESTINFORMATIONA>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_I1_OPREQUESTINFORMATIONA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Request !== undefined) view.setUint32(0, Number(data.Request), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.Submitted !== undefined) view.setBigUint64(8, data.Submitted === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Submitted))), true);
  // 0x10: u32
  if (data?.State !== undefined) view.setUint32(16, Number(data.State), true);
  // 0x14: pad4
  // 0x18: pointer
  if (data?.szMessage !== undefined) view.setBigUint64(24, data.szMessage === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szMessage))), true);
  // 0x20: u32
  if (data?.Arg1Type !== undefined) view.setUint32(32, Number(data.Arg1Type), true);
  // 0x24: pad4
  // 0x28: pointer
  if (data?.Arg1 !== undefined) view.setBigUint64(40, data.Arg1 === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Arg1))), true);
  // 0x30: u32
  if (data?.Arg2Type !== undefined) view.setUint32(48, Number(data.Arg2Type), true);
  // 0x34: pad4
  // 0x38: pointer
  if (data?.Arg2 !== undefined) view.setBigUint64(56, data.Arg2 === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Arg2))), true);
  // 0x40: pointer
  if (data?.szApplication !== undefined) view.setBigUint64(64, data.szApplication === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szApplication))), true);
  // 0x48: pointer
  if (data?.szUser !== undefined) view.setBigUint64(72, data.szUser === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szUser))), true);
  // 0x50: pointer
  if (data?.szComputer !== undefined) view.setBigUint64(80, data.szComputer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szComputer))), true);
  return buf;
}

export class NTMS_I1_OPREQUESTINFORMATIONAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Request(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get Submitted(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get State(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  get szMessage(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: u32
  get Arg1Type(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: pad4

  // 0x28: pointer
  get Arg1(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: u32
  get Arg2Type(): number {
    return this.view.getUint32(48, true);
  }

  // 0x34: pad4

  // 0x38: pointer
  get Arg2(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: pointer
  get szApplication(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get szUser(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: pointer
  get szComputer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(80, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set Request(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set Submitted(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set State(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  set szMessage(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: u32
  set Arg1Type(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: pad4

  // 0x28: pointer
  set Arg1(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: u32
  set Arg2Type(value: number) {
    this.view.setUint32(48, value, true);
  }

  // 0x34: pad4

  // 0x38: pointer
  set Arg2(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: pointer
  set szApplication(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set szUser(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: pointer
  set szComputer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(80, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_I1_OPREQUESTINFORMATIONW (size: 88)
 */
export interface NTMS_I1_OPREQUESTINFORMATIONW {
  /** u32 */
  Request: number;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  Submitted: Uint8Array | Deno.PointerValue;
  /** u32 */
  State: number;
  /** array */
  szMessage: Deno.PointerValue;
  /** u32 */
  Arg1Type: number;
  /** System.Guid */
  Arg1: Uint8Array | Deno.PointerValue;
  /** u32 */
  Arg2Type: number;
  /** System.Guid */
  Arg2: Uint8Array | Deno.PointerValue;
  /** array */
  szApplication: Deno.PointerValue;
  /** array */
  szUser: Deno.PointerValue;
  /** array */
  szComputer: Deno.PointerValue;
}

export const sizeofNTMS_I1_OPREQUESTINFORMATIONW = 88;

export function allocNTMS_I1_OPREQUESTINFORMATIONW(data?: Partial<NTMS_I1_OPREQUESTINFORMATIONW>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_I1_OPREQUESTINFORMATIONW);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Request !== undefined) view.setUint32(0, Number(data.Request), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.Submitted !== undefined) view.setBigUint64(8, data.Submitted === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Submitted))), true);
  // 0x10: u32
  if (data?.State !== undefined) view.setUint32(16, Number(data.State), true);
  // 0x14: pad4
  // 0x18: pointer
  if (data?.szMessage !== undefined) view.setBigUint64(24, data.szMessage === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szMessage))), true);
  // 0x20: u32
  if (data?.Arg1Type !== undefined) view.setUint32(32, Number(data.Arg1Type), true);
  // 0x24: pad4
  // 0x28: pointer
  if (data?.Arg1 !== undefined) view.setBigUint64(40, data.Arg1 === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Arg1))), true);
  // 0x30: u32
  if (data?.Arg2Type !== undefined) view.setUint32(48, Number(data.Arg2Type), true);
  // 0x34: pad4
  // 0x38: pointer
  if (data?.Arg2 !== undefined) view.setBigUint64(56, data.Arg2 === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Arg2))), true);
  // 0x40: pointer
  if (data?.szApplication !== undefined) view.setBigUint64(64, data.szApplication === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szApplication))), true);
  // 0x48: pointer
  if (data?.szUser !== undefined) view.setBigUint64(72, data.szUser === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szUser))), true);
  // 0x50: pointer
  if (data?.szComputer !== undefined) view.setBigUint64(80, data.szComputer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szComputer))), true);
  return buf;
}

export class NTMS_I1_OPREQUESTINFORMATIONWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Request(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get Submitted(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get State(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  get szMessage(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: u32
  get Arg1Type(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: pad4

  // 0x28: pointer
  get Arg1(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: u32
  get Arg2Type(): number {
    return this.view.getUint32(48, true);
  }

  // 0x34: pad4

  // 0x38: pointer
  get Arg2(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: pointer
  get szApplication(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get szUser(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: pointer
  get szComputer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(80, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set Request(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set Submitted(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set State(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  set szMessage(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: u32
  set Arg1Type(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: pad4

  // 0x28: pointer
  set Arg1(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: u32
  set Arg2Type(value: number) {
    this.view.setUint32(48, value, true);
  }

  // 0x34: pad4

  // 0x38: pointer
  set Arg2(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: pointer
  set szApplication(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set szUser(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: pointer
  set szComputer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(80, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_I1_OBJECTINFORMATIONA (size: 64)
 */
export interface NTMS_I1_OBJECTINFORMATIONA {
  /** u32 */
  dwSize: number;
  /** u32 */
  dwType: number;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  Created: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  Modified: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  ObjectGuid: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.BOOL */
  Enabled: boolean;
  /** u32 */
  dwOperationalState: number;
  /** array */
  szName: Deno.PointerValue;
  /** array */
  szDescription: Deno.PointerValue;
  /** _Info_e__Union */
  Info: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_I1_OBJECTINFORMATIONA = 64;

export function allocNTMS_I1_OBJECTINFORMATIONA(data?: Partial<NTMS_I1_OBJECTINFORMATIONA>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_I1_OBJECTINFORMATIONA);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwSize !== undefined) view.setUint32(0, Number(data.dwSize), true);
  // 0x04: u32
  if (data?.dwType !== undefined) view.setUint32(4, Number(data.dwType), true);
  // 0x08: pointer
  if (data?.Created !== undefined) view.setBigUint64(8, data.Created === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Created))), true);
  // 0x10: pointer
  if (data?.Modified !== undefined) view.setBigUint64(16, data.Modified === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Modified))), true);
  // 0x18: pointer
  if (data?.ObjectGuid !== undefined) view.setBigUint64(24, data.ObjectGuid === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ObjectGuid))), true);
  // 0x20: i32
  if (data?.Enabled !== undefined) view.setInt32(32, Number(data.Enabled), true);
  // 0x24: u32
  if (data?.dwOperationalState !== undefined) view.setUint32(36, Number(data.dwOperationalState), true);
  // 0x28: pointer
  if (data?.szName !== undefined) view.setBigUint64(40, data.szName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szName))), true);
  // 0x30: pointer
  if (data?.szDescription !== undefined) view.setBigUint64(48, data.szDescription === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szDescription))), true);
  // 0x38: pointer
  if (data?.Info !== undefined) view.setBigUint64(56, data.Info === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Info))), true);
  return buf;
}

export class NTMS_I1_OBJECTINFORMATIONAView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get dwType(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get Created(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get Modified(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get ObjectGuid(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: i32
  get Enabled(): number {
    return this.view.getInt32(32, true);
  }

  // 0x24: u32
  get dwOperationalState(): number {
    return this.view.getUint32(36, true);
  }

  // 0x28: pointer
  get szName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get szDescription(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: pointer
  get Info(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set dwType(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set Created(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set Modified(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set ObjectGuid(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: i32
  set Enabled(value: number) {
    this.view.setInt32(32, value, true);
  }

  // 0x24: u32
  set dwOperationalState(value: number) {
    this.view.setUint32(36, value, true);
  }

  // 0x28: pointer
  set szName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set szDescription(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: pointer
  set Info(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_I1_OBJECTINFORMATIONW (size: 64)
 */
export interface NTMS_I1_OBJECTINFORMATIONW {
  /** u32 */
  dwSize: number;
  /** u32 */
  dwType: number;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  Created: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.SYSTEMTIME */
  Modified: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  ObjectGuid: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.BOOL */
  Enabled: boolean;
  /** u32 */
  dwOperationalState: number;
  /** array */
  szName: Deno.PointerValue;
  /** array */
  szDescription: Deno.PointerValue;
  /** _Info_e__Union */
  Info: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_I1_OBJECTINFORMATIONW = 64;

export function allocNTMS_I1_OBJECTINFORMATIONW(data?: Partial<NTMS_I1_OBJECTINFORMATIONW>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_I1_OBJECTINFORMATIONW);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwSize !== undefined) view.setUint32(0, Number(data.dwSize), true);
  // 0x04: u32
  if (data?.dwType !== undefined) view.setUint32(4, Number(data.dwType), true);
  // 0x08: pointer
  if (data?.Created !== undefined) view.setBigUint64(8, data.Created === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Created))), true);
  // 0x10: pointer
  if (data?.Modified !== undefined) view.setBigUint64(16, data.Modified === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Modified))), true);
  // 0x18: pointer
  if (data?.ObjectGuid !== undefined) view.setBigUint64(24, data.ObjectGuid === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ObjectGuid))), true);
  // 0x20: i32
  if (data?.Enabled !== undefined) view.setInt32(32, Number(data.Enabled), true);
  // 0x24: u32
  if (data?.dwOperationalState !== undefined) view.setUint32(36, Number(data.dwOperationalState), true);
  // 0x28: pointer
  if (data?.szName !== undefined) view.setBigUint64(40, data.szName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szName))), true);
  // 0x30: pointer
  if (data?.szDescription !== undefined) view.setBigUint64(48, data.szDescription === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szDescription))), true);
  // 0x38: pointer
  if (data?.Info !== undefined) view.setBigUint64(56, data.Info === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Info))), true);
  return buf;
}

export class NTMS_I1_OBJECTINFORMATIONWView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get dwType(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get Created(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get Modified(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get ObjectGuid(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: i32
  get Enabled(): number {
    return this.view.getInt32(32, true);
  }

  // 0x24: u32
  get dwOperationalState(): number {
    return this.view.getUint32(36, true);
  }

  // 0x28: pointer
  get szName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get szDescription(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: pointer
  get Info(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set dwType(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set Created(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set Modified(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set ObjectGuid(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: i32
  set Enabled(value: number) {
    this.view.setInt32(32, value, true);
  }

  // 0x24: u32
  set dwOperationalState(value: number) {
    this.view.setUint32(36, value, true);
  }

  // 0x28: pointer
  set szName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set szDescription(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: pointer
  set Info(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_FILESYSTEM_INFO (size: 24)
 */
export interface NTMS_FILESYSTEM_INFO {
  /** array */
  FileSystemType: Deno.PointerValue;
  /** array */
  VolumeName: Deno.PointerValue;
  /** u32 */
  SerialNumber: number;
}

export const sizeofNTMS_FILESYSTEM_INFO = 24;

export function allocNTMS_FILESYSTEM_INFO(data?: Partial<NTMS_FILESYSTEM_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_FILESYSTEM_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.FileSystemType !== undefined) view.setBigUint64(0, data.FileSystemType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.FileSystemType))), true);
  // 0x08: pointer
  if (data?.VolumeName !== undefined) view.setBigUint64(8, data.VolumeName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.VolumeName))), true);
  // 0x10: u32
  if (data?.SerialNumber !== undefined) view.setUint32(16, Number(data.SerialNumber), true);
  // 0x14: pad4
  return buf;
}

export class NTMS_FILESYSTEM_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get FileSystemType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get VolumeName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get SerialNumber(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x00: pointer
  set FileSystemType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set VolumeName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set SerialNumber(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.NTMS_NOTIFICATIONINFORMATION (size: 16)
 */
export interface NTMS_NOTIFICATIONINFORMATION {
  /** Windows.Win32.Storage.FileSystem.NtmsNotificationOperations */
  dwOperation: NtmsNotificationOperations;
  /** System.Guid */
  ObjectId: Uint8Array | Deno.PointerValue;
}

export const sizeofNTMS_NOTIFICATIONINFORMATION = 16;

export function allocNTMS_NOTIFICATIONINFORMATION(data?: Partial<NTMS_NOTIFICATIONINFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofNTMS_NOTIFICATIONINFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.dwOperation !== undefined) view.setInt32(0, Number(data.dwOperation), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.ObjectId !== undefined) view.setBigUint64(8, data.ObjectId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ObjectId))), true);
  return buf;
}

export class NTMS_NOTIFICATIONINFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get dwOperation(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get ObjectId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set dwOperation(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set ObjectId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.MediaLabelInfo (size: 32)
 */
export interface MediaLabelInfo {
  /** array */
  LabelType: Deno.PointerValue;
  /** u32 */
  LabelIDSize: number;
  /** array */
  LabelID: Deno.PointerValue;
  /** array */
  LabelAppDescr: Deno.PointerValue;
}

export const sizeofMediaLabelInfo = 32;

export function allocMediaLabelInfo(data?: Partial<MediaLabelInfo>): Uint8Array {
  const buf = new Uint8Array(sizeofMediaLabelInfo);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.LabelType !== undefined) view.setBigUint64(0, data.LabelType === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LabelType))), true);
  // 0x08: u32
  if (data?.LabelIDSize !== undefined) view.setUint32(8, Number(data.LabelIDSize), true);
  // 0x0c: pad4
  // 0x10: pointer
  if (data?.LabelID !== undefined) view.setBigUint64(16, data.LabelID === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LabelID))), true);
  // 0x18: pointer
  if (data?.LabelAppDescr !== undefined) view.setBigUint64(24, data.LabelAppDescr === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LabelAppDescr))), true);
  return buf;
}

export class MediaLabelInfoView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get LabelType(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get LabelIDSize(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  get LabelID(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get LabelAppDescr(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set LabelType(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u32
  set LabelIDSize(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  set LabelID(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set LabelAppDescr(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.CLS_LSN (size: 8)
 */
export interface CLS_LSN {
  /** u64 */
  Internal: bigint | number;
}

export const sizeofCLS_LSN = 8;

export function allocCLS_LSN(data?: Partial<CLS_LSN>): Uint8Array {
  const buf = new Uint8Array(sizeofCLS_LSN);
  const view = new DataView(buf.buffer);
  // 0x00: u64
  if (data?.Internal !== undefined) view.setBigUint64(0, BigInt(data.Internal), true);
  return buf;
}

export class CLS_LSNView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u64
  get Internal(): bigint | number {
    return Number(this.view.getBigUint64(0, true));
  }

  // 0x00: u64
  set Internal(value: bigint | number) {
    this.view.setBigUint64(0, BigInt(value), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.CLFS_NODE_ID (size: 8)
 */
export interface CLFS_NODE_ID {
  /** u32 */
  cType: number;
  /** u32 */
  cbNode: number;
}

export const sizeofCLFS_NODE_ID = 8;

export function allocCLFS_NODE_ID(data?: Partial<CLFS_NODE_ID>): Uint8Array {
  const buf = new Uint8Array(sizeofCLFS_NODE_ID);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cType !== undefined) view.setUint32(0, Number(data.cType), true);
  // 0x04: u32
  if (data?.cbNode !== undefined) view.setUint32(4, Number(data.cbNode), true);
  return buf;
}

export class CLFS_NODE_IDView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cType(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get cbNode(): number {
    return this.view.getUint32(4, true);
  }

  // 0x00: u32
  set cType(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set cbNode(value: number) {
    this.view.setUint32(4, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.CLS_WRITE_ENTRY (size: 16)
 */
export interface CLS_WRITE_ENTRY {
  /** ptr */
  Buffer: Deno.PointerValue | Uint8Array;
  /** u32 */
  ByteLength: number;
}

export const sizeofCLS_WRITE_ENTRY = 16;

export function allocCLS_WRITE_ENTRY(data?: Partial<CLS_WRITE_ENTRY>): Uint8Array {
  const buf = new Uint8Array(sizeofCLS_WRITE_ENTRY);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Buffer !== undefined) view.setBigUint64(0, data.Buffer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Buffer))), true);
  // 0x08: u32
  if (data?.ByteLength !== undefined) view.setUint32(8, Number(data.ByteLength), true);
  // 0x0c: pad4
  return buf;
}

export class CLS_WRITE_ENTRYView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Buffer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get ByteLength(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x00: pointer
  set Buffer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u32
  set ByteLength(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.CLS_INFORMATION (size: 112)
 */
export interface CLS_INFORMATION {
  /** i64 */
  TotalAvailable: bigint | number;
  /** i64 */
  CurrentAvailable: bigint | number;
  /** i64 */
  TotalReservation: bigint | number;
  /** u64 */
  BaseFileSize: bigint | number;
  /** u64 */
  ContainerSize: bigint | number;
  /** u32 */
  TotalContainers: number;
  /** u32 */
  FreeContainers: number;
  /** u32 */
  TotalClients: number;
  /** u32 */
  Attributes: number;
  /** u32 */
  FlushThreshold: number;
  /** u32 */
  SectorSize: number;
  /** Windows.Win32.Storage.FileSystem.CLS_LSN */
  MinArchiveTailLsn: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.CLS_LSN */
  BaseLsn: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.CLS_LSN */
  LastFlushedLsn: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.CLS_LSN */
  LastLsn: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.CLS_LSN */
  RestartLsn: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  Identity: Uint8Array | Deno.PointerValue;
}

export const sizeofCLS_INFORMATION = 112;

export function allocCLS_INFORMATION(data?: Partial<CLS_INFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofCLS_INFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: i64
  if (data?.TotalAvailable !== undefined) view.setBigInt64(0, BigInt(data.TotalAvailable), true);
  // 0x08: i64
  if (data?.CurrentAvailable !== undefined) view.setBigInt64(8, BigInt(data.CurrentAvailable), true);
  // 0x10: i64
  if (data?.TotalReservation !== undefined) view.setBigInt64(16, BigInt(data.TotalReservation), true);
  // 0x18: u64
  if (data?.BaseFileSize !== undefined) view.setBigUint64(24, BigInt(data.BaseFileSize), true);
  // 0x20: u64
  if (data?.ContainerSize !== undefined) view.setBigUint64(32, BigInt(data.ContainerSize), true);
  // 0x28: u32
  if (data?.TotalContainers !== undefined) view.setUint32(40, Number(data.TotalContainers), true);
  // 0x2c: u32
  if (data?.FreeContainers !== undefined) view.setUint32(44, Number(data.FreeContainers), true);
  // 0x30: u32
  if (data?.TotalClients !== undefined) view.setUint32(48, Number(data.TotalClients), true);
  // 0x34: u32
  if (data?.Attributes !== undefined) view.setUint32(52, Number(data.Attributes), true);
  // 0x38: u32
  if (data?.FlushThreshold !== undefined) view.setUint32(56, Number(data.FlushThreshold), true);
  // 0x3c: u32
  if (data?.SectorSize !== undefined) view.setUint32(60, Number(data.SectorSize), true);
  // 0x40: pointer
  if (data?.MinArchiveTailLsn !== undefined) view.setBigUint64(64, data.MinArchiveTailLsn === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MinArchiveTailLsn))), true);
  // 0x48: pointer
  if (data?.BaseLsn !== undefined) view.setBigUint64(72, data.BaseLsn === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.BaseLsn))), true);
  // 0x50: pointer
  if (data?.LastFlushedLsn !== undefined) view.setBigUint64(80, data.LastFlushedLsn === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LastFlushedLsn))), true);
  // 0x58: pointer
  if (data?.LastLsn !== undefined) view.setBigUint64(88, data.LastLsn === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LastLsn))), true);
  // 0x60: pointer
  if (data?.RestartLsn !== undefined) view.setBigUint64(96, data.RestartLsn === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.RestartLsn))), true);
  // 0x68: pointer
  if (data?.Identity !== undefined) view.setBigUint64(104, data.Identity === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Identity))), true);
  return buf;
}

export class CLS_INFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i64
  get TotalAvailable(): bigint | number {
    return Number(this.view.getBigInt64(0, true));
  }

  // 0x08: i64
  get CurrentAvailable(): bigint | number {
    return Number(this.view.getBigInt64(8, true));
  }

  // 0x10: i64
  get TotalReservation(): bigint | number {
    return Number(this.view.getBigInt64(16, true));
  }

  // 0x18: u64
  get BaseFileSize(): bigint | number {
    return Number(this.view.getBigUint64(24, true));
  }

  // 0x20: u64
  get ContainerSize(): bigint | number {
    return Number(this.view.getBigUint64(32, true));
  }

  // 0x28: u32
  get TotalContainers(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: u32
  get FreeContainers(): number {
    return this.view.getUint32(44, true);
  }

  // 0x30: u32
  get TotalClients(): number {
    return this.view.getUint32(48, true);
  }

  // 0x34: u32
  get Attributes(): number {
    return this.view.getUint32(52, true);
  }

  // 0x38: u32
  get FlushThreshold(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: u32
  get SectorSize(): number {
    return this.view.getUint32(60, true);
  }

  // 0x40: pointer
  get MinArchiveTailLsn(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get BaseLsn(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: pointer
  get LastFlushedLsn(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(80, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x58: pointer
  get LastLsn(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(88, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x60: pointer
  get RestartLsn(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(96, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x68: pointer
  get Identity(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(104, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i64
  set TotalAvailable(value: bigint | number) {
    this.view.setBigInt64(0, BigInt(value), true);
  }

  // 0x08: i64
  set CurrentAvailable(value: bigint | number) {
    this.view.setBigInt64(8, BigInt(value), true);
  }

  // 0x10: i64
  set TotalReservation(value: bigint | number) {
    this.view.setBigInt64(16, BigInt(value), true);
  }

  // 0x18: u64
  set BaseFileSize(value: bigint | number) {
    this.view.setBigUint64(24, BigInt(value), true);
  }

  // 0x20: u64
  set ContainerSize(value: bigint | number) {
    this.view.setBigUint64(32, BigInt(value), true);
  }

  // 0x28: u32
  set TotalContainers(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: u32
  set FreeContainers(value: number) {
    this.view.setUint32(44, value, true);
  }

  // 0x30: u32
  set TotalClients(value: number) {
    this.view.setUint32(48, value, true);
  }

  // 0x34: u32
  set Attributes(value: number) {
    this.view.setUint32(52, value, true);
  }

  // 0x38: u32
  set FlushThreshold(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: u32
  set SectorSize(value: number) {
    this.view.setUint32(60, value, true);
  }

  // 0x40: pointer
  set MinArchiveTailLsn(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set BaseLsn(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: pointer
  set LastFlushedLsn(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(80, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x58: pointer
  set LastLsn(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(88, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x60: pointer
  set RestartLsn(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(96, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x68: pointer
  set Identity(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(104, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.CLFS_LOG_NAME_INFORMATION (size: 16)
 */
export interface CLFS_LOG_NAME_INFORMATION {
  /** u16 */
  NameLengthInBytes: number;
  /** array */
  Name: Deno.PointerValue;
}

export const sizeofCLFS_LOG_NAME_INFORMATION = 16;

export function allocCLFS_LOG_NAME_INFORMATION(data?: Partial<CLFS_LOG_NAME_INFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofCLFS_LOG_NAME_INFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u16
  if (data?.NameLengthInBytes !== undefined) view.setUint16(0, Number(data.NameLengthInBytes), true);
  // 0x02: pad6
  // 0x08: pointer
  if (data?.Name !== undefined) view.setBigUint64(8, data.Name === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Name))), true);
  return buf;
}

export class CLFS_LOG_NAME_INFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u16
  get NameLengthInBytes(): number {
    return this.view.getUint16(0, true);
  }

  // 0x02: pad6

  // 0x08: pointer
  get Name(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u16
  set NameLengthInBytes(value: number) {
    this.view.setUint16(0, value, true);
  }

  // 0x02: pad6

  // 0x08: pointer
  set Name(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.CLFS_STREAM_ID_INFORMATION (size: 8)
 */
export interface CLFS_STREAM_ID_INFORMATION {
  /** u8 */
  StreamIdentifier: number;
}

export const sizeofCLFS_STREAM_ID_INFORMATION = 8;

export function allocCLFS_STREAM_ID_INFORMATION(data?: Partial<CLFS_STREAM_ID_INFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofCLFS_STREAM_ID_INFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u8
  if (data?.StreamIdentifier !== undefined) view.setUint8(0, Number(data.StreamIdentifier));
  // 0x01: pad7
  return buf;
}

export class CLFS_STREAM_ID_INFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u8
  get StreamIdentifier(): number {
    return this.view.getUint8(0);
  }

  // 0x01: pad7

  // 0x00: u8
  set StreamIdentifier(value: number) {
    this.view.setUint8(0, value);
  }

  // 0x01: pad7
}

/**
 * Windows.Win32.Storage.FileSystem.CLFS_PHYSICAL_LSN_INFORMATION (size: 24)
 */
export interface CLFS_PHYSICAL_LSN_INFORMATION {
  /** u8 */
  StreamIdentifier: number;
  /** Windows.Win32.Storage.FileSystem.CLS_LSN */
  VirtualLsn: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.CLS_LSN */
  PhysicalLsn: Uint8Array | Deno.PointerValue;
}

export const sizeofCLFS_PHYSICAL_LSN_INFORMATION = 24;

export function allocCLFS_PHYSICAL_LSN_INFORMATION(data?: Partial<CLFS_PHYSICAL_LSN_INFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofCLFS_PHYSICAL_LSN_INFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u8
  if (data?.StreamIdentifier !== undefined) view.setUint8(0, Number(data.StreamIdentifier));
  // 0x01: pad7
  // 0x08: pointer
  if (data?.VirtualLsn !== undefined) view.setBigUint64(8, data.VirtualLsn === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.VirtualLsn))), true);
  // 0x10: pointer
  if (data?.PhysicalLsn !== undefined) view.setBigUint64(16, data.PhysicalLsn === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PhysicalLsn))), true);
  return buf;
}

export class CLFS_PHYSICAL_LSN_INFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u8
  get StreamIdentifier(): number {
    return this.view.getUint8(0);
  }

  // 0x01: pad7

  // 0x08: pointer
  get VirtualLsn(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get PhysicalLsn(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u8
  set StreamIdentifier(value: number) {
    this.view.setUint8(0, value);
  }

  // 0x01: pad7

  // 0x08: pointer
  set VirtualLsn(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set PhysicalLsn(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.CLS_CONTAINER_INFORMATION (size: 72)
 */
export interface CLS_CONTAINER_INFORMATION {
  /** u32 */
  FileAttributes: number;
  /** u64 */
  CreationTime: bigint | number;
  /** u64 */
  LastAccessTime: bigint | number;
  /** u64 */
  LastWriteTime: bigint | number;
  /** i64 */
  ContainerSize: bigint | number;
  /** u32 */
  FileNameActualLength: number;
  /** u32 */
  FileNameLength: number;
  /** array */
  FileName: Deno.PointerValue;
  /** u32 */
  State: number;
  /** u32 */
  PhysicalContainerId: number;
  /** u32 */
  LogicalContainerId: number;
}

export const sizeofCLS_CONTAINER_INFORMATION = 72;

export function allocCLS_CONTAINER_INFORMATION(data?: Partial<CLS_CONTAINER_INFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofCLS_CONTAINER_INFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.FileAttributes !== undefined) view.setUint32(0, Number(data.FileAttributes), true);
  // 0x04: pad4
  // 0x08: u64
  if (data?.CreationTime !== undefined) view.setBigUint64(8, BigInt(data.CreationTime), true);
  // 0x10: u64
  if (data?.LastAccessTime !== undefined) view.setBigUint64(16, BigInt(data.LastAccessTime), true);
  // 0x18: u64
  if (data?.LastWriteTime !== undefined) view.setBigUint64(24, BigInt(data.LastWriteTime), true);
  // 0x20: i64
  if (data?.ContainerSize !== undefined) view.setBigInt64(32, BigInt(data.ContainerSize), true);
  // 0x28: u32
  if (data?.FileNameActualLength !== undefined) view.setUint32(40, Number(data.FileNameActualLength), true);
  // 0x2c: u32
  if (data?.FileNameLength !== undefined) view.setUint32(44, Number(data.FileNameLength), true);
  // 0x30: pointer
  if (data?.FileName !== undefined) view.setBigUint64(48, data.FileName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.FileName))), true);
  // 0x38: u32
  if (data?.State !== undefined) view.setUint32(56, Number(data.State), true);
  // 0x3c: u32
  if (data?.PhysicalContainerId !== undefined) view.setUint32(60, Number(data.PhysicalContainerId), true);
  // 0x40: u32
  if (data?.LogicalContainerId !== undefined) view.setUint32(64, Number(data.LogicalContainerId), true);
  // 0x44: pad4
  return buf;
}

export class CLS_CONTAINER_INFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get FileAttributes(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: u64
  get CreationTime(): bigint | number {
    return Number(this.view.getBigUint64(8, true));
  }

  // 0x10: u64
  get LastAccessTime(): bigint | number {
    return Number(this.view.getBigUint64(16, true));
  }

  // 0x18: u64
  get LastWriteTime(): bigint | number {
    return Number(this.view.getBigUint64(24, true));
  }

  // 0x20: i64
  get ContainerSize(): bigint | number {
    return Number(this.view.getBigInt64(32, true));
  }

  // 0x28: u32
  get FileNameActualLength(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: u32
  get FileNameLength(): number {
    return this.view.getUint32(44, true);
  }

  // 0x30: pointer
  get FileName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: u32
  get State(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: u32
  get PhysicalContainerId(): number {
    return this.view.getUint32(60, true);
  }

  // 0x40: u32
  get LogicalContainerId(): number {
    return this.view.getUint32(64, true);
  }

  // 0x44: pad4

  // 0x00: u32
  set FileAttributes(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: u64
  set CreationTime(value: bigint | number) {
    this.view.setBigUint64(8, BigInt(value), true);
  }

  // 0x10: u64
  set LastAccessTime(value: bigint | number) {
    this.view.setBigUint64(16, BigInt(value), true);
  }

  // 0x18: u64
  set LastWriteTime(value: bigint | number) {
    this.view.setBigUint64(24, BigInt(value), true);
  }

  // 0x20: i64
  set ContainerSize(value: bigint | number) {
    this.view.setBigInt64(32, BigInt(value), true);
  }

  // 0x28: u32
  set FileNameActualLength(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: u32
  set FileNameLength(value: number) {
    this.view.setUint32(44, value, true);
  }

  // 0x30: pointer
  set FileName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: u32
  set State(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: u32
  set PhysicalContainerId(value: number) {
    this.view.setUint32(60, value, true);
  }

  // 0x40: u32
  set LogicalContainerId(value: number) {
    this.view.setUint32(64, value, true);
  }

  // 0x44: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.CLS_IO_STATISTICS_HEADER (size: 16)
 */
export interface CLS_IO_STATISTICS_HEADER {
  /** u8 */
  ubMajorVersion: number;
  /** u8 */
  ubMinorVersion: number;
  /** Windows.Win32.Storage.FileSystem.CLFS_IOSTATS_CLASS */
  eStatsClass: CLFS_IOSTATS_CLASS;
  /** u16 */
  cbLength: number;
  /** u32 */
  coffData: number;
}

export const sizeofCLS_IO_STATISTICS_HEADER = 16;

export function allocCLS_IO_STATISTICS_HEADER(data?: Partial<CLS_IO_STATISTICS_HEADER>): Uint8Array {
  const buf = new Uint8Array(sizeofCLS_IO_STATISTICS_HEADER);
  const view = new DataView(buf.buffer);
  // 0x00: u8
  if (data?.ubMajorVersion !== undefined) view.setUint8(0, Number(data.ubMajorVersion));
  // 0x01: u8
  if (data?.ubMinorVersion !== undefined) view.setUint8(1, Number(data.ubMinorVersion));
  // 0x02: i32
  if (data?.eStatsClass !== undefined) view.setInt32(2, Number(data.eStatsClass), true);
  // 0x06: u16
  if (data?.cbLength !== undefined) view.setUint16(6, Number(data.cbLength), true);
  // 0x08: u32
  if (data?.coffData !== undefined) view.setUint32(8, Number(data.coffData), true);
  // 0x0c: pad4
  return buf;
}

export class CLS_IO_STATISTICS_HEADERView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u8
  get ubMajorVersion(): number {
    return this.view.getUint8(0);
  }

  // 0x01: u8
  get ubMinorVersion(): number {
    return this.view.getUint8(1);
  }

  // 0x02: i32
  get eStatsClass(): number {
    return this.view.getInt32(2, true);
  }

  // 0x06: u16
  get cbLength(): number {
    return this.view.getUint16(6, true);
  }

  // 0x08: u32
  get coffData(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x00: u8
  set ubMajorVersion(value: number) {
    this.view.setUint8(0, value);
  }

  // 0x01: u8
  set ubMinorVersion(value: number) {
    this.view.setUint8(1, value);
  }

  // 0x02: i32
  set eStatsClass(value: number) {
    this.view.setInt32(2, value, true);
  }

  // 0x06: u16
  set cbLength(value: number) {
    this.view.setUint16(6, value, true);
  }

  // 0x08: u32
  set coffData(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.CLS_IO_STATISTICS (size: 40)
 */
export interface CLS_IO_STATISTICS {
  /** Windows.Win32.Storage.FileSystem.CLS_IO_STATISTICS_HEADER */
  hdrIoStats: Uint8Array | Deno.PointerValue;
  /** u64 */
  cFlush: bigint | number;
  /** u64 */
  cbFlush: bigint | number;
  /** u64 */
  cMetaFlush: bigint | number;
  /** u64 */
  cbMetaFlush: bigint | number;
}

export const sizeofCLS_IO_STATISTICS = 40;

export function allocCLS_IO_STATISTICS(data?: Partial<CLS_IO_STATISTICS>): Uint8Array {
  const buf = new Uint8Array(sizeofCLS_IO_STATISTICS);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.hdrIoStats !== undefined) view.setBigUint64(0, data.hdrIoStats === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hdrIoStats))), true);
  // 0x08: u64
  if (data?.cFlush !== undefined) view.setBigUint64(8, BigInt(data.cFlush), true);
  // 0x10: u64
  if (data?.cbFlush !== undefined) view.setBigUint64(16, BigInt(data.cbFlush), true);
  // 0x18: u64
  if (data?.cMetaFlush !== undefined) view.setBigUint64(24, BigInt(data.cMetaFlush), true);
  // 0x20: u64
  if (data?.cbMetaFlush !== undefined) view.setBigUint64(32, BigInt(data.cbMetaFlush), true);
  return buf;
}

export class CLS_IO_STATISTICSView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get hdrIoStats(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u64
  get cFlush(): bigint | number {
    return Number(this.view.getBigUint64(8, true));
  }

  // 0x10: u64
  get cbFlush(): bigint | number {
    return Number(this.view.getBigUint64(16, true));
  }

  // 0x18: u64
  get cMetaFlush(): bigint | number {
    return Number(this.view.getBigUint64(24, true));
  }

  // 0x20: u64
  get cbMetaFlush(): bigint | number {
    return Number(this.view.getBigUint64(32, true));
  }

  // 0x00: pointer
  set hdrIoStats(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u64
  set cFlush(value: bigint | number) {
    this.view.setBigUint64(8, BigInt(value), true);
  }

  // 0x10: u64
  set cbFlush(value: bigint | number) {
    this.view.setBigUint64(16, BigInt(value), true);
  }

  // 0x18: u64
  set cMetaFlush(value: bigint | number) {
    this.view.setBigUint64(24, BigInt(value), true);
  }

  // 0x20: u64
  set cbMetaFlush(value: bigint | number) {
    this.view.setBigUint64(32, BigInt(value), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.CLS_SCAN_CONTEXT (size: 40)
 */
export interface CLS_SCAN_CONTEXT {
  /** Windows.Win32.Storage.FileSystem.CLFS_NODE_ID */
  cidNode: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.HANDLE */
  hLog: Uint8Array | Deno.PointerValue;
  /** u32 */
  cIndex: number;
  /** u32 */
  cContainers: number;
  /** u32 */
  cContainersReturned: number;
  /** u8 */
  eScanMode: number;
  /** ptr */
  pinfoContainer: Deno.PointerValue | Uint8Array;
}

export const sizeofCLS_SCAN_CONTEXT = 40;

export function allocCLS_SCAN_CONTEXT(data?: Partial<CLS_SCAN_CONTEXT>): Uint8Array {
  const buf = new Uint8Array(sizeofCLS_SCAN_CONTEXT);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.cidNode !== undefined) view.setBigUint64(0, data.cidNode === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.cidNode))), true);
  // 0x08: pointer
  if (data?.hLog !== undefined) view.setBigUint64(8, data.hLog === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hLog))), true);
  // 0x10: u32
  if (data?.cIndex !== undefined) view.setUint32(16, Number(data.cIndex), true);
  // 0x14: u32
  if (data?.cContainers !== undefined) view.setUint32(20, Number(data.cContainers), true);
  // 0x18: u32
  if (data?.cContainersReturned !== undefined) view.setUint32(24, Number(data.cContainersReturned), true);
  // 0x1c: u8
  if (data?.eScanMode !== undefined) view.setUint8(28, Number(data.eScanMode));
  // 0x1d: pad3
  // 0x20: pointer
  if (data?.pinfoContainer !== undefined) view.setBigUint64(32, data.pinfoContainer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pinfoContainer))), true);
  return buf;
}

export class CLS_SCAN_CONTEXTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get cidNode(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get hLog(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get cIndex(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get cContainers(): number {
    return this.view.getUint32(20, true);
  }

  // 0x18: u32
  get cContainersReturned(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: u8
  get eScanMode(): number {
    return this.view.getUint8(28);
  }

  // 0x1d: pad3

  // 0x20: pointer
  get pinfoContainer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set cidNode(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set hLog(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set cIndex(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set cContainers(value: number) {
    this.view.setUint32(20, value, true);
  }

  // 0x18: u32
  set cContainersReturned(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: u8
  set eScanMode(value: number) {
    this.view.setUint8(28, value);
  }

  // 0x1d: pad3

  // 0x20: pointer
  set pinfoContainer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.CLS_ARCHIVE_DESCRIPTOR (size: 24)
 */
export interface CLS_ARCHIVE_DESCRIPTOR {
  /** u64 */
  coffLow: bigint | number;
  /** u64 */
  coffHigh: bigint | number;
  /** Windows.Win32.Storage.FileSystem.CLS_CONTAINER_INFORMATION */
  infoContainer: Uint8Array | Deno.PointerValue;
}

export const sizeofCLS_ARCHIVE_DESCRIPTOR = 24;

export function allocCLS_ARCHIVE_DESCRIPTOR(data?: Partial<CLS_ARCHIVE_DESCRIPTOR>): Uint8Array {
  const buf = new Uint8Array(sizeofCLS_ARCHIVE_DESCRIPTOR);
  const view = new DataView(buf.buffer);
  // 0x00: u64
  if (data?.coffLow !== undefined) view.setBigUint64(0, BigInt(data.coffLow), true);
  // 0x08: u64
  if (data?.coffHigh !== undefined) view.setBigUint64(8, BigInt(data.coffHigh), true);
  // 0x10: pointer
  if (data?.infoContainer !== undefined) view.setBigUint64(16, data.infoContainer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.infoContainer))), true);
  return buf;
}

export class CLS_ARCHIVE_DESCRIPTORView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u64
  get coffLow(): bigint | number {
    return Number(this.view.getBigUint64(0, true));
  }

  // 0x08: u64
  get coffHigh(): bigint | number {
    return Number(this.view.getBigUint64(8, true));
  }

  // 0x10: pointer
  get infoContainer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u64
  set coffLow(value: bigint | number) {
    this.view.setBigUint64(0, BigInt(value), true);
  }

  // 0x08: u64
  set coffHigh(value: bigint | number) {
    this.view.setBigUint64(8, BigInt(value), true);
  }

  // 0x10: pointer
  set infoContainer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * _MaximumSize_e__Struct (size: 8)
 */
export interface _MaximumSize_e__Struct {
  /** u32 */
  Containers: number;
}

export const sizeof_MaximumSize_e__Struct = 8;

export function alloc_MaximumSize_e__Struct(data?: Partial<_MaximumSize_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_MaximumSize_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Containers !== undefined) view.setUint32(0, Number(data.Containers), true);
  // 0x04: pad4
  return buf;
}

export class _MaximumSize_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Containers(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x00: u32
  set Containers(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * _MinimumSize_e__Struct (size: 8)
 */
export interface _MinimumSize_e__Struct {
  /** u32 */
  Containers: number;
}

export const sizeof_MinimumSize_e__Struct = 8;

export function alloc_MinimumSize_e__Struct(data?: Partial<_MinimumSize_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_MinimumSize_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Containers !== undefined) view.setUint32(0, Number(data.Containers), true);
  // 0x04: pad4
  return buf;
}

export class _MinimumSize_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Containers(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x00: u32
  set Containers(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * _NewContainerSize_e__Struct (size: 8)
 */
export interface _NewContainerSize_e__Struct {
  /** u32 */
  SizeInBytes: number;
}

export const sizeof_NewContainerSize_e__Struct = 8;

export function alloc_NewContainerSize_e__Struct(data?: Partial<_NewContainerSize_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_NewContainerSize_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.SizeInBytes !== undefined) view.setUint32(0, Number(data.SizeInBytes), true);
  // 0x04: pad4
  return buf;
}

export class _NewContainerSize_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get SizeInBytes(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x00: u32
  set SizeInBytes(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * _GrowthRate_e__Struct (size: 8)
 */
export interface _GrowthRate_e__Struct {
  /** u32 */
  AbsoluteGrowthInContainers: number;
  /** u32 */
  RelativeGrowthPercentage: number;
}

export const sizeof_GrowthRate_e__Struct = 8;

export function alloc_GrowthRate_e__Struct(data?: Partial<_GrowthRate_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_GrowthRate_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.AbsoluteGrowthInContainers !== undefined) view.setUint32(0, Number(data.AbsoluteGrowthInContainers), true);
  // 0x04: u32
  if (data?.RelativeGrowthPercentage !== undefined) view.setUint32(4, Number(data.RelativeGrowthPercentage), true);
  return buf;
}

export class _GrowthRate_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get AbsoluteGrowthInContainers(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get RelativeGrowthPercentage(): number {
    return this.view.getUint32(4, true);
  }

  // 0x00: u32
  set AbsoluteGrowthInContainers(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set RelativeGrowthPercentage(value: number) {
    this.view.setUint32(4, value, true);
  }
}

/**
 * _LogTail_e__Struct (size: 8)
 */
export interface _LogTail_e__Struct {
  /** u32 */
  MinimumAvailablePercentage: number;
  /** u32 */
  MinimumAvailableContainers: number;
}

export const sizeof_LogTail_e__Struct = 8;

export function alloc_LogTail_e__Struct(data?: Partial<_LogTail_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_LogTail_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.MinimumAvailablePercentage !== undefined) view.setUint32(0, Number(data.MinimumAvailablePercentage), true);
  // 0x04: u32
  if (data?.MinimumAvailableContainers !== undefined) view.setUint32(4, Number(data.MinimumAvailableContainers), true);
  return buf;
}

export class _LogTail_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get MinimumAvailablePercentage(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get MinimumAvailableContainers(): number {
    return this.view.getUint32(4, true);
  }

  // 0x00: u32
  set MinimumAvailablePercentage(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set MinimumAvailableContainers(value: number) {
    this.view.setUint32(4, value, true);
  }
}

/**
 * _AutoShrink_e__Struct (size: 8)
 */
export interface _AutoShrink_e__Struct {
  /** u32 */
  Percentage: number;
}

export const sizeof_AutoShrink_e__Struct = 8;

export function alloc_AutoShrink_e__Struct(data?: Partial<_AutoShrink_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_AutoShrink_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Percentage !== undefined) view.setUint32(0, Number(data.Percentage), true);
  // 0x04: pad4
  return buf;
}

export class _AutoShrink_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Percentage(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x00: u32
  set Percentage(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * _AutoGrow_e__Struct (size: 8)
 */
export interface _AutoGrow_e__Struct {
  /** u32 */
  Enabled: number;
}

export const sizeof_AutoGrow_e__Struct = 8;

export function alloc_AutoGrow_e__Struct(data?: Partial<_AutoGrow_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_AutoGrow_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Enabled !== undefined) view.setUint32(0, Number(data.Enabled), true);
  // 0x04: pad4
  return buf;
}

export class _AutoGrow_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Enabled(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x00: u32
  set Enabled(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * _NewContainerPrefix_e__Struct (size: 16)
 */
export interface _NewContainerPrefix_e__Struct {
  /** u16 */
  PrefixLengthInBytes: number;
  /** array */
  PrefixString: Deno.PointerValue;
}

export const sizeof_NewContainerPrefix_e__Struct = 16;

export function alloc_NewContainerPrefix_e__Struct(data?: Partial<_NewContainerPrefix_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_NewContainerPrefix_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: u16
  if (data?.PrefixLengthInBytes !== undefined) view.setUint16(0, Number(data.PrefixLengthInBytes), true);
  // 0x02: pad6
  // 0x08: pointer
  if (data?.PrefixString !== undefined) view.setBigUint64(8, data.PrefixString === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PrefixString))), true);
  return buf;
}

export class _NewContainerPrefix_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u16
  get PrefixLengthInBytes(): number {
    return this.view.getUint16(0, true);
  }

  // 0x02: pad6

  // 0x08: pointer
  get PrefixString(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u16
  set PrefixLengthInBytes(value: number) {
    this.view.setUint16(0, value, true);
  }

  // 0x02: pad6

  // 0x08: pointer
  set PrefixString(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * _NewContainerSuffix_e__Struct (size: 8)
 */
export interface _NewContainerSuffix_e__Struct {
  /** u64 */
  NextContainerSuffix: bigint | number;
}

export const sizeof_NewContainerSuffix_e__Struct = 8;

export function alloc_NewContainerSuffix_e__Struct(data?: Partial<_NewContainerSuffix_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_NewContainerSuffix_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: u64
  if (data?.NextContainerSuffix !== undefined) view.setBigUint64(0, BigInt(data.NextContainerSuffix), true);
  return buf;
}

export class _NewContainerSuffix_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u64
  get NextContainerSuffix(): bigint | number {
    return Number(this.view.getBigUint64(0, true));
  }

  // 0x00: u64
  set NextContainerSuffix(value: bigint | number) {
    this.view.setBigUint64(0, BigInt(value), true);
  }
}

/**
 * _NewContainerExtension_e__Struct (size: 16)
 */
export interface _NewContainerExtension_e__Struct {
  /** u16 */
  ExtensionLengthInBytes: number;
  /** array */
  ExtensionString: Deno.PointerValue;
}

export const sizeof_NewContainerExtension_e__Struct = 16;

export function alloc_NewContainerExtension_e__Struct(data?: Partial<_NewContainerExtension_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_NewContainerExtension_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: u16
  if (data?.ExtensionLengthInBytes !== undefined) view.setUint16(0, Number(data.ExtensionLengthInBytes), true);
  // 0x02: pad6
  // 0x08: pointer
  if (data?.ExtensionString !== undefined) view.setBigUint64(8, data.ExtensionString === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ExtensionString))), true);
  return buf;
}

export class _NewContainerExtension_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u16
  get ExtensionLengthInBytes(): number {
    return this.view.getUint16(0, true);
  }

  // 0x02: pad6

  // 0x08: pointer
  get ExtensionString(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u16
  set ExtensionLengthInBytes(value: number) {
    this.view.setUint16(0, value, true);
  }

  // 0x02: pad6

  // 0x08: pointer
  set ExtensionString(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * _PolicyParameters_e__Union (size: 80)
 */
export interface _PolicyParameters_e__Union {
  /** _MaximumSize_e__Struct */
  MaximumSize: Uint8Array | Deno.PointerValue;
  /** _MinimumSize_e__Struct */
  MinimumSize: Uint8Array | Deno.PointerValue;
  /** _NewContainerSize_e__Struct */
  NewContainerSize: Uint8Array | Deno.PointerValue;
  /** _GrowthRate_e__Struct */
  GrowthRate: Uint8Array | Deno.PointerValue;
  /** _LogTail_e__Struct */
  LogTail: Uint8Array | Deno.PointerValue;
  /** _AutoShrink_e__Struct */
  AutoShrink: Uint8Array | Deno.PointerValue;
  /** _AutoGrow_e__Struct */
  AutoGrow: Uint8Array | Deno.PointerValue;
  /** _NewContainerPrefix_e__Struct */
  NewContainerPrefix: Uint8Array | Deno.PointerValue;
  /** _NewContainerSuffix_e__Struct */
  NewContainerSuffix: Uint8Array | Deno.PointerValue;
  /** _NewContainerExtension_e__Struct */
  NewContainerExtension: Uint8Array | Deno.PointerValue;
}

export const sizeof_PolicyParameters_e__Union = 80;

export function alloc_PolicyParameters_e__Union(data?: Partial<_PolicyParameters_e__Union>): Uint8Array {
  const buf = new Uint8Array(sizeof_PolicyParameters_e__Union);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.MaximumSize !== undefined) view.setBigUint64(0, data.MaximumSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MaximumSize))), true);
  // 0x08: pointer
  if (data?.MinimumSize !== undefined) view.setBigUint64(8, data.MinimumSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.MinimumSize))), true);
  // 0x10: pointer
  if (data?.NewContainerSize !== undefined) view.setBigUint64(16, data.NewContainerSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.NewContainerSize))), true);
  // 0x18: pointer
  if (data?.GrowthRate !== undefined) view.setBigUint64(24, data.GrowthRate === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.GrowthRate))), true);
  // 0x20: pointer
  if (data?.LogTail !== undefined) view.setBigUint64(32, data.LogTail === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LogTail))), true);
  // 0x28: pointer
  if (data?.AutoShrink !== undefined) view.setBigUint64(40, data.AutoShrink === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.AutoShrink))), true);
  // 0x30: pointer
  if (data?.AutoGrow !== undefined) view.setBigUint64(48, data.AutoGrow === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.AutoGrow))), true);
  // 0x38: pointer
  if (data?.NewContainerPrefix !== undefined) view.setBigUint64(56, data.NewContainerPrefix === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.NewContainerPrefix))), true);
  // 0x40: pointer
  if (data?.NewContainerSuffix !== undefined) view.setBigUint64(64, data.NewContainerSuffix === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.NewContainerSuffix))), true);
  // 0x48: pointer
  if (data?.NewContainerExtension !== undefined) view.setBigUint64(72, data.NewContainerExtension === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.NewContainerExtension))), true);
  return buf;
}

export class _PolicyParameters_e__UnionView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get MaximumSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get MinimumSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get NewContainerSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get GrowthRate(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get LogTail(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get AutoShrink(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get AutoGrow(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: pointer
  get NewContainerPrefix(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: pointer
  get NewContainerSuffix(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get NewContainerExtension(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set MaximumSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set MinimumSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set NewContainerSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set GrowthRate(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set LogTail(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set AutoShrink(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set AutoGrow(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: pointer
  set NewContainerPrefix(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: pointer
  set NewContainerSuffix(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set NewContainerExtension(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.CLFS_MGMT_POLICY (size: 24)
 */
export interface CLFS_MGMT_POLICY {
  /** u32 */
  Version: number;
  /** u32 */
  LengthInBytes: number;
  /** u32 */
  PolicyFlags: number;
  /** Windows.Win32.Storage.FileSystem.CLFS_MGMT_POLICY_TYPE */
  PolicyType: CLFS_MGMT_POLICY_TYPE;
  /** _PolicyParameters_e__Union */
  PolicyParameters: Uint8Array | Deno.PointerValue;
}

export const sizeofCLFS_MGMT_POLICY = 24;

export function allocCLFS_MGMT_POLICY(data?: Partial<CLFS_MGMT_POLICY>): Uint8Array {
  const buf = new Uint8Array(sizeofCLFS_MGMT_POLICY);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Version !== undefined) view.setUint32(0, Number(data.Version), true);
  // 0x04: u32
  if (data?.LengthInBytes !== undefined) view.setUint32(4, Number(data.LengthInBytes), true);
  // 0x08: u32
  if (data?.PolicyFlags !== undefined) view.setUint32(8, Number(data.PolicyFlags), true);
  // 0x0c: i32
  if (data?.PolicyType !== undefined) view.setInt32(12, Number(data.PolicyType), true);
  // 0x10: pointer
  if (data?.PolicyParameters !== undefined) view.setBigUint64(16, data.PolicyParameters === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PolicyParameters))), true);
  return buf;
}

export class CLFS_MGMT_POLICYView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Version(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get LengthInBytes(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get PolicyFlags(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: i32
  get PolicyType(): number {
    return this.view.getInt32(12, true);
  }

  // 0x10: pointer
  get PolicyParameters(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set Version(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set LengthInBytes(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set PolicyFlags(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: i32
  set PolicyType(value: number) {
    this.view.setInt32(12, value, true);
  }

  // 0x10: pointer
  set PolicyParameters(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.CLFS_MGMT_NOTIFICATION (size: 24)
 */
export interface CLFS_MGMT_NOTIFICATION {
  /** Windows.Win32.Storage.FileSystem.CLFS_MGMT_NOTIFICATION_TYPE */
  Notification: CLFS_MGMT_NOTIFICATION_TYPE;
  /** Windows.Win32.Storage.FileSystem.CLS_LSN */
  Lsn: Uint8Array | Deno.PointerValue;
  /** u16 */
  LogIsPinned: number;
}

export const sizeofCLFS_MGMT_NOTIFICATION = 24;

export function allocCLFS_MGMT_NOTIFICATION(data?: Partial<CLFS_MGMT_NOTIFICATION>): Uint8Array {
  const buf = new Uint8Array(sizeofCLFS_MGMT_NOTIFICATION);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.Notification !== undefined) view.setInt32(0, Number(data.Notification), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.Lsn !== undefined) view.setBigUint64(8, data.Lsn === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Lsn))), true);
  // 0x10: u16
  if (data?.LogIsPinned !== undefined) view.setUint16(16, Number(data.LogIsPinned), true);
  // 0x12: pad6
  return buf;
}

export class CLFS_MGMT_NOTIFICATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get Notification(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get Lsn(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u16
  get LogIsPinned(): number {
    return this.view.getUint16(16, true);
  }

  // 0x12: pad6

  // 0x00: i32
  set Notification(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set Lsn(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u16
  set LogIsPinned(value: number) {
    this.view.setUint16(16, value, true);
  }

  // 0x12: pad6
}

/**
 * Windows.Win32.Storage.FileSystem.LOG_MANAGEMENT_CALLBACKS (size: 32)
 */
export interface LOG_MANAGEMENT_CALLBACKS {
  /** ptr */
  CallbackContext: Deno.PointerValue | Uint8Array;
  /** Windows.Win32.Storage.FileSystem.PLOG_TAIL_ADVANCE_CALLBACK */
  AdvanceTailCallback: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.PLOG_FULL_HANDLER_CALLBACK */
  LogFullHandlerCallback: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.PLOG_UNPINNED_CALLBACK */
  LogUnpinnedCallback: Uint8Array | Deno.PointerValue;
}

export const sizeofLOG_MANAGEMENT_CALLBACKS = 32;

export function allocLOG_MANAGEMENT_CALLBACKS(data?: Partial<LOG_MANAGEMENT_CALLBACKS>): Uint8Array {
  const buf = new Uint8Array(sizeofLOG_MANAGEMENT_CALLBACKS);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.CallbackContext !== undefined) view.setBigUint64(0, data.CallbackContext === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CallbackContext))), true);
  // 0x08: pointer
  if (data?.AdvanceTailCallback !== undefined) view.setBigUint64(8, data.AdvanceTailCallback === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.AdvanceTailCallback))), true);
  // 0x10: pointer
  if (data?.LogFullHandlerCallback !== undefined) view.setBigUint64(16, data.LogFullHandlerCallback === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LogFullHandlerCallback))), true);
  // 0x18: pointer
  if (data?.LogUnpinnedCallback !== undefined) view.setBigUint64(24, data.LogUnpinnedCallback === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LogUnpinnedCallback))), true);
  return buf;
}

export class LOG_MANAGEMENT_CALLBACKSView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get CallbackContext(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get AdvanceTailCallback(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get LogFullHandlerCallback(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get LogUnpinnedCallback(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set CallbackContext(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set AdvanceTailCallback(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set LogFullHandlerCallback(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set LogUnpinnedCallback(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.DISKQUOTA_USER_INFORMATION (size: 24)
 */
export interface DISKQUOTA_USER_INFORMATION {
  /** i64 */
  QuotaUsed: bigint | number;
  /** i64 */
  QuotaThreshold: bigint | number;
  /** i64 */
  QuotaLimit: bigint | number;
}

export const sizeofDISKQUOTA_USER_INFORMATION = 24;

export function allocDISKQUOTA_USER_INFORMATION(data?: Partial<DISKQUOTA_USER_INFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofDISKQUOTA_USER_INFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: i64
  if (data?.QuotaUsed !== undefined) view.setBigInt64(0, BigInt(data.QuotaUsed), true);
  // 0x08: i64
  if (data?.QuotaThreshold !== undefined) view.setBigInt64(8, BigInt(data.QuotaThreshold), true);
  // 0x10: i64
  if (data?.QuotaLimit !== undefined) view.setBigInt64(16, BigInt(data.QuotaLimit), true);
  return buf;
}

export class DISKQUOTA_USER_INFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i64
  get QuotaUsed(): bigint | number {
    return Number(this.view.getBigInt64(0, true));
  }

  // 0x08: i64
  get QuotaThreshold(): bigint | number {
    return Number(this.view.getBigInt64(8, true));
  }

  // 0x10: i64
  get QuotaLimit(): bigint | number {
    return Number(this.view.getBigInt64(16, true));
  }

  // 0x00: i64
  set QuotaUsed(value: bigint | number) {
    this.view.setBigInt64(0, BigInt(value), true);
  }

  // 0x08: i64
  set QuotaThreshold(value: bigint | number) {
    this.view.setBigInt64(8, BigInt(value), true);
  }

  // 0x10: i64
  set QuotaLimit(value: bigint | number) {
    this.view.setBigInt64(16, BigInt(value), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.EFS_CERTIFICATE_BLOB (size: 16)
 */
export interface EFS_CERTIFICATE_BLOB {
  /** u32 */
  dwCertEncodingType: number;
  /** u32 */
  cbData: number;
  /** ptr */
  pbData: Deno.PointerValue | Uint8Array;
}

export const sizeofEFS_CERTIFICATE_BLOB = 16;

export function allocEFS_CERTIFICATE_BLOB(data?: Partial<EFS_CERTIFICATE_BLOB>): Uint8Array {
  const buf = new Uint8Array(sizeofEFS_CERTIFICATE_BLOB);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwCertEncodingType !== undefined) view.setUint32(0, Number(data.dwCertEncodingType), true);
  // 0x04: u32
  if (data?.cbData !== undefined) view.setUint32(4, Number(data.cbData), true);
  // 0x08: pointer
  if (data?.pbData !== undefined) view.setBigUint64(8, data.pbData === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pbData))), true);
  return buf;
}

export class EFS_CERTIFICATE_BLOBView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwCertEncodingType(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get cbData(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get pbData(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwCertEncodingType(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set cbData(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set pbData(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.EFS_HASH_BLOB (size: 16)
 */
export interface EFS_HASH_BLOB {
  /** u32 */
  cbData: number;
  /** ptr */
  pbData: Deno.PointerValue | Uint8Array;
}

export const sizeofEFS_HASH_BLOB = 16;

export function allocEFS_HASH_BLOB(data?: Partial<EFS_HASH_BLOB>): Uint8Array {
  const buf = new Uint8Array(sizeofEFS_HASH_BLOB);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbData !== undefined) view.setUint32(0, Number(data.cbData), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.pbData !== undefined) view.setBigUint64(8, data.pbData === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pbData))), true);
  return buf;
}

export class EFS_HASH_BLOBView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbData(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get pbData(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbData(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set pbData(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.EFS_RPC_BLOB (size: 16)
 */
export interface EFS_RPC_BLOB {
  /** u32 */
  cbData: number;
  /** ptr */
  pbData: Deno.PointerValue | Uint8Array;
}

export const sizeofEFS_RPC_BLOB = 16;

export function allocEFS_RPC_BLOB(data?: Partial<EFS_RPC_BLOB>): Uint8Array {
  const buf = new Uint8Array(sizeofEFS_RPC_BLOB);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbData !== undefined) view.setUint32(0, Number(data.cbData), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.pbData !== undefined) view.setBigUint64(8, data.pbData === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pbData))), true);
  return buf;
}

export class EFS_RPC_BLOBView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbData(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get pbData(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbData(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set pbData(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.EFS_PIN_BLOB (size: 16)
 */
export interface EFS_PIN_BLOB {
  /** u32 */
  cbPadding: number;
  /** u32 */
  cbData: number;
  /** ptr */
  pbData: Deno.PointerValue | Uint8Array;
}

export const sizeofEFS_PIN_BLOB = 16;

export function allocEFS_PIN_BLOB(data?: Partial<EFS_PIN_BLOB>): Uint8Array {
  const buf = new Uint8Array(sizeofEFS_PIN_BLOB);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbPadding !== undefined) view.setUint32(0, Number(data.cbPadding), true);
  // 0x04: u32
  if (data?.cbData !== undefined) view.setUint32(4, Number(data.cbData), true);
  // 0x08: pointer
  if (data?.pbData !== undefined) view.setBigUint64(8, data.pbData === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pbData))), true);
  return buf;
}

export class EFS_PIN_BLOBView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbPadding(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get cbData(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get pbData(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbPadding(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set cbData(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set pbData(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.EFS_KEY_INFO (size: 16)
 */
export interface EFS_KEY_INFO {
  /** u32 */
  dwVersion: number;
  /** u32 */
  Entropy: number;
  /** u32 */
  Algorithm: number;
  /** u32 */
  KeyLength: number;
}

export const sizeofEFS_KEY_INFO = 16;

export function allocEFS_KEY_INFO(data?: Partial<EFS_KEY_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofEFS_KEY_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwVersion !== undefined) view.setUint32(0, Number(data.dwVersion), true);
  // 0x04: u32
  if (data?.Entropy !== undefined) view.setUint32(4, Number(data.Entropy), true);
  // 0x08: u32
  if (data?.Algorithm !== undefined) view.setUint32(8, Number(data.Algorithm), true);
  // 0x0c: u32
  if (data?.KeyLength !== undefined) view.setUint32(12, Number(data.KeyLength), true);
  return buf;
}

export class EFS_KEY_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwVersion(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get Entropy(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get Algorithm(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get KeyLength(): number {
    return this.view.getUint32(12, true);
  }

  // 0x00: u32
  set dwVersion(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set Entropy(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set Algorithm(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set KeyLength(value: number) {
    this.view.setUint32(12, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.EFS_COMPATIBILITY_INFO (size: 8)
 */
export interface EFS_COMPATIBILITY_INFO {
  /** u32 */
  EfsVersion: number;
}

export const sizeofEFS_COMPATIBILITY_INFO = 8;

export function allocEFS_COMPATIBILITY_INFO(data?: Partial<EFS_COMPATIBILITY_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofEFS_COMPATIBILITY_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.EfsVersion !== undefined) view.setUint32(0, Number(data.EfsVersion), true);
  // 0x04: pad4
  return buf;
}

export class EFS_COMPATIBILITY_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get EfsVersion(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x00: u32
  set EfsVersion(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.EFS_VERSION_INFO (size: 8)
 */
export interface EFS_VERSION_INFO {
  /** u32 */
  EfsVersion: number;
  /** u32 */
  SubVersion: number;
}

export const sizeofEFS_VERSION_INFO = 8;

export function allocEFS_VERSION_INFO(data?: Partial<EFS_VERSION_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofEFS_VERSION_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.EfsVersion !== undefined) view.setUint32(0, Number(data.EfsVersion), true);
  // 0x04: u32
  if (data?.SubVersion !== undefined) view.setUint32(4, Number(data.SubVersion), true);
  return buf;
}

export class EFS_VERSION_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get EfsVersion(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get SubVersion(): number {
    return this.view.getUint32(4, true);
  }

  // 0x00: u32
  set EfsVersion(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set SubVersion(value: number) {
    this.view.setUint32(4, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.EFS_DECRYPTION_STATUS_INFO (size: 16)
 */
export interface EFS_DECRYPTION_STATUS_INFO {
  /** u32 */
  dwDecryptionError: number;
  /** u32 */
  dwHashOffset: number;
  /** u32 */
  cbHash: number;
}

export const sizeofEFS_DECRYPTION_STATUS_INFO = 16;

export function allocEFS_DECRYPTION_STATUS_INFO(data?: Partial<EFS_DECRYPTION_STATUS_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofEFS_DECRYPTION_STATUS_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwDecryptionError !== undefined) view.setUint32(0, Number(data.dwDecryptionError), true);
  // 0x04: u32
  if (data?.dwHashOffset !== undefined) view.setUint32(4, Number(data.dwHashOffset), true);
  // 0x08: u32
  if (data?.cbHash !== undefined) view.setUint32(8, Number(data.cbHash), true);
  // 0x0c: pad4
  return buf;
}

export class EFS_DECRYPTION_STATUS_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwDecryptionError(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get dwHashOffset(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get cbHash(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x00: u32
  set dwDecryptionError(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set dwHashOffset(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set cbHash(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.EFS_ENCRYPTION_STATUS_INFO (size: 8)
 */
export interface EFS_ENCRYPTION_STATUS_INFO {
  /** Windows.Win32.Foundation.BOOL */
  bHasCurrentKey: boolean;
  /** u32 */
  dwEncryptionError: number;
}

export const sizeofEFS_ENCRYPTION_STATUS_INFO = 8;

export function allocEFS_ENCRYPTION_STATUS_INFO(data?: Partial<EFS_ENCRYPTION_STATUS_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofEFS_ENCRYPTION_STATUS_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.bHasCurrentKey !== undefined) view.setInt32(0, Number(data.bHasCurrentKey), true);
  // 0x04: u32
  if (data?.dwEncryptionError !== undefined) view.setUint32(4, Number(data.dwEncryptionError), true);
  return buf;
}

export class EFS_ENCRYPTION_STATUS_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get bHasCurrentKey(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: u32
  get dwEncryptionError(): number {
    return this.view.getUint32(4, true);
  }

  // 0x00: i32
  set bHasCurrentKey(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: u32
  set dwEncryptionError(value: number) {
    this.view.setUint32(4, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.ENCRYPTION_CERTIFICATE (size: 24)
 */
export interface ENCRYPTION_CERTIFICATE {
  /** u32 */
  cbTotalLength: number;
  /** ptr */
  pUserSid: Deno.PointerValue | Uint8Array;
  /** ptr */
  pCertBlob: Deno.PointerValue | Uint8Array;
}

export const sizeofENCRYPTION_CERTIFICATE = 24;

export function allocENCRYPTION_CERTIFICATE(data?: Partial<ENCRYPTION_CERTIFICATE>): Uint8Array {
  const buf = new Uint8Array(sizeofENCRYPTION_CERTIFICATE);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbTotalLength !== undefined) view.setUint32(0, Number(data.cbTotalLength), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.pUserSid !== undefined) view.setBigUint64(8, data.pUserSid === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pUserSid))), true);
  // 0x10: pointer
  if (data?.pCertBlob !== undefined) view.setBigUint64(16, data.pCertBlob === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pCertBlob))), true);
  return buf;
}

export class ENCRYPTION_CERTIFICATEView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbTotalLength(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get pUserSid(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get pCertBlob(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbTotalLength(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set pUserSid(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set pCertBlob(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.ENCRYPTION_CERTIFICATE_HASH (size: 32)
 */
export interface ENCRYPTION_CERTIFICATE_HASH {
  /** u32 */
  cbTotalLength: number;
  /** ptr */
  pUserSid: Deno.PointerValue | Uint8Array;
  /** ptr */
  pHash: Deno.PointerValue | Uint8Array;
  /** Windows.Win32.Foundation.PWSTR */
  lpDisplayInformation: string | null | Uint8Array | Uint16Array;
}

export const sizeofENCRYPTION_CERTIFICATE_HASH = 32;

export function allocENCRYPTION_CERTIFICATE_HASH(data?: Partial<ENCRYPTION_CERTIFICATE_HASH>): Uint8Array {
  const buf = new Uint8Array(sizeofENCRYPTION_CERTIFICATE_HASH);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbTotalLength !== undefined) view.setUint32(0, Number(data.cbTotalLength), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.pUserSid !== undefined) view.setBigUint64(8, data.pUserSid === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pUserSid))), true);
  // 0x10: pointer
  if (data?.pHash !== undefined) view.setBigUint64(16, data.pHash === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pHash))), true);
  // 0x18: buffer
  if (data?.lpDisplayInformation !== undefined) {
    (buf as any)._f24 = util.pwstrToFfi(data.lpDisplayInformation);
    view.setBigUint64(24, (buf as any)._f24 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f24))), true);
  }
  return buf;
}

export class ENCRYPTION_CERTIFICATE_HASHView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbTotalLength(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get pUserSid(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get pHash(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: buffer
  get lpDisplayInformation(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbTotalLength(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set pUserSid(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set pHash(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: buffer
  set lpDisplayInformation(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f24 = value;
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f24))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.ENCRYPTION_CERTIFICATE_HASH_LIST (size: 16)
 */
export interface ENCRYPTION_CERTIFICATE_HASH_LIST {
  /** u32 */
  nCert_Hash: number;
  /** ptr */
  pUsers: Deno.PointerValue | Uint8Array;
}

export const sizeofENCRYPTION_CERTIFICATE_HASH_LIST = 16;

export function allocENCRYPTION_CERTIFICATE_HASH_LIST(data?: Partial<ENCRYPTION_CERTIFICATE_HASH_LIST>): Uint8Array {
  const buf = new Uint8Array(sizeofENCRYPTION_CERTIFICATE_HASH_LIST);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.nCert_Hash !== undefined) view.setUint32(0, Number(data.nCert_Hash), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.pUsers !== undefined) view.setBigUint64(8, data.pUsers === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pUsers))), true);
  return buf;
}

export class ENCRYPTION_CERTIFICATE_HASH_LISTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get nCert_Hash(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get pUsers(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set nCert_Hash(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set pUsers(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.ENCRYPTION_CERTIFICATE_LIST (size: 16)
 */
export interface ENCRYPTION_CERTIFICATE_LIST {
  /** u32 */
  nUsers: number;
  /** ptr */
  pUsers: Deno.PointerValue | Uint8Array;
}

export const sizeofENCRYPTION_CERTIFICATE_LIST = 16;

export function allocENCRYPTION_CERTIFICATE_LIST(data?: Partial<ENCRYPTION_CERTIFICATE_LIST>): Uint8Array {
  const buf = new Uint8Array(sizeofENCRYPTION_CERTIFICATE_LIST);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.nUsers !== undefined) view.setUint32(0, Number(data.nUsers), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.pUsers !== undefined) view.setBigUint64(8, data.pUsers === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pUsers))), true);
  return buf;
}

export class ENCRYPTION_CERTIFICATE_LISTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get nUsers(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get pUsers(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set nUsers(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set pUsers(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.ENCRYPTED_FILE_METADATA_SIGNATURE (size: 32)
 */
export interface ENCRYPTED_FILE_METADATA_SIGNATURE {
  /** u32 */
  dwEfsAccessType: number;
  /** ptr */
  pCertificatesAdded: Deno.PointerValue | Uint8Array;
  /** ptr */
  pEncryptionCertificate: Deno.PointerValue | Uint8Array;
  /** ptr */
  pEfsStreamSignature: Deno.PointerValue | Uint8Array;
}

export const sizeofENCRYPTED_FILE_METADATA_SIGNATURE = 32;

export function allocENCRYPTED_FILE_METADATA_SIGNATURE(data?: Partial<ENCRYPTED_FILE_METADATA_SIGNATURE>): Uint8Array {
  const buf = new Uint8Array(sizeofENCRYPTED_FILE_METADATA_SIGNATURE);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwEfsAccessType !== undefined) view.setUint32(0, Number(data.dwEfsAccessType), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.pCertificatesAdded !== undefined) view.setBigUint64(8, data.pCertificatesAdded === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pCertificatesAdded))), true);
  // 0x10: pointer
  if (data?.pEncryptionCertificate !== undefined) view.setBigUint64(16, data.pEncryptionCertificate === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pEncryptionCertificate))), true);
  // 0x18: pointer
  if (data?.pEfsStreamSignature !== undefined) view.setBigUint64(24, data.pEfsStreamSignature === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pEfsStreamSignature))), true);
  return buf;
}

export class ENCRYPTED_FILE_METADATA_SIGNATUREView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwEfsAccessType(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get pCertificatesAdded(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get pEncryptionCertificate(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get pEfsStreamSignature(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwEfsAccessType(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set pCertificatesAdded(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set pEncryptionCertificate(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set pEfsStreamSignature(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.ENCRYPTION_PROTECTOR (size: 24)
 */
export interface ENCRYPTION_PROTECTOR {
  /** u32 */
  cbTotalLength: number;
  /** ptr */
  pUserSid: Deno.PointerValue | Uint8Array;
  /** Windows.Win32.Foundation.PWSTR */
  lpProtectorDescriptor: string | null | Uint8Array | Uint16Array;
}

export const sizeofENCRYPTION_PROTECTOR = 24;

export function allocENCRYPTION_PROTECTOR(data?: Partial<ENCRYPTION_PROTECTOR>): Uint8Array {
  const buf = new Uint8Array(sizeofENCRYPTION_PROTECTOR);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.cbTotalLength !== undefined) view.setUint32(0, Number(data.cbTotalLength), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.pUserSid !== undefined) view.setBigUint64(8, data.pUserSid === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pUserSid))), true);
  // 0x10: buffer
  if (data?.lpProtectorDescriptor !== undefined) {
    (buf as any)._f16 = util.pwstrToFfi(data.lpProtectorDescriptor);
    view.setBigUint64(16, (buf as any)._f16 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f16))), true);
  }
  return buf;
}

export class ENCRYPTION_PROTECTORView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get cbTotalLength(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get pUserSid(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: buffer
  get lpProtectorDescriptor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set cbTotalLength(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set pUserSid(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: buffer
  set lpProtectorDescriptor(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f16 = value;
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f16))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.ENCRYPTION_PROTECTOR_LIST (size: 16)
 */
export interface ENCRYPTION_PROTECTOR_LIST {
  /** u32 */
  nProtectors: number;
  /** ptr */
  pProtectors: Deno.PointerValue | Uint8Array;
}

export const sizeofENCRYPTION_PROTECTOR_LIST = 16;

export function allocENCRYPTION_PROTECTOR_LIST(data?: Partial<ENCRYPTION_PROTECTOR_LIST>): Uint8Array {
  const buf = new Uint8Array(sizeofENCRYPTION_PROTECTOR_LIST);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.nProtectors !== undefined) view.setUint32(0, Number(data.nProtectors), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.pProtectors !== undefined) view.setBigUint64(8, data.pProtectors === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pProtectors))), true);
  return buf;
}

export class ENCRYPTION_PROTECTOR_LISTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get nProtectors(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get pProtectors(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set nProtectors(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set pProtectors(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.WIM_ENTRY_INFO (size: 40)
 */
export interface WIM_ENTRY_INFO {
  /** u32 */
  WimEntryInfoSize: number;
  /** u32 */
  WimType: number;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  DataSourceId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  WimGuid: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.PWSTR */
  WimPath: string | null | Uint8Array | Uint16Array;
  /** u32 */
  WimIndex: number;
  /** u32 */
  Flags: number;
}

export const sizeofWIM_ENTRY_INFO = 40;

export function allocWIM_ENTRY_INFO(data?: Partial<WIM_ENTRY_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofWIM_ENTRY_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.WimEntryInfoSize !== undefined) view.setUint32(0, Number(data.WimEntryInfoSize), true);
  // 0x04: u32
  if (data?.WimType !== undefined) view.setUint32(4, Number(data.WimType), true);
  // 0x08: pointer
  if (data?.DataSourceId !== undefined) view.setBigUint64(8, data.DataSourceId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.DataSourceId))), true);
  // 0x10: pointer
  if (data?.WimGuid !== undefined) view.setBigUint64(16, data.WimGuid === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.WimGuid))), true);
  // 0x18: buffer
  if (data?.WimPath !== undefined) {
    (buf as any)._f24 = util.pwstrToFfi(data.WimPath);
    view.setBigUint64(24, (buf as any)._f24 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f24))), true);
  }
  // 0x20: u32
  if (data?.WimIndex !== undefined) view.setUint32(32, Number(data.WimIndex), true);
  // 0x24: u32
  if (data?.Flags !== undefined) view.setUint32(36, Number(data.Flags), true);
  return buf;
}

export class WIM_ENTRY_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get WimEntryInfoSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get WimType(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get DataSourceId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get WimGuid(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: buffer
  get WimPath(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: u32
  get WimIndex(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: u32
  get Flags(): number {
    return this.view.getUint32(36, true);
  }

  // 0x00: u32
  set WimEntryInfoSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set WimType(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set DataSourceId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set WimGuid(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: buffer
  set WimPath(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f24 = value;
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f24))), true);
  }

  // 0x20: u32
  set WimIndex(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: u32
  set Flags(value: number) {
    this.view.setUint32(36, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.WIM_EXTERNAL_FILE_INFO (size: 24)
 */
export interface WIM_EXTERNAL_FILE_INFO {
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  DataSourceId: Uint8Array | Deno.PointerValue;
  /** array */
  ResourceHash: Deno.PointerValue;
  /** u32 */
  Flags: number;
}

export const sizeofWIM_EXTERNAL_FILE_INFO = 24;

export function allocWIM_EXTERNAL_FILE_INFO(data?: Partial<WIM_EXTERNAL_FILE_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofWIM_EXTERNAL_FILE_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.DataSourceId !== undefined) view.setBigUint64(0, data.DataSourceId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.DataSourceId))), true);
  // 0x08: pointer
  if (data?.ResourceHash !== undefined) view.setBigUint64(8, data.ResourceHash === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ResourceHash))), true);
  // 0x10: u32
  if (data?.Flags !== undefined) view.setUint32(16, Number(data.Flags), true);
  // 0x14: pad4
  return buf;
}

export class WIM_EXTERNAL_FILE_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get DataSourceId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get ResourceHash(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get Flags(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x00: pointer
  set DataSourceId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set ResourceHash(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set Flags(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.WOF_FILE_COMPRESSION_INFO_V0 (size: 8)
 */
export interface WOF_FILE_COMPRESSION_INFO_V0 {
  /** u32 */
  Algorithm: number;
}

export const sizeofWOF_FILE_COMPRESSION_INFO_V0 = 8;

export function allocWOF_FILE_COMPRESSION_INFO_V0(data?: Partial<WOF_FILE_COMPRESSION_INFO_V0>): Uint8Array {
  const buf = new Uint8Array(sizeofWOF_FILE_COMPRESSION_INFO_V0);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Algorithm !== undefined) view.setUint32(0, Number(data.Algorithm), true);
  // 0x04: pad4
  return buf;
}

export class WOF_FILE_COMPRESSION_INFO_V0View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Algorithm(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x00: u32
  set Algorithm(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.WOF_FILE_COMPRESSION_INFO_V1 (size: 8)
 */
export interface WOF_FILE_COMPRESSION_INFO_V1 {
  /** u32 */
  Algorithm: number;
  /** u32 */
  Flags: number;
}

export const sizeofWOF_FILE_COMPRESSION_INFO_V1 = 8;

export function allocWOF_FILE_COMPRESSION_INFO_V1(data?: Partial<WOF_FILE_COMPRESSION_INFO_V1>): Uint8Array {
  const buf = new Uint8Array(sizeofWOF_FILE_COMPRESSION_INFO_V1);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Algorithm !== undefined) view.setUint32(0, Number(data.Algorithm), true);
  // 0x04: u32
  if (data?.Flags !== undefined) view.setUint32(4, Number(data.Flags), true);
  return buf;
}

export class WOF_FILE_COMPRESSION_INFO_V1View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Algorithm(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get Flags(): number {
    return this.view.getUint32(4, true);
  }

  // 0x00: u32
  set Algorithm(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set Flags(value: number) {
    this.view.setUint32(4, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.TXF_ID (size: 8)
 */
export interface TXF_ID {
  /** _Anonymous_e__Struct */
  Anonymous: Uint8Array | Deno.PointerValue;
}

export const sizeofTXF_ID = 8;

export function allocTXF_ID(data?: Partial<TXF_ID>): Uint8Array {
  const buf = new Uint8Array(sizeofTXF_ID);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Anonymous !== undefined) view.setBigUint64(0, data.Anonymous === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Anonymous))), true);
  return buf;
}

export class TXF_IDView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Anonymous(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set Anonymous(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.TXF_LOG_RECORD_BASE (size: 8)
 */
export interface TXF_LOG_RECORD_BASE {
  /** u16 */
  Version: number;
  /** Windows.Win32.Storage.FileSystem.TXF_LOG_RECORD_TYPE */
  RecordType: TXF_LOG_RECORD_TYPE;
  /** u32 */
  RecordLength: number;
}

export const sizeofTXF_LOG_RECORD_BASE = 8;

export function allocTXF_LOG_RECORD_BASE(data?: Partial<TXF_LOG_RECORD_BASE>): Uint8Array {
  const buf = new Uint8Array(sizeofTXF_LOG_RECORD_BASE);
  const view = new DataView(buf.buffer);
  // 0x00: u16
  if (data?.Version !== undefined) view.setUint16(0, Number(data.Version), true);
  // 0x02: u16
  if (data?.RecordType !== undefined) view.setUint16(2, Number(data.RecordType), true);
  // 0x04: u32
  if (data?.RecordLength !== undefined) view.setUint32(4, Number(data.RecordLength), true);
  return buf;
}

export class TXF_LOG_RECORD_BASEView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u16
  get Version(): number {
    return this.view.getUint16(0, true);
  }

  // 0x02: u16
  get RecordType(): number {
    return this.view.getUint16(2, true);
  }

  // 0x04: u32
  get RecordLength(): number {
    return this.view.getUint32(4, true);
  }

  // 0x00: u16
  set Version(value: number) {
    this.view.setUint16(0, value, true);
  }

  // 0x02: u16
  set RecordType(value: number) {
    this.view.setUint16(2, value, true);
  }

  // 0x04: u32
  set RecordLength(value: number) {
    this.view.setUint32(4, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.TXF_LOG_RECORD_WRITE (size: 56)
 */
export interface TXF_LOG_RECORD_WRITE {
  /** u16 */
  Version: number;
  /** u16 */
  RecordType: number;
  /** u32 */
  RecordLength: number;
  /** u32 */
  Flags: number;
  /** Windows.Win32.Storage.FileSystem.TXF_ID */
  TxfFileId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  KtmGuid: Uint8Array | Deno.PointerValue;
  /** i64 */
  ByteOffsetInFile: bigint | number;
  /** u32 */
  NumBytesWritten: number;
  /** u32 */
  ByteOffsetInStructure: number;
  /** u32 */
  FileNameLength: number;
  /** u32 */
  FileNameByteOffsetInStructure: number;
}

export const sizeofTXF_LOG_RECORD_WRITE = 56;

export function allocTXF_LOG_RECORD_WRITE(data?: Partial<TXF_LOG_RECORD_WRITE>): Uint8Array {
  const buf = new Uint8Array(sizeofTXF_LOG_RECORD_WRITE);
  const view = new DataView(buf.buffer);
  // 0x00: u16
  if (data?.Version !== undefined) view.setUint16(0, Number(data.Version), true);
  // 0x02: u16
  if (data?.RecordType !== undefined) view.setUint16(2, Number(data.RecordType), true);
  // 0x04: u32
  if (data?.RecordLength !== undefined) view.setUint32(4, Number(data.RecordLength), true);
  // 0x08: u32
  if (data?.Flags !== undefined) view.setUint32(8, Number(data.Flags), true);
  // 0x0c: pad4
  // 0x10: pointer
  if (data?.TxfFileId !== undefined) view.setBigUint64(16, data.TxfFileId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TxfFileId))), true);
  // 0x18: pointer
  if (data?.KtmGuid !== undefined) view.setBigUint64(24, data.KtmGuid === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.KtmGuid))), true);
  // 0x20: i64
  if (data?.ByteOffsetInFile !== undefined) view.setBigInt64(32, BigInt(data.ByteOffsetInFile), true);
  // 0x28: u32
  if (data?.NumBytesWritten !== undefined) view.setUint32(40, Number(data.NumBytesWritten), true);
  // 0x2c: u32
  if (data?.ByteOffsetInStructure !== undefined) view.setUint32(44, Number(data.ByteOffsetInStructure), true);
  // 0x30: u32
  if (data?.FileNameLength !== undefined) view.setUint32(48, Number(data.FileNameLength), true);
  // 0x34: u32
  if (data?.FileNameByteOffsetInStructure !== undefined) view.setUint32(52, Number(data.FileNameByteOffsetInStructure), true);
  return buf;
}

export class TXF_LOG_RECORD_WRITEView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u16
  get Version(): number {
    return this.view.getUint16(0, true);
  }

  // 0x02: u16
  get RecordType(): number {
    return this.view.getUint16(2, true);
  }

  // 0x04: u32
  get RecordLength(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get Flags(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  get TxfFileId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get KtmGuid(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: i64
  get ByteOffsetInFile(): bigint | number {
    return Number(this.view.getBigInt64(32, true));
  }

  // 0x28: u32
  get NumBytesWritten(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: u32
  get ByteOffsetInStructure(): number {
    return this.view.getUint32(44, true);
  }

  // 0x30: u32
  get FileNameLength(): number {
    return this.view.getUint32(48, true);
  }

  // 0x34: u32
  get FileNameByteOffsetInStructure(): number {
    return this.view.getUint32(52, true);
  }

  // 0x00: u16
  set Version(value: number) {
    this.view.setUint16(0, value, true);
  }

  // 0x02: u16
  set RecordType(value: number) {
    this.view.setUint16(2, value, true);
  }

  // 0x04: u32
  set RecordLength(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set Flags(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  set TxfFileId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set KtmGuid(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: i64
  set ByteOffsetInFile(value: bigint | number) {
    this.view.setBigInt64(32, BigInt(value), true);
  }

  // 0x28: u32
  set NumBytesWritten(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: u32
  set ByteOffsetInStructure(value: number) {
    this.view.setUint32(44, value, true);
  }

  // 0x30: u32
  set FileNameLength(value: number) {
    this.view.setUint32(48, value, true);
  }

  // 0x34: u32
  set FileNameByteOffsetInStructure(value: number) {
    this.view.setUint32(52, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.TXF_LOG_RECORD_TRUNCATE (size: 48)
 */
export interface TXF_LOG_RECORD_TRUNCATE {
  /** u16 */
  Version: number;
  /** u16 */
  RecordType: number;
  /** u32 */
  RecordLength: number;
  /** u32 */
  Flags: number;
  /** Windows.Win32.Storage.FileSystem.TXF_ID */
  TxfFileId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  KtmGuid: Uint8Array | Deno.PointerValue;
  /** i64 */
  NewFileSize: bigint | number;
  /** u32 */
  FileNameLength: number;
  /** u32 */
  FileNameByteOffsetInStructure: number;
}

export const sizeofTXF_LOG_RECORD_TRUNCATE = 48;

export function allocTXF_LOG_RECORD_TRUNCATE(data?: Partial<TXF_LOG_RECORD_TRUNCATE>): Uint8Array {
  const buf = new Uint8Array(sizeofTXF_LOG_RECORD_TRUNCATE);
  const view = new DataView(buf.buffer);
  // 0x00: u16
  if (data?.Version !== undefined) view.setUint16(0, Number(data.Version), true);
  // 0x02: u16
  if (data?.RecordType !== undefined) view.setUint16(2, Number(data.RecordType), true);
  // 0x04: u32
  if (data?.RecordLength !== undefined) view.setUint32(4, Number(data.RecordLength), true);
  // 0x08: u32
  if (data?.Flags !== undefined) view.setUint32(8, Number(data.Flags), true);
  // 0x0c: pad4
  // 0x10: pointer
  if (data?.TxfFileId !== undefined) view.setBigUint64(16, data.TxfFileId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TxfFileId))), true);
  // 0x18: pointer
  if (data?.KtmGuid !== undefined) view.setBigUint64(24, data.KtmGuid === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.KtmGuid))), true);
  // 0x20: i64
  if (data?.NewFileSize !== undefined) view.setBigInt64(32, BigInt(data.NewFileSize), true);
  // 0x28: u32
  if (data?.FileNameLength !== undefined) view.setUint32(40, Number(data.FileNameLength), true);
  // 0x2c: u32
  if (data?.FileNameByteOffsetInStructure !== undefined) view.setUint32(44, Number(data.FileNameByteOffsetInStructure), true);
  return buf;
}

export class TXF_LOG_RECORD_TRUNCATEView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u16
  get Version(): number {
    return this.view.getUint16(0, true);
  }

  // 0x02: u16
  get RecordType(): number {
    return this.view.getUint16(2, true);
  }

  // 0x04: u32
  get RecordLength(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get Flags(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  get TxfFileId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get KtmGuid(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: i64
  get NewFileSize(): bigint | number {
    return Number(this.view.getBigInt64(32, true));
  }

  // 0x28: u32
  get FileNameLength(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: u32
  get FileNameByteOffsetInStructure(): number {
    return this.view.getUint32(44, true);
  }

  // 0x00: u16
  set Version(value: number) {
    this.view.setUint16(0, value, true);
  }

  // 0x02: u16
  set RecordType(value: number) {
    this.view.setUint16(2, value, true);
  }

  // 0x04: u32
  set RecordLength(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set Flags(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  set TxfFileId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set KtmGuid(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: i64
  set NewFileSize(value: bigint | number) {
    this.view.setBigInt64(32, BigInt(value), true);
  }

  // 0x28: u32
  set FileNameLength(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: u32
  set FileNameByteOffsetInStructure(value: number) {
    this.view.setUint32(44, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.TXF_LOG_RECORD_AFFECTED_FILE (size: 40)
 */
export interface TXF_LOG_RECORD_AFFECTED_FILE {
  /** u16 */
  Version: number;
  /** u32 */
  RecordLength: number;
  /** u32 */
  Flags: number;
  /** Windows.Win32.Storage.FileSystem.TXF_ID */
  TxfFileId: Uint8Array | Deno.PointerValue;
  /** System.Guid */
  KtmGuid: Uint8Array | Deno.PointerValue;
  /** u32 */
  FileNameLength: number;
  /** u32 */
  FileNameByteOffsetInStructure: number;
}

export const sizeofTXF_LOG_RECORD_AFFECTED_FILE = 40;

export function allocTXF_LOG_RECORD_AFFECTED_FILE(data?: Partial<TXF_LOG_RECORD_AFFECTED_FILE>): Uint8Array {
  const buf = new Uint8Array(sizeofTXF_LOG_RECORD_AFFECTED_FILE);
  const view = new DataView(buf.buffer);
  // 0x00: u16
  if (data?.Version !== undefined) view.setUint16(0, Number(data.Version), true);
  // 0x02: u32
  if (data?.RecordLength !== undefined) view.setUint32(2, Number(data.RecordLength), true);
  // 0x06: u32
  if (data?.Flags !== undefined) view.setUint32(6, Number(data.Flags), true);
  // 0x0a: pad6
  // 0x10: pointer
  if (data?.TxfFileId !== undefined) view.setBigUint64(16, data.TxfFileId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.TxfFileId))), true);
  // 0x18: pointer
  if (data?.KtmGuid !== undefined) view.setBigUint64(24, data.KtmGuid === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.KtmGuid))), true);
  // 0x20: u32
  if (data?.FileNameLength !== undefined) view.setUint32(32, Number(data.FileNameLength), true);
  // 0x24: u32
  if (data?.FileNameByteOffsetInStructure !== undefined) view.setUint32(36, Number(data.FileNameByteOffsetInStructure), true);
  return buf;
}

export class TXF_LOG_RECORD_AFFECTED_FILEView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u16
  get Version(): number {
    return this.view.getUint16(0, true);
  }

  // 0x02: u32
  get RecordLength(): number {
    return this.view.getUint32(2, true);
  }

  // 0x06: u32
  get Flags(): number {
    return this.view.getUint32(6, true);
  }

  // 0x0a: pad6

  // 0x10: pointer
  get TxfFileId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get KtmGuid(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: u32
  get FileNameLength(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: u32
  get FileNameByteOffsetInStructure(): number {
    return this.view.getUint32(36, true);
  }

  // 0x00: u16
  set Version(value: number) {
    this.view.setUint16(0, value, true);
  }

  // 0x02: u32
  set RecordLength(value: number) {
    this.view.setUint32(2, value, true);
  }

  // 0x06: u32
  set Flags(value: number) {
    this.view.setUint32(6, value, true);
  }

  // 0x0a: pad6

  // 0x10: pointer
  set TxfFileId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set KtmGuid(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: u32
  set FileNameLength(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: u32
  set FileNameByteOffsetInStructure(value: number) {
    this.view.setUint32(36, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.VOLUME_FAILOVER_SET (size: 16)
 */
export interface VOLUME_FAILOVER_SET {
  /** u32 */
  NumberOfDisks: number;
  /** array */
  DiskNumbers: Deno.PointerValue;
}

export const sizeofVOLUME_FAILOVER_SET = 16;

export function allocVOLUME_FAILOVER_SET(data?: Partial<VOLUME_FAILOVER_SET>): Uint8Array {
  const buf = new Uint8Array(sizeofVOLUME_FAILOVER_SET);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.NumberOfDisks !== undefined) view.setUint32(0, Number(data.NumberOfDisks), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.DiskNumbers !== undefined) view.setBigUint64(8, data.DiskNumbers === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.DiskNumbers))), true);
  return buf;
}

export class VOLUME_FAILOVER_SETView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get NumberOfDisks(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get DiskNumbers(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set NumberOfDisks(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set DiskNumbers(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.VOLUME_NUMBER (size: 16)
 */
export interface VOLUME_NUMBER {
  /** u32 */
  VolumeNumber: number;
  /** array */
  VolumeManagerName: Deno.PointerValue;
}

export const sizeofVOLUME_NUMBER = 16;

export function allocVOLUME_NUMBER(data?: Partial<VOLUME_NUMBER>): Uint8Array {
  const buf = new Uint8Array(sizeofVOLUME_NUMBER);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.VolumeNumber !== undefined) view.setUint32(0, Number(data.VolumeNumber), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.VolumeManagerName !== undefined) view.setBigUint64(8, data.VolumeManagerName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.VolumeManagerName))), true);
  return buf;
}

export class VOLUME_NUMBERView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get VolumeNumber(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get VolumeManagerName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set VolumeNumber(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set VolumeManagerName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.VOLUME_LOGICAL_OFFSET (size: 8)
 */
export interface VOLUME_LOGICAL_OFFSET {
  /** i64 */
  LogicalOffset: bigint | number;
}

export const sizeofVOLUME_LOGICAL_OFFSET = 8;

export function allocVOLUME_LOGICAL_OFFSET(data?: Partial<VOLUME_LOGICAL_OFFSET>): Uint8Array {
  const buf = new Uint8Array(sizeofVOLUME_LOGICAL_OFFSET);
  const view = new DataView(buf.buffer);
  // 0x00: i64
  if (data?.LogicalOffset !== undefined) view.setBigInt64(0, BigInt(data.LogicalOffset), true);
  return buf;
}

export class VOLUME_LOGICAL_OFFSETView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i64
  get LogicalOffset(): bigint | number {
    return Number(this.view.getBigInt64(0, true));
  }

  // 0x00: i64
  set LogicalOffset(value: bigint | number) {
    this.view.setBigInt64(0, BigInt(value), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.VOLUME_PHYSICAL_OFFSET (size: 16)
 */
export interface VOLUME_PHYSICAL_OFFSET {
  /** u32 */
  DiskNumber: number;
  /** i64 */
  Offset: bigint | number;
}

export const sizeofVOLUME_PHYSICAL_OFFSET = 16;

export function allocVOLUME_PHYSICAL_OFFSET(data?: Partial<VOLUME_PHYSICAL_OFFSET>): Uint8Array {
  const buf = new Uint8Array(sizeofVOLUME_PHYSICAL_OFFSET);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.DiskNumber !== undefined) view.setUint32(0, Number(data.DiskNumber), true);
  // 0x04: pad4
  // 0x08: i64
  if (data?.Offset !== undefined) view.setBigInt64(8, BigInt(data.Offset), true);
  return buf;
}

export class VOLUME_PHYSICAL_OFFSETView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get DiskNumber(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: i64
  get Offset(): bigint | number {
    return Number(this.view.getBigInt64(8, true));
  }

  // 0x00: u32
  set DiskNumber(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: i64
  set Offset(value: bigint | number) {
    this.view.setBigInt64(8, BigInt(value), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.VOLUME_PHYSICAL_OFFSETS (size: 16)
 */
export interface VOLUME_PHYSICAL_OFFSETS {
  /** u32 */
  NumberOfPhysicalOffsets: number;
  /** array */
  PhysicalOffset: Deno.PointerValue;
}

export const sizeofVOLUME_PHYSICAL_OFFSETS = 16;

export function allocVOLUME_PHYSICAL_OFFSETS(data?: Partial<VOLUME_PHYSICAL_OFFSETS>): Uint8Array {
  const buf = new Uint8Array(sizeofVOLUME_PHYSICAL_OFFSETS);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.NumberOfPhysicalOffsets !== undefined) view.setUint32(0, Number(data.NumberOfPhysicalOffsets), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.PhysicalOffset !== undefined) view.setBigUint64(8, data.PhysicalOffset === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PhysicalOffset))), true);
  return buf;
}

export class VOLUME_PHYSICAL_OFFSETSView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get NumberOfPhysicalOffsets(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get PhysicalOffset(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set NumberOfPhysicalOffsets(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set PhysicalOffset(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.VOLUME_READ_PLEX_INPUT (size: 16)
 */
export interface VOLUME_READ_PLEX_INPUT {
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  ByteOffset: Uint8Array | Deno.PointerValue;
  /** u32 */
  Length: number;
  /** u32 */
  PlexNumber: number;
}

export const sizeofVOLUME_READ_PLEX_INPUT = 16;

export function allocVOLUME_READ_PLEX_INPUT(data?: Partial<VOLUME_READ_PLEX_INPUT>): Uint8Array {
  const buf = new Uint8Array(sizeofVOLUME_READ_PLEX_INPUT);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.ByteOffset !== undefined) view.setBigUint64(0, data.ByteOffset === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ByteOffset))), true);
  // 0x08: u32
  if (data?.Length !== undefined) view.setUint32(8, Number(data.Length), true);
  // 0x0c: u32
  if (data?.PlexNumber !== undefined) view.setUint32(12, Number(data.PlexNumber), true);
  return buf;
}

export class VOLUME_READ_PLEX_INPUTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get ByteOffset(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get Length(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get PlexNumber(): number {
    return this.view.getUint32(12, true);
  }

  // 0x00: pointer
  set ByteOffset(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u32
  set Length(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set PlexNumber(value: number) {
    this.view.setUint32(12, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.VOLUME_SET_GPT_ATTRIBUTES_INFORMATION (size: 32)
 */
export interface VOLUME_SET_GPT_ATTRIBUTES_INFORMATION {
  /** u64 */
  GptAttributes: bigint | number;
  /** Windows.Win32.Foundation.BOOLEAN */
  RevertOnClose: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.BOOLEAN */
  ApplyToAllConnectedVolumes: Uint8Array | Deno.PointerValue;
  /** u16 */
  Reserved1: number;
  /** u32 */
  Reserved2: number;
}

export const sizeofVOLUME_SET_GPT_ATTRIBUTES_INFORMATION = 32;

export function allocVOLUME_SET_GPT_ATTRIBUTES_INFORMATION(data?: Partial<VOLUME_SET_GPT_ATTRIBUTES_INFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofVOLUME_SET_GPT_ATTRIBUTES_INFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u64
  if (data?.GptAttributes !== undefined) view.setBigUint64(0, BigInt(data.GptAttributes), true);
  // 0x08: pointer
  if (data?.RevertOnClose !== undefined) view.setBigUint64(8, data.RevertOnClose === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.RevertOnClose))), true);
  // 0x10: pointer
  if (data?.ApplyToAllConnectedVolumes !== undefined) view.setBigUint64(16, data.ApplyToAllConnectedVolumes === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ApplyToAllConnectedVolumes))), true);
  // 0x18: u16
  if (data?.Reserved1 !== undefined) view.setUint16(24, Number(data.Reserved1), true);
  // 0x1a: u32
  if (data?.Reserved2 !== undefined) view.setUint32(26, Number(data.Reserved2), true);
  // 0x1e: pad2
  return buf;
}

export class VOLUME_SET_GPT_ATTRIBUTES_INFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u64
  get GptAttributes(): bigint | number {
    return Number(this.view.getBigUint64(0, true));
  }

  // 0x08: pointer
  get RevertOnClose(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get ApplyToAllConnectedVolumes(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u16
  get Reserved1(): number {
    return this.view.getUint16(24, true);
  }

  // 0x1a: u32
  get Reserved2(): number {
    return this.view.getUint32(26, true);
  }

  // 0x1e: pad2

  // 0x00: u64
  set GptAttributes(value: bigint | number) {
    this.view.setBigUint64(0, BigInt(value), true);
  }

  // 0x08: pointer
  set RevertOnClose(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set ApplyToAllConnectedVolumes(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: u16
  set Reserved1(value: number) {
    this.view.setUint16(24, value, true);
  }

  // 0x1a: u32
  set Reserved2(value: number) {
    this.view.setUint32(26, value, true);
  }

  // 0x1e: pad2
}

/**
 * Windows.Win32.Storage.FileSystem.VOLUME_GET_BC_PROPERTIES_INPUT (size: 32)
 */
export interface VOLUME_GET_BC_PROPERTIES_INPUT {
  /** u32 */
  Version: number;
  /** u32 */
  Reserved1: number;
  /** u64 */
  LowestByteOffset: bigint | number;
  /** u64 */
  HighestByteOffset: bigint | number;
  /** u32 */
  AccessType: number;
  /** u32 */
  AccessMode: number;
}

export const sizeofVOLUME_GET_BC_PROPERTIES_INPUT = 32;

export function allocVOLUME_GET_BC_PROPERTIES_INPUT(data?: Partial<VOLUME_GET_BC_PROPERTIES_INPUT>): Uint8Array {
  const buf = new Uint8Array(sizeofVOLUME_GET_BC_PROPERTIES_INPUT);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Version !== undefined) view.setUint32(0, Number(data.Version), true);
  // 0x04: u32
  if (data?.Reserved1 !== undefined) view.setUint32(4, Number(data.Reserved1), true);
  // 0x08: u64
  if (data?.LowestByteOffset !== undefined) view.setBigUint64(8, BigInt(data.LowestByteOffset), true);
  // 0x10: u64
  if (data?.HighestByteOffset !== undefined) view.setBigUint64(16, BigInt(data.HighestByteOffset), true);
  // 0x18: u32
  if (data?.AccessType !== undefined) view.setUint32(24, Number(data.AccessType), true);
  // 0x1c: u32
  if (data?.AccessMode !== undefined) view.setUint32(28, Number(data.AccessMode), true);
  return buf;
}

export class VOLUME_GET_BC_PROPERTIES_INPUTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Version(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get Reserved1(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u64
  get LowestByteOffset(): bigint | number {
    return Number(this.view.getBigUint64(8, true));
  }

  // 0x10: u64
  get HighestByteOffset(): bigint | number {
    return Number(this.view.getBigUint64(16, true));
  }

  // 0x18: u32
  get AccessType(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: u32
  get AccessMode(): number {
    return this.view.getUint32(28, true);
  }

  // 0x00: u32
  set Version(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set Reserved1(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u64
  set LowestByteOffset(value: bigint | number) {
    this.view.setBigUint64(8, BigInt(value), true);
  }

  // 0x10: u64
  set HighestByteOffset(value: bigint | number) {
    this.view.setBigUint64(16, BigInt(value), true);
  }

  // 0x18: u32
  set AccessType(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: u32
  set AccessMode(value: number) {
    this.view.setUint32(28, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.VOLUME_GET_BC_PROPERTIES_OUTPUT (size: 32)
 */
export interface VOLUME_GET_BC_PROPERTIES_OUTPUT {
  /** u32 */
  MaximumRequestsPerPeriod: number;
  /** u32 */
  MinimumPeriod: number;
  /** u64 */
  MaximumRequestSize: bigint | number;
  /** u32 */
  EstimatedTimePerRequest: number;
  /** u32 */
  NumOutStandingRequests: number;
  /** u64 */
  RequestSize: bigint | number;
}

export const sizeofVOLUME_GET_BC_PROPERTIES_OUTPUT = 32;

export function allocVOLUME_GET_BC_PROPERTIES_OUTPUT(data?: Partial<VOLUME_GET_BC_PROPERTIES_OUTPUT>): Uint8Array {
  const buf = new Uint8Array(sizeofVOLUME_GET_BC_PROPERTIES_OUTPUT);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.MaximumRequestsPerPeriod !== undefined) view.setUint32(0, Number(data.MaximumRequestsPerPeriod), true);
  // 0x04: u32
  if (data?.MinimumPeriod !== undefined) view.setUint32(4, Number(data.MinimumPeriod), true);
  // 0x08: u64
  if (data?.MaximumRequestSize !== undefined) view.setBigUint64(8, BigInt(data.MaximumRequestSize), true);
  // 0x10: u32
  if (data?.EstimatedTimePerRequest !== undefined) view.setUint32(16, Number(data.EstimatedTimePerRequest), true);
  // 0x14: u32
  if (data?.NumOutStandingRequests !== undefined) view.setUint32(20, Number(data.NumOutStandingRequests), true);
  // 0x18: u64
  if (data?.RequestSize !== undefined) view.setBigUint64(24, BigInt(data.RequestSize), true);
  return buf;
}

export class VOLUME_GET_BC_PROPERTIES_OUTPUTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get MaximumRequestsPerPeriod(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get MinimumPeriod(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u64
  get MaximumRequestSize(): bigint | number {
    return Number(this.view.getBigUint64(8, true));
  }

  // 0x10: u32
  get EstimatedTimePerRequest(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get NumOutStandingRequests(): number {
    return this.view.getUint32(20, true);
  }

  // 0x18: u64
  get RequestSize(): bigint | number {
    return Number(this.view.getBigUint64(24, true));
  }

  // 0x00: u32
  set MaximumRequestsPerPeriod(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set MinimumPeriod(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u64
  set MaximumRequestSize(value: bigint | number) {
    this.view.setBigUint64(8, BigInt(value), true);
  }

  // 0x10: u32
  set EstimatedTimePerRequest(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set NumOutStandingRequests(value: number) {
    this.view.setUint32(20, value, true);
  }

  // 0x18: u64
  set RequestSize(value: bigint | number) {
    this.view.setBigUint64(24, BigInt(value), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.VOLUME_ALLOCATE_BC_STREAM_INPUT (size: 64)
 */
export interface VOLUME_ALLOCATE_BC_STREAM_INPUT {
  /** u32 */
  Version: number;
  /** u32 */
  RequestsPerPeriod: number;
  /** u32 */
  Period: number;
  /** Windows.Win32.Foundation.BOOLEAN */
  RetryFailures: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.BOOLEAN */
  Discardable: Uint8Array | Deno.PointerValue;
  /** array */
  Reserved1: Deno.PointerValue;
  /** u64 */
  LowestByteOffset: bigint | number;
  /** u64 */
  HighestByteOffset: bigint | number;
  /** u32 */
  AccessType: number;
  /** u32 */
  AccessMode: number;
}

export const sizeofVOLUME_ALLOCATE_BC_STREAM_INPUT = 64;

export function allocVOLUME_ALLOCATE_BC_STREAM_INPUT(data?: Partial<VOLUME_ALLOCATE_BC_STREAM_INPUT>): Uint8Array {
  const buf = new Uint8Array(sizeofVOLUME_ALLOCATE_BC_STREAM_INPUT);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Version !== undefined) view.setUint32(0, Number(data.Version), true);
  // 0x04: u32
  if (data?.RequestsPerPeriod !== undefined) view.setUint32(4, Number(data.RequestsPerPeriod), true);
  // 0x08: u32
  if (data?.Period !== undefined) view.setUint32(8, Number(data.Period), true);
  // 0x0c: pad4
  // 0x10: pointer
  if (data?.RetryFailures !== undefined) view.setBigUint64(16, data.RetryFailures === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.RetryFailures))), true);
  // 0x18: pointer
  if (data?.Discardable !== undefined) view.setBigUint64(24, data.Discardable === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Discardable))), true);
  // 0x20: pointer
  if (data?.Reserved1 !== undefined) view.setBigUint64(32, data.Reserved1 === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Reserved1))), true);
  // 0x28: u64
  if (data?.LowestByteOffset !== undefined) view.setBigUint64(40, BigInt(data.LowestByteOffset), true);
  // 0x30: u64
  if (data?.HighestByteOffset !== undefined) view.setBigUint64(48, BigInt(data.HighestByteOffset), true);
  // 0x38: u32
  if (data?.AccessType !== undefined) view.setUint32(56, Number(data.AccessType), true);
  // 0x3c: u32
  if (data?.AccessMode !== undefined) view.setUint32(60, Number(data.AccessMode), true);
  return buf;
}

export class VOLUME_ALLOCATE_BC_STREAM_INPUTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Version(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get RequestsPerPeriod(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get Period(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  get RetryFailures(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get Discardable(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get Reserved1(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: u64
  get LowestByteOffset(): bigint | number {
    return Number(this.view.getBigUint64(40, true));
  }

  // 0x30: u64
  get HighestByteOffset(): bigint | number {
    return Number(this.view.getBigUint64(48, true));
  }

  // 0x38: u32
  get AccessType(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: u32
  get AccessMode(): number {
    return this.view.getUint32(60, true);
  }

  // 0x00: u32
  set Version(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set RequestsPerPeriod(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set Period(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  set RetryFailures(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set Discardable(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set Reserved1(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: u64
  set LowestByteOffset(value: bigint | number) {
    this.view.setBigUint64(40, BigInt(value), true);
  }

  // 0x30: u64
  set HighestByteOffset(value: bigint | number) {
    this.view.setBigUint64(48, BigInt(value), true);
  }

  // 0x38: u32
  set AccessType(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: u32
  set AccessMode(value: number) {
    this.view.setUint32(60, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.VOLUME_ALLOCATE_BC_STREAM_OUTPUT (size: 16)
 */
export interface VOLUME_ALLOCATE_BC_STREAM_OUTPUT {
  /** u64 */
  RequestSize: bigint | number;
  /** u32 */
  NumOutStandingRequests: number;
}

export const sizeofVOLUME_ALLOCATE_BC_STREAM_OUTPUT = 16;

export function allocVOLUME_ALLOCATE_BC_STREAM_OUTPUT(data?: Partial<VOLUME_ALLOCATE_BC_STREAM_OUTPUT>): Uint8Array {
  const buf = new Uint8Array(sizeofVOLUME_ALLOCATE_BC_STREAM_OUTPUT);
  const view = new DataView(buf.buffer);
  // 0x00: u64
  if (data?.RequestSize !== undefined) view.setBigUint64(0, BigInt(data.RequestSize), true);
  // 0x08: u32
  if (data?.NumOutStandingRequests !== undefined) view.setUint32(8, Number(data.NumOutStandingRequests), true);
  // 0x0c: pad4
  return buf;
}

export class VOLUME_ALLOCATE_BC_STREAM_OUTPUTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u64
  get RequestSize(): bigint | number {
    return Number(this.view.getBigUint64(0, true));
  }

  // 0x08: u32
  get NumOutStandingRequests(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x00: u64
  set RequestSize(value: bigint | number) {
    this.view.setBigUint64(0, BigInt(value), true);
  }

  // 0x08: u32
  set NumOutStandingRequests(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_EXTENT (size: 16)
 */
export interface FILE_EXTENT {
  /** u64 */
  VolumeOffset: bigint | number;
  /** u64 */
  ExtentLength: bigint | number;
}

export const sizeofFILE_EXTENT = 16;

export function allocFILE_EXTENT(data?: Partial<FILE_EXTENT>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_EXTENT);
  const view = new DataView(buf.buffer);
  // 0x00: u64
  if (data?.VolumeOffset !== undefined) view.setBigUint64(0, BigInt(data.VolumeOffset), true);
  // 0x08: u64
  if (data?.ExtentLength !== undefined) view.setBigUint64(8, BigInt(data.ExtentLength), true);
  return buf;
}

export class FILE_EXTENTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u64
  get VolumeOffset(): bigint | number {
    return Number(this.view.getBigUint64(0, true));
  }

  // 0x08: u64
  get ExtentLength(): bigint | number {
    return Number(this.view.getBigUint64(8, true));
  }

  // 0x00: u64
  set VolumeOffset(value: bigint | number) {
    this.view.setBigUint64(0, BigInt(value), true);
  }

  // 0x08: u64
  set ExtentLength(value: bigint | number) {
    this.view.setBigUint64(8, BigInt(value), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.VOLUME_CRITICAL_IO (size: 16)
 */
export interface VOLUME_CRITICAL_IO {
  /** u32 */
  AccessType: number;
  /** u32 */
  ExtentsCount: number;
  /** array */
  Extents: Deno.PointerValue;
}

export const sizeofVOLUME_CRITICAL_IO = 16;

export function allocVOLUME_CRITICAL_IO(data?: Partial<VOLUME_CRITICAL_IO>): Uint8Array {
  const buf = new Uint8Array(sizeofVOLUME_CRITICAL_IO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.AccessType !== undefined) view.setUint32(0, Number(data.AccessType), true);
  // 0x04: u32
  if (data?.ExtentsCount !== undefined) view.setUint32(4, Number(data.ExtentsCount), true);
  // 0x08: pointer
  if (data?.Extents !== undefined) view.setBigUint64(8, data.Extents === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Extents))), true);
  return buf;
}

export class VOLUME_CRITICAL_IOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get AccessType(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get ExtentsCount(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get Extents(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set AccessType(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set ExtentsCount(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set Extents(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.VOLUME_ALLOCATION_HINT_INPUT (size: 16)
 */
export interface VOLUME_ALLOCATION_HINT_INPUT {
  /** u32 */
  ClusterSize: number;
  /** u32 */
  NumberOfClusters: number;
  /** i64 */
  StartingClusterNumber: bigint | number;
}

export const sizeofVOLUME_ALLOCATION_HINT_INPUT = 16;

export function allocVOLUME_ALLOCATION_HINT_INPUT(data?: Partial<VOLUME_ALLOCATION_HINT_INPUT>): Uint8Array {
  const buf = new Uint8Array(sizeofVOLUME_ALLOCATION_HINT_INPUT);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.ClusterSize !== undefined) view.setUint32(0, Number(data.ClusterSize), true);
  // 0x04: u32
  if (data?.NumberOfClusters !== undefined) view.setUint32(4, Number(data.NumberOfClusters), true);
  // 0x08: i64
  if (data?.StartingClusterNumber !== undefined) view.setBigInt64(8, BigInt(data.StartingClusterNumber), true);
  return buf;
}

export class VOLUME_ALLOCATION_HINT_INPUTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get ClusterSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get NumberOfClusters(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: i64
  get StartingClusterNumber(): bigint | number {
    return Number(this.view.getBigInt64(8, true));
  }

  // 0x00: u32
  set ClusterSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set NumberOfClusters(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: i64
  set StartingClusterNumber(value: bigint | number) {
    this.view.setBigInt64(8, BigInt(value), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.VOLUME_ALLOCATION_HINT_OUTPUT (size: 8)
 */
export interface VOLUME_ALLOCATION_HINT_OUTPUT {
  /** array */
  Bitmap: Deno.PointerValue;
}

export const sizeofVOLUME_ALLOCATION_HINT_OUTPUT = 8;

export function allocVOLUME_ALLOCATION_HINT_OUTPUT(data?: Partial<VOLUME_ALLOCATION_HINT_OUTPUT>): Uint8Array {
  const buf = new Uint8Array(sizeofVOLUME_ALLOCATION_HINT_OUTPUT);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Bitmap !== undefined) view.setBigUint64(0, data.Bitmap === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Bitmap))), true);
  return buf;
}

export class VOLUME_ALLOCATION_HINT_OUTPUTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Bitmap(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set Bitmap(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.VOLUME_SHRINK_INFO (size: 8)
 */
export interface VOLUME_SHRINK_INFO {
  /** u64 */
  VolumeSize: bigint | number;
}

export const sizeofVOLUME_SHRINK_INFO = 8;

export function allocVOLUME_SHRINK_INFO(data?: Partial<VOLUME_SHRINK_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofVOLUME_SHRINK_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u64
  if (data?.VolumeSize !== undefined) view.setBigUint64(0, BigInt(data.VolumeSize), true);
  return buf;
}

export class VOLUME_SHRINK_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u64
  get VolumeSize(): bigint | number {
    return Number(this.view.getBigUint64(0, true));
  }

  // 0x00: u64
  set VolumeSize(value: bigint | number) {
    this.view.setBigUint64(0, BigInt(value), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.SHARE_INFO_0 (size: 8)
 */
export interface SHARE_INFO_0 {
  /** Windows.Win32.Foundation.PWSTR */
  shi0_netname: string | null | Uint8Array | Uint16Array;
}

export const sizeofSHARE_INFO_0 = 8;

export function allocSHARE_INFO_0(data?: Partial<SHARE_INFO_0>): Uint8Array {
  const buf = new Uint8Array(sizeofSHARE_INFO_0);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.shi0_netname !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.shi0_netname);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  return buf;
}

export class SHARE_INFO_0View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get shi0_netname(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: buffer
  set shi0_netname(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.SHARE_INFO_1 (size: 24)
 */
export interface SHARE_INFO_1 {
  /** Windows.Win32.Foundation.PWSTR */
  shi1_netname: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Storage.FileSystem.SHARE_TYPE */
  shi1_type: SHARE_TYPE;
  /** Windows.Win32.Foundation.PWSTR */
  shi1_remark: string | null | Uint8Array | Uint16Array;
}

export const sizeofSHARE_INFO_1 = 24;

export function allocSHARE_INFO_1(data?: Partial<SHARE_INFO_1>): Uint8Array {
  const buf = new Uint8Array(sizeofSHARE_INFO_1);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.shi1_netname !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.shi1_netname);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  // 0x08: u32
  if (data?.shi1_type !== undefined) view.setUint32(8, Number(data.shi1_type), true);
  // 0x0c: pad4
  // 0x10: buffer
  if (data?.shi1_remark !== undefined) {
    (buf as any)._f16 = util.pwstrToFfi(data.shi1_remark);
    view.setBigUint64(16, (buf as any)._f16 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f16))), true);
  }
  return buf;
}

export class SHARE_INFO_1View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get shi1_netname(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get shi1_type(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: buffer
  get shi1_remark(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: buffer
  set shi1_netname(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }

  // 0x08: u32
  set shi1_type(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: buffer
  set shi1_remark(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f16 = value;
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f16))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.SHARE_INFO_2 (size: 56)
 */
export interface SHARE_INFO_2 {
  /** Windows.Win32.Foundation.PWSTR */
  shi2_netname: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Storage.FileSystem.SHARE_TYPE */
  shi2_type: SHARE_TYPE;
  /** Windows.Win32.Foundation.PWSTR */
  shi2_remark: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Storage.FileSystem.SHARE_INFO_PERMISSIONS */
  shi2_permissions: SHARE_INFO_PERMISSIONS;
  /** u32 */
  shi2_max_uses: number;
  /** u32 */
  shi2_current_uses: number;
  /** Windows.Win32.Foundation.PWSTR */
  shi2_path: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  shi2_passwd: string | null | Uint8Array | Uint16Array;
}

export const sizeofSHARE_INFO_2 = 56;

export function allocSHARE_INFO_2(data?: Partial<SHARE_INFO_2>): Uint8Array {
  const buf = new Uint8Array(sizeofSHARE_INFO_2);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.shi2_netname !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.shi2_netname);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  // 0x08: u32
  if (data?.shi2_type !== undefined) view.setUint32(8, Number(data.shi2_type), true);
  // 0x0c: pad4
  // 0x10: buffer
  if (data?.shi2_remark !== undefined) {
    (buf as any)._f16 = util.pwstrToFfi(data.shi2_remark);
    view.setBigUint64(16, (buf as any)._f16 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f16))), true);
  }
  // 0x18: u32
  if (data?.shi2_permissions !== undefined) view.setUint32(24, Number(data.shi2_permissions), true);
  // 0x1c: u32
  if (data?.shi2_max_uses !== undefined) view.setUint32(28, Number(data.shi2_max_uses), true);
  // 0x20: u32
  if (data?.shi2_current_uses !== undefined) view.setUint32(32, Number(data.shi2_current_uses), true);
  // 0x24: pad4
  // 0x28: buffer
  if (data?.shi2_path !== undefined) {
    (buf as any)._f40 = util.pwstrToFfi(data.shi2_path);
    view.setBigUint64(40, (buf as any)._f40 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f40))), true);
  }
  // 0x30: buffer
  if (data?.shi2_passwd !== undefined) {
    (buf as any)._f48 = util.pwstrToFfi(data.shi2_passwd);
    view.setBigUint64(48, (buf as any)._f48 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f48))), true);
  }
  return buf;
}

export class SHARE_INFO_2View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get shi2_netname(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get shi2_type(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: buffer
  get shi2_remark(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u32
  get shi2_permissions(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: u32
  get shi2_max_uses(): number {
    return this.view.getUint32(28, true);
  }

  // 0x20: u32
  get shi2_current_uses(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: pad4

  // 0x28: buffer
  get shi2_path(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: buffer
  get shi2_passwd(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: buffer
  set shi2_netname(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }

  // 0x08: u32
  set shi2_type(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: buffer
  set shi2_remark(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f16 = value;
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f16))), true);
  }

  // 0x18: u32
  set shi2_permissions(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: u32
  set shi2_max_uses(value: number) {
    this.view.setUint32(28, value, true);
  }

  // 0x20: u32
  set shi2_current_uses(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: pad4

  // 0x28: buffer
  set shi2_path(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f40 = value;
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f40))), true);
  }

  // 0x30: buffer
  set shi2_passwd(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f48 = value;
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f48))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.SHARE_INFO_501 (size: 32)
 */
export interface SHARE_INFO_501 {
  /** Windows.Win32.Foundation.PWSTR */
  shi501_netname: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Storage.FileSystem.SHARE_TYPE */
  shi501_type: SHARE_TYPE;
  /** Windows.Win32.Foundation.PWSTR */
  shi501_remark: string | null | Uint8Array | Uint16Array;
  /** u32 */
  shi501_flags: number;
}

export const sizeofSHARE_INFO_501 = 32;

export function allocSHARE_INFO_501(data?: Partial<SHARE_INFO_501>): Uint8Array {
  const buf = new Uint8Array(sizeofSHARE_INFO_501);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.shi501_netname !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.shi501_netname);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  // 0x08: u32
  if (data?.shi501_type !== undefined) view.setUint32(8, Number(data.shi501_type), true);
  // 0x0c: pad4
  // 0x10: buffer
  if (data?.shi501_remark !== undefined) {
    (buf as any)._f16 = util.pwstrToFfi(data.shi501_remark);
    view.setBigUint64(16, (buf as any)._f16 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f16))), true);
  }
  // 0x18: u32
  if (data?.shi501_flags !== undefined) view.setUint32(24, Number(data.shi501_flags), true);
  // 0x1c: pad4
  return buf;
}

export class SHARE_INFO_501View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get shi501_netname(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get shi501_type(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: buffer
  get shi501_remark(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u32
  get shi501_flags(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: pad4

  // 0x00: buffer
  set shi501_netname(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }

  // 0x08: u32
  set shi501_type(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: buffer
  set shi501_remark(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f16 = value;
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f16))), true);
  }

  // 0x18: u32
  set shi501_flags(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: pad4
}

export type PSECURITY_DESCRIPTOR = Deno.PointerValue | Uint8Array;

/**
 * Windows.Win32.Storage.FileSystem.SHARE_INFO_502 (size: 72)
 */
export interface SHARE_INFO_502 {
  /** Windows.Win32.Foundation.PWSTR */
  shi502_netname: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Storage.FileSystem.SHARE_TYPE */
  shi502_type: SHARE_TYPE;
  /** Windows.Win32.Foundation.PWSTR */
  shi502_remark: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Storage.FileSystem.SHARE_INFO_PERMISSIONS */
  shi502_permissions: SHARE_INFO_PERMISSIONS;
  /** u32 */
  shi502_max_uses: number;
  /** u32 */
  shi502_current_uses: number;
  /** Windows.Win32.Foundation.PWSTR */
  shi502_path: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  shi502_passwd: string | null | Uint8Array | Uint16Array;
  /** u32 */
  shi502_reserved: number;
  /** Windows.Win32.Security.PSECURITY_DESCRIPTOR */
  shi502_security_descriptor: Uint8Array | Deno.PointerValue;
}

export const sizeofSHARE_INFO_502 = 72;

export function allocSHARE_INFO_502(data?: Partial<SHARE_INFO_502>): Uint8Array {
  const buf = new Uint8Array(sizeofSHARE_INFO_502);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.shi502_netname !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.shi502_netname);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  // 0x08: u32
  if (data?.shi502_type !== undefined) view.setUint32(8, Number(data.shi502_type), true);
  // 0x0c: pad4
  // 0x10: buffer
  if (data?.shi502_remark !== undefined) {
    (buf as any)._f16 = util.pwstrToFfi(data.shi502_remark);
    view.setBigUint64(16, (buf as any)._f16 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f16))), true);
  }
  // 0x18: u32
  if (data?.shi502_permissions !== undefined) view.setUint32(24, Number(data.shi502_permissions), true);
  // 0x1c: u32
  if (data?.shi502_max_uses !== undefined) view.setUint32(28, Number(data.shi502_max_uses), true);
  // 0x20: u32
  if (data?.shi502_current_uses !== undefined) view.setUint32(32, Number(data.shi502_current_uses), true);
  // 0x24: pad4
  // 0x28: buffer
  if (data?.shi502_path !== undefined) {
    (buf as any)._f40 = util.pwstrToFfi(data.shi502_path);
    view.setBigUint64(40, (buf as any)._f40 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f40))), true);
  }
  // 0x30: buffer
  if (data?.shi502_passwd !== undefined) {
    (buf as any)._f48 = util.pwstrToFfi(data.shi502_passwd);
    view.setBigUint64(48, (buf as any)._f48 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f48))), true);
  }
  // 0x38: u32
  if (data?.shi502_reserved !== undefined) view.setUint32(56, Number(data.shi502_reserved), true);
  // 0x3c: pad4
  // 0x40: pointer
  if (data?.shi502_security_descriptor !== undefined) view.setBigUint64(64, data.shi502_security_descriptor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.shi502_security_descriptor))), true);
  return buf;
}

export class SHARE_INFO_502View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get shi502_netname(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get shi502_type(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: buffer
  get shi502_remark(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u32
  get shi502_permissions(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: u32
  get shi502_max_uses(): number {
    return this.view.getUint32(28, true);
  }

  // 0x20: u32
  get shi502_current_uses(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: pad4

  // 0x28: buffer
  get shi502_path(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: buffer
  get shi502_passwd(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: u32
  get shi502_reserved(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: pad4

  // 0x40: pointer
  get shi502_security_descriptor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: buffer
  set shi502_netname(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }

  // 0x08: u32
  set shi502_type(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: buffer
  set shi502_remark(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f16 = value;
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f16))), true);
  }

  // 0x18: u32
  set shi502_permissions(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: u32
  set shi502_max_uses(value: number) {
    this.view.setUint32(28, value, true);
  }

  // 0x20: u32
  set shi502_current_uses(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: pad4

  // 0x28: buffer
  set shi502_path(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f40 = value;
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f40))), true);
  }

  // 0x30: buffer
  set shi502_passwd(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f48 = value;
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f48))), true);
  }

  // 0x38: u32
  set shi502_reserved(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: pad4

  // 0x40: pointer
  set shi502_security_descriptor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.SHARE_INFO_503 (size: 80)
 */
export interface SHARE_INFO_503 {
  /** Windows.Win32.Foundation.PWSTR */
  shi503_netname: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Storage.FileSystem.SHARE_TYPE */
  shi503_type: SHARE_TYPE;
  /** Windows.Win32.Foundation.PWSTR */
  shi503_remark: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Storage.FileSystem.SHARE_INFO_PERMISSIONS */
  shi503_permissions: SHARE_INFO_PERMISSIONS;
  /** u32 */
  shi503_max_uses: number;
  /** u32 */
  shi503_current_uses: number;
  /** Windows.Win32.Foundation.PWSTR */
  shi503_path: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  shi503_passwd: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  shi503_servername: string | null | Uint8Array | Uint16Array;
  /** u32 */
  shi503_reserved: number;
  /** Windows.Win32.Security.PSECURITY_DESCRIPTOR */
  shi503_security_descriptor: Uint8Array | Deno.PointerValue;
}

export const sizeofSHARE_INFO_503 = 80;

export function allocSHARE_INFO_503(data?: Partial<SHARE_INFO_503>): Uint8Array {
  const buf = new Uint8Array(sizeofSHARE_INFO_503);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.shi503_netname !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.shi503_netname);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  // 0x08: u32
  if (data?.shi503_type !== undefined) view.setUint32(8, Number(data.shi503_type), true);
  // 0x0c: pad4
  // 0x10: buffer
  if (data?.shi503_remark !== undefined) {
    (buf as any)._f16 = util.pwstrToFfi(data.shi503_remark);
    view.setBigUint64(16, (buf as any)._f16 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f16))), true);
  }
  // 0x18: u32
  if (data?.shi503_permissions !== undefined) view.setUint32(24, Number(data.shi503_permissions), true);
  // 0x1c: u32
  if (data?.shi503_max_uses !== undefined) view.setUint32(28, Number(data.shi503_max_uses), true);
  // 0x20: u32
  if (data?.shi503_current_uses !== undefined) view.setUint32(32, Number(data.shi503_current_uses), true);
  // 0x24: pad4
  // 0x28: buffer
  if (data?.shi503_path !== undefined) {
    (buf as any)._f40 = util.pwstrToFfi(data.shi503_path);
    view.setBigUint64(40, (buf as any)._f40 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f40))), true);
  }
  // 0x30: buffer
  if (data?.shi503_passwd !== undefined) {
    (buf as any)._f48 = util.pwstrToFfi(data.shi503_passwd);
    view.setBigUint64(48, (buf as any)._f48 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f48))), true);
  }
  // 0x38: buffer
  if (data?.shi503_servername !== undefined) {
    (buf as any)._f56 = util.pwstrToFfi(data.shi503_servername);
    view.setBigUint64(56, (buf as any)._f56 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f56))), true);
  }
  // 0x40: u32
  if (data?.shi503_reserved !== undefined) view.setUint32(64, Number(data.shi503_reserved), true);
  // 0x44: pad4
  // 0x48: pointer
  if (data?.shi503_security_descriptor !== undefined) view.setBigUint64(72, data.shi503_security_descriptor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.shi503_security_descriptor))), true);
  return buf;
}

export class SHARE_INFO_503View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get shi503_netname(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get shi503_type(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: buffer
  get shi503_remark(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u32
  get shi503_permissions(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: u32
  get shi503_max_uses(): number {
    return this.view.getUint32(28, true);
  }

  // 0x20: u32
  get shi503_current_uses(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: pad4

  // 0x28: buffer
  get shi503_path(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: buffer
  get shi503_passwd(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: buffer
  get shi503_servername(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: u32
  get shi503_reserved(): number {
    return this.view.getUint32(64, true);
  }

  // 0x44: pad4

  // 0x48: pointer
  get shi503_security_descriptor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: buffer
  set shi503_netname(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }

  // 0x08: u32
  set shi503_type(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: buffer
  set shi503_remark(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f16 = value;
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f16))), true);
  }

  // 0x18: u32
  set shi503_permissions(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: u32
  set shi503_max_uses(value: number) {
    this.view.setUint32(28, value, true);
  }

  // 0x20: u32
  set shi503_current_uses(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: pad4

  // 0x28: buffer
  set shi503_path(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f40 = value;
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f40))), true);
  }

  // 0x30: buffer
  set shi503_passwd(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f48 = value;
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f48))), true);
  }

  // 0x38: buffer
  set shi503_servername(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f56 = value;
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f56))), true);
  }

  // 0x40: u32
  set shi503_reserved(value: number) {
    this.view.setUint32(64, value, true);
  }

  // 0x44: pad4

  // 0x48: pointer
  set shi503_security_descriptor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.SHARE_INFO_1004 (size: 8)
 */
export interface SHARE_INFO_1004 {
  /** Windows.Win32.Foundation.PWSTR */
  shi1004_remark: string | null | Uint8Array | Uint16Array;
}

export const sizeofSHARE_INFO_1004 = 8;

export function allocSHARE_INFO_1004(data?: Partial<SHARE_INFO_1004>): Uint8Array {
  const buf = new Uint8Array(sizeofSHARE_INFO_1004);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.shi1004_remark !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.shi1004_remark);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  return buf;
}

export class SHARE_INFO_1004View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get shi1004_remark(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: buffer
  set shi1004_remark(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.SHARE_INFO_1005 (size: 8)
 */
export interface SHARE_INFO_1005 {
  /** u32 */
  shi1005_flags: number;
}

export const sizeofSHARE_INFO_1005 = 8;

export function allocSHARE_INFO_1005(data?: Partial<SHARE_INFO_1005>): Uint8Array {
  const buf = new Uint8Array(sizeofSHARE_INFO_1005);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.shi1005_flags !== undefined) view.setUint32(0, Number(data.shi1005_flags), true);
  // 0x04: pad4
  return buf;
}

export class SHARE_INFO_1005View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get shi1005_flags(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x00: u32
  set shi1005_flags(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.SHARE_INFO_1006 (size: 8)
 */
export interface SHARE_INFO_1006 {
  /** u32 */
  shi1006_max_uses: number;
}

export const sizeofSHARE_INFO_1006 = 8;

export function allocSHARE_INFO_1006(data?: Partial<SHARE_INFO_1006>): Uint8Array {
  const buf = new Uint8Array(sizeofSHARE_INFO_1006);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.shi1006_max_uses !== undefined) view.setUint32(0, Number(data.shi1006_max_uses), true);
  // 0x04: pad4
  return buf;
}

export class SHARE_INFO_1006View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get shi1006_max_uses(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x00: u32
  set shi1006_max_uses(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.SHARE_INFO_1501 (size: 16)
 */
export interface SHARE_INFO_1501 {
  /** u32 */
  shi1501_reserved: number;
  /** Windows.Win32.Security.PSECURITY_DESCRIPTOR */
  shi1501_security_descriptor: Uint8Array | Deno.PointerValue;
}

export const sizeofSHARE_INFO_1501 = 16;

export function allocSHARE_INFO_1501(data?: Partial<SHARE_INFO_1501>): Uint8Array {
  const buf = new Uint8Array(sizeofSHARE_INFO_1501);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.shi1501_reserved !== undefined) view.setUint32(0, Number(data.shi1501_reserved), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.shi1501_security_descriptor !== undefined) view.setBigUint64(8, data.shi1501_security_descriptor === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.shi1501_security_descriptor))), true);
  return buf;
}

export class SHARE_INFO_1501View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get shi1501_reserved(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get shi1501_security_descriptor(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set shi1501_reserved(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set shi1501_security_descriptor(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.SHARE_INFO_1503 (size: 8)
 */
export interface SHARE_INFO_1503 {
  /** System.Guid */
  shi1503_sharefilter: Uint8Array | Deno.PointerValue;
}

export const sizeofSHARE_INFO_1503 = 8;

export function allocSHARE_INFO_1503(data?: Partial<SHARE_INFO_1503>): Uint8Array {
  const buf = new Uint8Array(sizeofSHARE_INFO_1503);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.shi1503_sharefilter !== undefined) view.setBigUint64(0, data.shi1503_sharefilter === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.shi1503_sharefilter))), true);
  return buf;
}

export class SHARE_INFO_1503View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get shi1503_sharefilter(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set shi1503_sharefilter(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.SERVER_ALIAS_INFO_0 (size: 32)
 */
export interface SERVER_ALIAS_INFO_0 {
  /** Windows.Win32.Foundation.PWSTR */
  srvai0_alias: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  srvai0_target: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.BOOLEAN */
  srvai0_default: Uint8Array | Deno.PointerValue;
  /** u32 */
  srvai0_reserved: number;
}

export const sizeofSERVER_ALIAS_INFO_0 = 32;

export function allocSERVER_ALIAS_INFO_0(data?: Partial<SERVER_ALIAS_INFO_0>): Uint8Array {
  const buf = new Uint8Array(sizeofSERVER_ALIAS_INFO_0);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.srvai0_alias !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.srvai0_alias);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  // 0x08: buffer
  if (data?.srvai0_target !== undefined) {
    (buf as any)._f8 = util.pwstrToFfi(data.srvai0_target);
    view.setBigUint64(8, (buf as any)._f8 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f8))), true);
  }
  // 0x10: pointer
  if (data?.srvai0_default !== undefined) view.setBigUint64(16, data.srvai0_default === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.srvai0_default))), true);
  // 0x18: u32
  if (data?.srvai0_reserved !== undefined) view.setUint32(24, Number(data.srvai0_reserved), true);
  // 0x1c: pad4
  return buf;
}

export class SERVER_ALIAS_INFO_0View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get srvai0_alias(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: buffer
  get srvai0_target(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get srvai0_default(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: u32
  get srvai0_reserved(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: pad4

  // 0x00: buffer
  set srvai0_alias(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }

  // 0x08: buffer
  set srvai0_target(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f8 = value;
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f8))), true);
  }

  // 0x10: pointer
  set srvai0_default(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: u32
  set srvai0_reserved(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.SESSION_INFO_0 (size: 8)
 */
export interface SESSION_INFO_0 {
  /** Windows.Win32.Foundation.PWSTR */
  sesi0_cname: string | null | Uint8Array | Uint16Array;
}

export const sizeofSESSION_INFO_0 = 8;

export function allocSESSION_INFO_0(data?: Partial<SESSION_INFO_0>): Uint8Array {
  const buf = new Uint8Array(sizeofSESSION_INFO_0);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.sesi0_cname !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.sesi0_cname);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  return buf;
}

export class SESSION_INFO_0View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get sesi0_cname(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: buffer
  set sesi0_cname(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.SESSION_INFO_1 (size: 32)
 */
export interface SESSION_INFO_1 {
  /** Windows.Win32.Foundation.PWSTR */
  sesi1_cname: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  sesi1_username: string | null | Uint8Array | Uint16Array;
  /** u32 */
  sesi1_num_opens: number;
  /** u32 */
  sesi1_time: number;
  /** u32 */
  sesi1_idle_time: number;
  /** Windows.Win32.Storage.FileSystem.SESSION_INFO_USER_FLAGS */
  sesi1_user_flags: SESSION_INFO_USER_FLAGS;
}

export const sizeofSESSION_INFO_1 = 32;

export function allocSESSION_INFO_1(data?: Partial<SESSION_INFO_1>): Uint8Array {
  const buf = new Uint8Array(sizeofSESSION_INFO_1);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.sesi1_cname !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.sesi1_cname);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  // 0x08: buffer
  if (data?.sesi1_username !== undefined) {
    (buf as any)._f8 = util.pwstrToFfi(data.sesi1_username);
    view.setBigUint64(8, (buf as any)._f8 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f8))), true);
  }
  // 0x10: u32
  if (data?.sesi1_num_opens !== undefined) view.setUint32(16, Number(data.sesi1_num_opens), true);
  // 0x14: u32
  if (data?.sesi1_time !== undefined) view.setUint32(20, Number(data.sesi1_time), true);
  // 0x18: u32
  if (data?.sesi1_idle_time !== undefined) view.setUint32(24, Number(data.sesi1_idle_time), true);
  // 0x1c: u32
  if (data?.sesi1_user_flags !== undefined) view.setUint32(28, Number(data.sesi1_user_flags), true);
  return buf;
}

export class SESSION_INFO_1View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get sesi1_cname(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: buffer
  get sesi1_username(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get sesi1_num_opens(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get sesi1_time(): number {
    return this.view.getUint32(20, true);
  }

  // 0x18: u32
  get sesi1_idle_time(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: u32
  get sesi1_user_flags(): number {
    return this.view.getUint32(28, true);
  }

  // 0x00: buffer
  set sesi1_cname(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }

  // 0x08: buffer
  set sesi1_username(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f8 = value;
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f8))), true);
  }

  // 0x10: u32
  set sesi1_num_opens(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set sesi1_time(value: number) {
    this.view.setUint32(20, value, true);
  }

  // 0x18: u32
  set sesi1_idle_time(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: u32
  set sesi1_user_flags(value: number) {
    this.view.setUint32(28, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.SESSION_INFO_2 (size: 40)
 */
export interface SESSION_INFO_2 {
  /** Windows.Win32.Foundation.PWSTR */
  sesi2_cname: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  sesi2_username: string | null | Uint8Array | Uint16Array;
  /** u32 */
  sesi2_num_opens: number;
  /** u32 */
  sesi2_time: number;
  /** u32 */
  sesi2_idle_time: number;
  /** Windows.Win32.Storage.FileSystem.SESSION_INFO_USER_FLAGS */
  sesi2_user_flags: SESSION_INFO_USER_FLAGS;
  /** Windows.Win32.Foundation.PWSTR */
  sesi2_cltype_name: string | null | Uint8Array | Uint16Array;
}

export const sizeofSESSION_INFO_2 = 40;

export function allocSESSION_INFO_2(data?: Partial<SESSION_INFO_2>): Uint8Array {
  const buf = new Uint8Array(sizeofSESSION_INFO_2);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.sesi2_cname !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.sesi2_cname);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  // 0x08: buffer
  if (data?.sesi2_username !== undefined) {
    (buf as any)._f8 = util.pwstrToFfi(data.sesi2_username);
    view.setBigUint64(8, (buf as any)._f8 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f8))), true);
  }
  // 0x10: u32
  if (data?.sesi2_num_opens !== undefined) view.setUint32(16, Number(data.sesi2_num_opens), true);
  // 0x14: u32
  if (data?.sesi2_time !== undefined) view.setUint32(20, Number(data.sesi2_time), true);
  // 0x18: u32
  if (data?.sesi2_idle_time !== undefined) view.setUint32(24, Number(data.sesi2_idle_time), true);
  // 0x1c: u32
  if (data?.sesi2_user_flags !== undefined) view.setUint32(28, Number(data.sesi2_user_flags), true);
  // 0x20: buffer
  if (data?.sesi2_cltype_name !== undefined) {
    (buf as any)._f32 = util.pwstrToFfi(data.sesi2_cltype_name);
    view.setBigUint64(32, (buf as any)._f32 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f32))), true);
  }
  return buf;
}

export class SESSION_INFO_2View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get sesi2_cname(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: buffer
  get sesi2_username(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get sesi2_num_opens(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get sesi2_time(): number {
    return this.view.getUint32(20, true);
  }

  // 0x18: u32
  get sesi2_idle_time(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: u32
  get sesi2_user_flags(): number {
    return this.view.getUint32(28, true);
  }

  // 0x20: buffer
  get sesi2_cltype_name(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: buffer
  set sesi2_cname(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }

  // 0x08: buffer
  set sesi2_username(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f8 = value;
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f8))), true);
  }

  // 0x10: u32
  set sesi2_num_opens(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set sesi2_time(value: number) {
    this.view.setUint32(20, value, true);
  }

  // 0x18: u32
  set sesi2_idle_time(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: u32
  set sesi2_user_flags(value: number) {
    this.view.setUint32(28, value, true);
  }

  // 0x20: buffer
  set sesi2_cltype_name(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f32 = value;
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f32))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.SESSION_INFO_10 (size: 24)
 */
export interface SESSION_INFO_10 {
  /** Windows.Win32.Foundation.PWSTR */
  sesi10_cname: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  sesi10_username: string | null | Uint8Array | Uint16Array;
  /** u32 */
  sesi10_time: number;
  /** u32 */
  sesi10_idle_time: number;
}

export const sizeofSESSION_INFO_10 = 24;

export function allocSESSION_INFO_10(data?: Partial<SESSION_INFO_10>): Uint8Array {
  const buf = new Uint8Array(sizeofSESSION_INFO_10);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.sesi10_cname !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.sesi10_cname);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  // 0x08: buffer
  if (data?.sesi10_username !== undefined) {
    (buf as any)._f8 = util.pwstrToFfi(data.sesi10_username);
    view.setBigUint64(8, (buf as any)._f8 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f8))), true);
  }
  // 0x10: u32
  if (data?.sesi10_time !== undefined) view.setUint32(16, Number(data.sesi10_time), true);
  // 0x14: u32
  if (data?.sesi10_idle_time !== undefined) view.setUint32(20, Number(data.sesi10_idle_time), true);
  return buf;
}

export class SESSION_INFO_10View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get sesi10_cname(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: buffer
  get sesi10_username(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get sesi10_time(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get sesi10_idle_time(): number {
    return this.view.getUint32(20, true);
  }

  // 0x00: buffer
  set sesi10_cname(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }

  // 0x08: buffer
  set sesi10_username(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f8 = value;
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f8))), true);
  }

  // 0x10: u32
  set sesi10_time(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set sesi10_idle_time(value: number) {
    this.view.setUint32(20, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.SESSION_INFO_502 (size: 48)
 */
export interface SESSION_INFO_502 {
  /** Windows.Win32.Foundation.PWSTR */
  sesi502_cname: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  sesi502_username: string | null | Uint8Array | Uint16Array;
  /** u32 */
  sesi502_num_opens: number;
  /** u32 */
  sesi502_time: number;
  /** u32 */
  sesi502_idle_time: number;
  /** Windows.Win32.Storage.FileSystem.SESSION_INFO_USER_FLAGS */
  sesi502_user_flags: SESSION_INFO_USER_FLAGS;
  /** Windows.Win32.Foundation.PWSTR */
  sesi502_cltype_name: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  sesi502_transport: string | null | Uint8Array | Uint16Array;
}

export const sizeofSESSION_INFO_502 = 48;

export function allocSESSION_INFO_502(data?: Partial<SESSION_INFO_502>): Uint8Array {
  const buf = new Uint8Array(sizeofSESSION_INFO_502);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.sesi502_cname !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.sesi502_cname);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  // 0x08: buffer
  if (data?.sesi502_username !== undefined) {
    (buf as any)._f8 = util.pwstrToFfi(data.sesi502_username);
    view.setBigUint64(8, (buf as any)._f8 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f8))), true);
  }
  // 0x10: u32
  if (data?.sesi502_num_opens !== undefined) view.setUint32(16, Number(data.sesi502_num_opens), true);
  // 0x14: u32
  if (data?.sesi502_time !== undefined) view.setUint32(20, Number(data.sesi502_time), true);
  // 0x18: u32
  if (data?.sesi502_idle_time !== undefined) view.setUint32(24, Number(data.sesi502_idle_time), true);
  // 0x1c: u32
  if (data?.sesi502_user_flags !== undefined) view.setUint32(28, Number(data.sesi502_user_flags), true);
  // 0x20: buffer
  if (data?.sesi502_cltype_name !== undefined) {
    (buf as any)._f32 = util.pwstrToFfi(data.sesi502_cltype_name);
    view.setBigUint64(32, (buf as any)._f32 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f32))), true);
  }
  // 0x28: buffer
  if (data?.sesi502_transport !== undefined) {
    (buf as any)._f40 = util.pwstrToFfi(data.sesi502_transport);
    view.setBigUint64(40, (buf as any)._f40 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f40))), true);
  }
  return buf;
}

export class SESSION_INFO_502View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get sesi502_cname(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: buffer
  get sesi502_username(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get sesi502_num_opens(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get sesi502_time(): number {
    return this.view.getUint32(20, true);
  }

  // 0x18: u32
  get sesi502_idle_time(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: u32
  get sesi502_user_flags(): number {
    return this.view.getUint32(28, true);
  }

  // 0x20: buffer
  get sesi502_cltype_name(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: buffer
  get sesi502_transport(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: buffer
  set sesi502_cname(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }

  // 0x08: buffer
  set sesi502_username(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f8 = value;
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f8))), true);
  }

  // 0x10: u32
  set sesi502_num_opens(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set sesi502_time(value: number) {
    this.view.setUint32(20, value, true);
  }

  // 0x18: u32
  set sesi502_idle_time(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: u32
  set sesi502_user_flags(value: number) {
    this.view.setUint32(28, value, true);
  }

  // 0x20: buffer
  set sesi502_cltype_name(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f32 = value;
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f32))), true);
  }

  // 0x28: buffer
  set sesi502_transport(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f40 = value;
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f40))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.CONNECTION_INFO_0 (size: 8)
 */
export interface CONNECTION_INFO_0 {
  /** u32 */
  coni0_id: number;
}

export const sizeofCONNECTION_INFO_0 = 8;

export function allocCONNECTION_INFO_0(data?: Partial<CONNECTION_INFO_0>): Uint8Array {
  const buf = new Uint8Array(sizeofCONNECTION_INFO_0);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.coni0_id !== undefined) view.setUint32(0, Number(data.coni0_id), true);
  // 0x04: pad4
  return buf;
}

export class CONNECTION_INFO_0View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get coni0_id(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x00: u32
  set coni0_id(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.CONNECTION_INFO_1 (size: 40)
 */
export interface CONNECTION_INFO_1 {
  /** u32 */
  coni1_id: number;
  /** Windows.Win32.Storage.FileSystem.SHARE_TYPE */
  coni1_type: SHARE_TYPE;
  /** u32 */
  coni1_num_opens: number;
  /** u32 */
  coni1_num_users: number;
  /** u32 */
  coni1_time: number;
  /** Windows.Win32.Foundation.PWSTR */
  coni1_username: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  coni1_netname: string | null | Uint8Array | Uint16Array;
}

export const sizeofCONNECTION_INFO_1 = 40;

export function allocCONNECTION_INFO_1(data?: Partial<CONNECTION_INFO_1>): Uint8Array {
  const buf = new Uint8Array(sizeofCONNECTION_INFO_1);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.coni1_id !== undefined) view.setUint32(0, Number(data.coni1_id), true);
  // 0x04: u32
  if (data?.coni1_type !== undefined) view.setUint32(4, Number(data.coni1_type), true);
  // 0x08: u32
  if (data?.coni1_num_opens !== undefined) view.setUint32(8, Number(data.coni1_num_opens), true);
  // 0x0c: u32
  if (data?.coni1_num_users !== undefined) view.setUint32(12, Number(data.coni1_num_users), true);
  // 0x10: u32
  if (data?.coni1_time !== undefined) view.setUint32(16, Number(data.coni1_time), true);
  // 0x14: pad4
  // 0x18: buffer
  if (data?.coni1_username !== undefined) {
    (buf as any)._f24 = util.pwstrToFfi(data.coni1_username);
    view.setBigUint64(24, (buf as any)._f24 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f24))), true);
  }
  // 0x20: buffer
  if (data?.coni1_netname !== undefined) {
    (buf as any)._f32 = util.pwstrToFfi(data.coni1_netname);
    view.setBigUint64(32, (buf as any)._f32 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f32))), true);
  }
  return buf;
}

export class CONNECTION_INFO_1View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get coni1_id(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get coni1_type(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get coni1_num_opens(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get coni1_num_users(): number {
    return this.view.getUint32(12, true);
  }

  // 0x10: u32
  get coni1_time(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x18: buffer
  get coni1_username(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: buffer
  get coni1_netname(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set coni1_id(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set coni1_type(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set coni1_num_opens(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set coni1_num_users(value: number) {
    this.view.setUint32(12, value, true);
  }

  // 0x10: u32
  set coni1_time(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4

  // 0x18: buffer
  set coni1_username(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f24 = value;
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f24))), true);
  }

  // 0x20: buffer
  set coni1_netname(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f32 = value;
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f32))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_INFO_2 (size: 8)
 */
export interface FILE_INFO_2 {
  /** u32 */
  fi2_id: number;
}

export const sizeofFILE_INFO_2 = 8;

export function allocFILE_INFO_2(data?: Partial<FILE_INFO_2>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_INFO_2);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.fi2_id !== undefined) view.setUint32(0, Number(data.fi2_id), true);
  // 0x04: pad4
  return buf;
}

export class FILE_INFO_2View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get fi2_id(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x00: u32
  set fi2_id(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_INFO_3 (size: 32)
 */
export interface FILE_INFO_3 {
  /** u32 */
  fi3_id: number;
  /** Windows.Win32.Storage.FileSystem.FILE_INFO_FLAGS_PERMISSIONS */
  fi3_permissions: FILE_INFO_FLAGS_PERMISSIONS;
  /** u32 */
  fi3_num_locks: number;
  /** Windows.Win32.Foundation.PWSTR */
  fi3_pathname: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  fi3_username: string | null | Uint8Array | Uint16Array;
}

export const sizeofFILE_INFO_3 = 32;

export function allocFILE_INFO_3(data?: Partial<FILE_INFO_3>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_INFO_3);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.fi3_id !== undefined) view.setUint32(0, Number(data.fi3_id), true);
  // 0x04: u32
  if (data?.fi3_permissions !== undefined) view.setUint32(4, Number(data.fi3_permissions), true);
  // 0x08: u32
  if (data?.fi3_num_locks !== undefined) view.setUint32(8, Number(data.fi3_num_locks), true);
  // 0x0c: pad4
  // 0x10: buffer
  if (data?.fi3_pathname !== undefined) {
    (buf as any)._f16 = util.pwstrToFfi(data.fi3_pathname);
    view.setBigUint64(16, (buf as any)._f16 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f16))), true);
  }
  // 0x18: buffer
  if (data?.fi3_username !== undefined) {
    (buf as any)._f24 = util.pwstrToFfi(data.fi3_username);
    view.setBigUint64(24, (buf as any)._f24 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f24))), true);
  }
  return buf;
}

export class FILE_INFO_3View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get fi3_id(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get fi3_permissions(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get fi3_num_locks(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: buffer
  get fi3_pathname(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: buffer
  get fi3_username(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set fi3_id(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set fi3_permissions(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set fi3_num_locks(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: buffer
  set fi3_pathname(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f16 = value;
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f16))), true);
  }

  // 0x18: buffer
  set fi3_username(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f24 = value;
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f24))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.SERVER_CERTIFICATE_INFO_0 (size: 88)
 */
export interface SERVER_CERTIFICATE_INFO_0 {
  /** Windows.Win32.Foundation.PWSTR */
  srvci0_name: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  srvci0_subject: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  srvci0_issuer: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  srvci0_thumbprint: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  srvci0_friendlyname: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  srvci0_notbefore: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  srvci0_notafter: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  srvci0_storelocation: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  srvci0_storename: string | null | Uint8Array | Uint16Array;
  /** Windows.Win32.Foundation.PWSTR */
  srvci0_renewalchain: string | null | Uint8Array | Uint16Array;
  /** u32 */
  srvci0_type: number;
  /** u32 */
  srvci0_flags: number;
}

export const sizeofSERVER_CERTIFICATE_INFO_0 = 88;

export function allocSERVER_CERTIFICATE_INFO_0(data?: Partial<SERVER_CERTIFICATE_INFO_0>): Uint8Array {
  const buf = new Uint8Array(sizeofSERVER_CERTIFICATE_INFO_0);
  const view = new DataView(buf.buffer);
  // 0x00: buffer
  if (data?.srvci0_name !== undefined) {
    (buf as any)._f0 = util.pwstrToFfi(data.srvci0_name);
    view.setBigUint64(0, (buf as any)._f0 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f0))), true);
  }
  // 0x08: buffer
  if (data?.srvci0_subject !== undefined) {
    (buf as any)._f8 = util.pwstrToFfi(data.srvci0_subject);
    view.setBigUint64(8, (buf as any)._f8 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f8))), true);
  }
  // 0x10: buffer
  if (data?.srvci0_issuer !== undefined) {
    (buf as any)._f16 = util.pwstrToFfi(data.srvci0_issuer);
    view.setBigUint64(16, (buf as any)._f16 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f16))), true);
  }
  // 0x18: buffer
  if (data?.srvci0_thumbprint !== undefined) {
    (buf as any)._f24 = util.pwstrToFfi(data.srvci0_thumbprint);
    view.setBigUint64(24, (buf as any)._f24 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f24))), true);
  }
  // 0x20: buffer
  if (data?.srvci0_friendlyname !== undefined) {
    (buf as any)._f32 = util.pwstrToFfi(data.srvci0_friendlyname);
    view.setBigUint64(32, (buf as any)._f32 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f32))), true);
  }
  // 0x28: buffer
  if (data?.srvci0_notbefore !== undefined) {
    (buf as any)._f40 = util.pwstrToFfi(data.srvci0_notbefore);
    view.setBigUint64(40, (buf as any)._f40 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f40))), true);
  }
  // 0x30: buffer
  if (data?.srvci0_notafter !== undefined) {
    (buf as any)._f48 = util.pwstrToFfi(data.srvci0_notafter);
    view.setBigUint64(48, (buf as any)._f48 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f48))), true);
  }
  // 0x38: buffer
  if (data?.srvci0_storelocation !== undefined) {
    (buf as any)._f56 = util.pwstrToFfi(data.srvci0_storelocation);
    view.setBigUint64(56, (buf as any)._f56 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f56))), true);
  }
  // 0x40: buffer
  if (data?.srvci0_storename !== undefined) {
    (buf as any)._f64 = util.pwstrToFfi(data.srvci0_storename);
    view.setBigUint64(64, (buf as any)._f64 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f64))), true);
  }
  // 0x48: buffer
  if (data?.srvci0_renewalchain !== undefined) {
    (buf as any)._f72 = util.pwstrToFfi(data.srvci0_renewalchain);
    view.setBigUint64(72, (buf as any)._f72 === null ? 0n : BigInt(Deno.UnsafePointer.value(Deno.UnsafePointer.of((buf as any)._f72))), true);
  }
  // 0x50: u32
  if (data?.srvci0_type !== undefined) view.setUint32(80, Number(data.srvci0_type), true);
  // 0x54: u32
  if (data?.srvci0_flags !== undefined) view.setUint32(84, Number(data.srvci0_flags), true);
  return buf;
}

export class SERVER_CERTIFICATE_INFO_0View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: buffer
  get srvci0_name(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: buffer
  get srvci0_subject(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: buffer
  get srvci0_issuer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: buffer
  get srvci0_thumbprint(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: buffer
  get srvci0_friendlyname(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: buffer
  get srvci0_notbefore(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: buffer
  get srvci0_notafter(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: buffer
  get srvci0_storelocation(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: buffer
  get srvci0_storename(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: buffer
  get srvci0_renewalchain(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: u32
  get srvci0_type(): number {
    return this.view.getUint32(80, true);
  }

  // 0x54: u32
  get srvci0_flags(): number {
    return this.view.getUint32(84, true);
  }

  // 0x00: buffer
  set srvci0_name(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f0 = value;
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f0))), true);
  }

  // 0x08: buffer
  set srvci0_subject(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f8 = value;
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f8))), true);
  }

  // 0x10: buffer
  set srvci0_issuer(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f16 = value;
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f16))), true);
  }

  // 0x18: buffer
  set srvci0_thumbprint(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f24 = value;
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f24))), true);
  }

  // 0x20: buffer
  set srvci0_friendlyname(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f32 = value;
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f32))), true);
  }

  // 0x28: buffer
  set srvci0_notbefore(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f40 = value;
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f40))), true);
  }

  // 0x30: buffer
  set srvci0_notafter(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f48 = value;
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f48))), true);
  }

  // 0x38: buffer
  set srvci0_storelocation(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f56 = value;
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f56))), true);
  }

  // 0x40: buffer
  set srvci0_storename(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f64 = value;
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f64))), true);
  }

  // 0x48: buffer
  set srvci0_renewalchain(value: Uint8Array | Deno.PointerValue) {
    (this.buf as any)._f72 = value;
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer((this.buf as any)._f72))), true);
  }

  // 0x50: u32
  set srvci0_type(value: number) {
    this.view.setUint32(80, value, true);
  }

  // 0x54: u32
  set srvci0_flags(value: number) {
    this.view.setUint32(84, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.STAT_WORKSTATION_0 (size: 216)
 */
export interface STAT_WORKSTATION_0 {
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  StatisticsStartTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  BytesReceived: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  SmbsReceived: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  PagingReadBytesRequested: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  NonPagingReadBytesRequested: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  CacheReadBytesRequested: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  NetworkReadBytesRequested: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  BytesTransmitted: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  SmbsTransmitted: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  PagingWriteBytesRequested: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  NonPagingWriteBytesRequested: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  CacheWriteBytesRequested: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  NetworkWriteBytesRequested: Uint8Array | Deno.PointerValue;
  /** u32 */
  InitiallyFailedOperations: number;
  /** u32 */
  FailedCompletionOperations: number;
  /** u32 */
  ReadOperations: number;
  /** u32 */
  RandomReadOperations: number;
  /** u32 */
  ReadSmbs: number;
  /** u32 */
  LargeReadSmbs: number;
  /** u32 */
  SmallReadSmbs: number;
  /** u32 */
  WriteOperations: number;
  /** u32 */
  RandomWriteOperations: number;
  /** u32 */
  WriteSmbs: number;
  /** u32 */
  LargeWriteSmbs: number;
  /** u32 */
  SmallWriteSmbs: number;
  /** u32 */
  RawReadsDenied: number;
  /** u32 */
  RawWritesDenied: number;
  /** u32 */
  NetworkErrors: number;
  /** u32 */
  Sessions: number;
  /** u32 */
  FailedSessions: number;
  /** u32 */
  Reconnects: number;
  /** u32 */
  CoreConnects: number;
  /** u32 */
  Lanman20Connects: number;
  /** u32 */
  Lanman21Connects: number;
  /** u32 */
  LanmanNtConnects: number;
  /** u32 */
  ServerDisconnects: number;
  /** u32 */
  HungSessions: number;
  /** u32 */
  UseCount: number;
  /** u32 */
  FailedUseCount: number;
  /** u32 */
  CurrentCommands: number;
}

export const sizeofSTAT_WORKSTATION_0 = 216;

export function allocSTAT_WORKSTATION_0(data?: Partial<STAT_WORKSTATION_0>): Uint8Array {
  const buf = new Uint8Array(sizeofSTAT_WORKSTATION_0);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.StatisticsStartTime !== undefined) view.setBigUint64(0, data.StatisticsStartTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.StatisticsStartTime))), true);
  // 0x08: pointer
  if (data?.BytesReceived !== undefined) view.setBigUint64(8, data.BytesReceived === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.BytesReceived))), true);
  // 0x10: pointer
  if (data?.SmbsReceived !== undefined) view.setBigUint64(16, data.SmbsReceived === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.SmbsReceived))), true);
  // 0x18: pointer
  if (data?.PagingReadBytesRequested !== undefined) view.setBigUint64(24, data.PagingReadBytesRequested === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PagingReadBytesRequested))), true);
  // 0x20: pointer
  if (data?.NonPagingReadBytesRequested !== undefined) view.setBigUint64(32, data.NonPagingReadBytesRequested === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.NonPagingReadBytesRequested))), true);
  // 0x28: pointer
  if (data?.CacheReadBytesRequested !== undefined) view.setBigUint64(40, data.CacheReadBytesRequested === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CacheReadBytesRequested))), true);
  // 0x30: pointer
  if (data?.NetworkReadBytesRequested !== undefined) view.setBigUint64(48, data.NetworkReadBytesRequested === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.NetworkReadBytesRequested))), true);
  // 0x38: pointer
  if (data?.BytesTransmitted !== undefined) view.setBigUint64(56, data.BytesTransmitted === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.BytesTransmitted))), true);
  // 0x40: pointer
  if (data?.SmbsTransmitted !== undefined) view.setBigUint64(64, data.SmbsTransmitted === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.SmbsTransmitted))), true);
  // 0x48: pointer
  if (data?.PagingWriteBytesRequested !== undefined) view.setBigUint64(72, data.PagingWriteBytesRequested === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.PagingWriteBytesRequested))), true);
  // 0x50: pointer
  if (data?.NonPagingWriteBytesRequested !== undefined) view.setBigUint64(80, data.NonPagingWriteBytesRequested === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.NonPagingWriteBytesRequested))), true);
  // 0x58: pointer
  if (data?.CacheWriteBytesRequested !== undefined) view.setBigUint64(88, data.CacheWriteBytesRequested === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CacheWriteBytesRequested))), true);
  // 0x60: pointer
  if (data?.NetworkWriteBytesRequested !== undefined) view.setBigUint64(96, data.NetworkWriteBytesRequested === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.NetworkWriteBytesRequested))), true);
  // 0x68: u32
  if (data?.InitiallyFailedOperations !== undefined) view.setUint32(104, Number(data.InitiallyFailedOperations), true);
  // 0x6c: u32
  if (data?.FailedCompletionOperations !== undefined) view.setUint32(108, Number(data.FailedCompletionOperations), true);
  // 0x70: u32
  if (data?.ReadOperations !== undefined) view.setUint32(112, Number(data.ReadOperations), true);
  // 0x74: u32
  if (data?.RandomReadOperations !== undefined) view.setUint32(116, Number(data.RandomReadOperations), true);
  // 0x78: u32
  if (data?.ReadSmbs !== undefined) view.setUint32(120, Number(data.ReadSmbs), true);
  // 0x7c: u32
  if (data?.LargeReadSmbs !== undefined) view.setUint32(124, Number(data.LargeReadSmbs), true);
  // 0x80: u32
  if (data?.SmallReadSmbs !== undefined) view.setUint32(128, Number(data.SmallReadSmbs), true);
  // 0x84: u32
  if (data?.WriteOperations !== undefined) view.setUint32(132, Number(data.WriteOperations), true);
  // 0x88: u32
  if (data?.RandomWriteOperations !== undefined) view.setUint32(136, Number(data.RandomWriteOperations), true);
  // 0x8c: u32
  if (data?.WriteSmbs !== undefined) view.setUint32(140, Number(data.WriteSmbs), true);
  // 0x90: u32
  if (data?.LargeWriteSmbs !== undefined) view.setUint32(144, Number(data.LargeWriteSmbs), true);
  // 0x94: u32
  if (data?.SmallWriteSmbs !== undefined) view.setUint32(148, Number(data.SmallWriteSmbs), true);
  // 0x98: u32
  if (data?.RawReadsDenied !== undefined) view.setUint32(152, Number(data.RawReadsDenied), true);
  // 0x9c: u32
  if (data?.RawWritesDenied !== undefined) view.setUint32(156, Number(data.RawWritesDenied), true);
  // 0xa0: u32
  if (data?.NetworkErrors !== undefined) view.setUint32(160, Number(data.NetworkErrors), true);
  // 0xa4: u32
  if (data?.Sessions !== undefined) view.setUint32(164, Number(data.Sessions), true);
  // 0xa8: u32
  if (data?.FailedSessions !== undefined) view.setUint32(168, Number(data.FailedSessions), true);
  // 0xac: u32
  if (data?.Reconnects !== undefined) view.setUint32(172, Number(data.Reconnects), true);
  // 0xb0: u32
  if (data?.CoreConnects !== undefined) view.setUint32(176, Number(data.CoreConnects), true);
  // 0xb4: u32
  if (data?.Lanman20Connects !== undefined) view.setUint32(180, Number(data.Lanman20Connects), true);
  // 0xb8: u32
  if (data?.Lanman21Connects !== undefined) view.setUint32(184, Number(data.Lanman21Connects), true);
  // 0xbc: u32
  if (data?.LanmanNtConnects !== undefined) view.setUint32(188, Number(data.LanmanNtConnects), true);
  // 0xc0: u32
  if (data?.ServerDisconnects !== undefined) view.setUint32(192, Number(data.ServerDisconnects), true);
  // 0xc4: u32
  if (data?.HungSessions !== undefined) view.setUint32(196, Number(data.HungSessions), true);
  // 0xc8: u32
  if (data?.UseCount !== undefined) view.setUint32(200, Number(data.UseCount), true);
  // 0xcc: u32
  if (data?.FailedUseCount !== undefined) view.setUint32(204, Number(data.FailedUseCount), true);
  // 0xd0: u32
  if (data?.CurrentCommands !== undefined) view.setUint32(208, Number(data.CurrentCommands), true);
  // 0xd4: pad4
  return buf;
}

export class STAT_WORKSTATION_0View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get StatisticsStartTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get BytesReceived(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get SmbsReceived(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get PagingReadBytesRequested(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get NonPagingReadBytesRequested(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get CacheReadBytesRequested(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get NetworkReadBytesRequested(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: pointer
  get BytesTransmitted(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(56, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x40: pointer
  get SmbsTransmitted(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get PagingWriteBytesRequested(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: pointer
  get NonPagingWriteBytesRequested(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(80, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x58: pointer
  get CacheWriteBytesRequested(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(88, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x60: pointer
  get NetworkWriteBytesRequested(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(96, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x68: u32
  get InitiallyFailedOperations(): number {
    return this.view.getUint32(104, true);
  }

  // 0x6c: u32
  get FailedCompletionOperations(): number {
    return this.view.getUint32(108, true);
  }

  // 0x70: u32
  get ReadOperations(): number {
    return this.view.getUint32(112, true);
  }

  // 0x74: u32
  get RandomReadOperations(): number {
    return this.view.getUint32(116, true);
  }

  // 0x78: u32
  get ReadSmbs(): number {
    return this.view.getUint32(120, true);
  }

  // 0x7c: u32
  get LargeReadSmbs(): number {
    return this.view.getUint32(124, true);
  }

  // 0x80: u32
  get SmallReadSmbs(): number {
    return this.view.getUint32(128, true);
  }

  // 0x84: u32
  get WriteOperations(): number {
    return this.view.getUint32(132, true);
  }

  // 0x88: u32
  get RandomWriteOperations(): number {
    return this.view.getUint32(136, true);
  }

  // 0x8c: u32
  get WriteSmbs(): number {
    return this.view.getUint32(140, true);
  }

  // 0x90: u32
  get LargeWriteSmbs(): number {
    return this.view.getUint32(144, true);
  }

  // 0x94: u32
  get SmallWriteSmbs(): number {
    return this.view.getUint32(148, true);
  }

  // 0x98: u32
  get RawReadsDenied(): number {
    return this.view.getUint32(152, true);
  }

  // 0x9c: u32
  get RawWritesDenied(): number {
    return this.view.getUint32(156, true);
  }

  // 0xa0: u32
  get NetworkErrors(): number {
    return this.view.getUint32(160, true);
  }

  // 0xa4: u32
  get Sessions(): number {
    return this.view.getUint32(164, true);
  }

  // 0xa8: u32
  get FailedSessions(): number {
    return this.view.getUint32(168, true);
  }

  // 0xac: u32
  get Reconnects(): number {
    return this.view.getUint32(172, true);
  }

  // 0xb0: u32
  get CoreConnects(): number {
    return this.view.getUint32(176, true);
  }

  // 0xb4: u32
  get Lanman20Connects(): number {
    return this.view.getUint32(180, true);
  }

  // 0xb8: u32
  get Lanman21Connects(): number {
    return this.view.getUint32(184, true);
  }

  // 0xbc: u32
  get LanmanNtConnects(): number {
    return this.view.getUint32(188, true);
  }

  // 0xc0: u32
  get ServerDisconnects(): number {
    return this.view.getUint32(192, true);
  }

  // 0xc4: u32
  get HungSessions(): number {
    return this.view.getUint32(196, true);
  }

  // 0xc8: u32
  get UseCount(): number {
    return this.view.getUint32(200, true);
  }

  // 0xcc: u32
  get FailedUseCount(): number {
    return this.view.getUint32(204, true);
  }

  // 0xd0: u32
  get CurrentCommands(): number {
    return this.view.getUint32(208, true);
  }

  // 0xd4: pad4

  // 0x00: pointer
  set StatisticsStartTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set BytesReceived(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set SmbsReceived(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set PagingReadBytesRequested(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set NonPagingReadBytesRequested(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set CacheReadBytesRequested(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set NetworkReadBytesRequested(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: pointer
  set BytesTransmitted(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(56, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x40: pointer
  set SmbsTransmitted(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set PagingWriteBytesRequested(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: pointer
  set NonPagingWriteBytesRequested(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(80, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x58: pointer
  set CacheWriteBytesRequested(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(88, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x60: pointer
  set NetworkWriteBytesRequested(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(96, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x68: u32
  set InitiallyFailedOperations(value: number) {
    this.view.setUint32(104, value, true);
  }

  // 0x6c: u32
  set FailedCompletionOperations(value: number) {
    this.view.setUint32(108, value, true);
  }

  // 0x70: u32
  set ReadOperations(value: number) {
    this.view.setUint32(112, value, true);
  }

  // 0x74: u32
  set RandomReadOperations(value: number) {
    this.view.setUint32(116, value, true);
  }

  // 0x78: u32
  set ReadSmbs(value: number) {
    this.view.setUint32(120, value, true);
  }

  // 0x7c: u32
  set LargeReadSmbs(value: number) {
    this.view.setUint32(124, value, true);
  }

  // 0x80: u32
  set SmallReadSmbs(value: number) {
    this.view.setUint32(128, value, true);
  }

  // 0x84: u32
  set WriteOperations(value: number) {
    this.view.setUint32(132, value, true);
  }

  // 0x88: u32
  set RandomWriteOperations(value: number) {
    this.view.setUint32(136, value, true);
  }

  // 0x8c: u32
  set WriteSmbs(value: number) {
    this.view.setUint32(140, value, true);
  }

  // 0x90: u32
  set LargeWriteSmbs(value: number) {
    this.view.setUint32(144, value, true);
  }

  // 0x94: u32
  set SmallWriteSmbs(value: number) {
    this.view.setUint32(148, value, true);
  }

  // 0x98: u32
  set RawReadsDenied(value: number) {
    this.view.setUint32(152, value, true);
  }

  // 0x9c: u32
  set RawWritesDenied(value: number) {
    this.view.setUint32(156, value, true);
  }

  // 0xa0: u32
  set NetworkErrors(value: number) {
    this.view.setUint32(160, value, true);
  }

  // 0xa4: u32
  set Sessions(value: number) {
    this.view.setUint32(164, value, true);
  }

  // 0xa8: u32
  set FailedSessions(value: number) {
    this.view.setUint32(168, value, true);
  }

  // 0xac: u32
  set Reconnects(value: number) {
    this.view.setUint32(172, value, true);
  }

  // 0xb0: u32
  set CoreConnects(value: number) {
    this.view.setUint32(176, value, true);
  }

  // 0xb4: u32
  set Lanman20Connects(value: number) {
    this.view.setUint32(180, value, true);
  }

  // 0xb8: u32
  set Lanman21Connects(value: number) {
    this.view.setUint32(184, value, true);
  }

  // 0xbc: u32
  set LanmanNtConnects(value: number) {
    this.view.setUint32(188, value, true);
  }

  // 0xc0: u32
  set ServerDisconnects(value: number) {
    this.view.setUint32(192, value, true);
  }

  // 0xc4: u32
  set HungSessions(value: number) {
    this.view.setUint32(196, value, true);
  }

  // 0xc8: u32
  set UseCount(value: number) {
    this.view.setUint32(200, value, true);
  }

  // 0xcc: u32
  set FailedUseCount(value: number) {
    this.view.setUint32(204, value, true);
  }

  // 0xd0: u32
  set CurrentCommands(value: number) {
    this.view.setUint32(208, value, true);
  }

  // 0xd4: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.STAT_SERVER_0 (size: 72)
 */
export interface STAT_SERVER_0 {
  /** u32 */
  sts0_start: number;
  /** u32 */
  sts0_fopens: number;
  /** u32 */
  sts0_devopens: number;
  /** u32 */
  sts0_jobsqueued: number;
  /** u32 */
  sts0_sopens: number;
  /** u32 */
  sts0_stimedout: number;
  /** u32 */
  sts0_serrorout: number;
  /** u32 */
  sts0_pwerrors: number;
  /** u32 */
  sts0_permerrors: number;
  /** u32 */
  sts0_syserrors: number;
  /** u32 */
  sts0_bytessent_low: number;
  /** u32 */
  sts0_bytessent_high: number;
  /** u32 */
  sts0_bytesrcvd_low: number;
  /** u32 */
  sts0_bytesrcvd_high: number;
  /** u32 */
  sts0_avresponse: number;
  /** u32 */
  sts0_reqbufneed: number;
  /** u32 */
  sts0_bigbufneed: number;
}

export const sizeofSTAT_SERVER_0 = 72;

export function allocSTAT_SERVER_0(data?: Partial<STAT_SERVER_0>): Uint8Array {
  const buf = new Uint8Array(sizeofSTAT_SERVER_0);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.sts0_start !== undefined) view.setUint32(0, Number(data.sts0_start), true);
  // 0x04: u32
  if (data?.sts0_fopens !== undefined) view.setUint32(4, Number(data.sts0_fopens), true);
  // 0x08: u32
  if (data?.sts0_devopens !== undefined) view.setUint32(8, Number(data.sts0_devopens), true);
  // 0x0c: u32
  if (data?.sts0_jobsqueued !== undefined) view.setUint32(12, Number(data.sts0_jobsqueued), true);
  // 0x10: u32
  if (data?.sts0_sopens !== undefined) view.setUint32(16, Number(data.sts0_sopens), true);
  // 0x14: u32
  if (data?.sts0_stimedout !== undefined) view.setUint32(20, Number(data.sts0_stimedout), true);
  // 0x18: u32
  if (data?.sts0_serrorout !== undefined) view.setUint32(24, Number(data.sts0_serrorout), true);
  // 0x1c: u32
  if (data?.sts0_pwerrors !== undefined) view.setUint32(28, Number(data.sts0_pwerrors), true);
  // 0x20: u32
  if (data?.sts0_permerrors !== undefined) view.setUint32(32, Number(data.sts0_permerrors), true);
  // 0x24: u32
  if (data?.sts0_syserrors !== undefined) view.setUint32(36, Number(data.sts0_syserrors), true);
  // 0x28: u32
  if (data?.sts0_bytessent_low !== undefined) view.setUint32(40, Number(data.sts0_bytessent_low), true);
  // 0x2c: u32
  if (data?.sts0_bytessent_high !== undefined) view.setUint32(44, Number(data.sts0_bytessent_high), true);
  // 0x30: u32
  if (data?.sts0_bytesrcvd_low !== undefined) view.setUint32(48, Number(data.sts0_bytesrcvd_low), true);
  // 0x34: u32
  if (data?.sts0_bytesrcvd_high !== undefined) view.setUint32(52, Number(data.sts0_bytesrcvd_high), true);
  // 0x38: u32
  if (data?.sts0_avresponse !== undefined) view.setUint32(56, Number(data.sts0_avresponse), true);
  // 0x3c: u32
  if (data?.sts0_reqbufneed !== undefined) view.setUint32(60, Number(data.sts0_reqbufneed), true);
  // 0x40: u32
  if (data?.sts0_bigbufneed !== undefined) view.setUint32(64, Number(data.sts0_bigbufneed), true);
  // 0x44: pad4
  return buf;
}

export class STAT_SERVER_0View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get sts0_start(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get sts0_fopens(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get sts0_devopens(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get sts0_jobsqueued(): number {
    return this.view.getUint32(12, true);
  }

  // 0x10: u32
  get sts0_sopens(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get sts0_stimedout(): number {
    return this.view.getUint32(20, true);
  }

  // 0x18: u32
  get sts0_serrorout(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: u32
  get sts0_pwerrors(): number {
    return this.view.getUint32(28, true);
  }

  // 0x20: u32
  get sts0_permerrors(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: u32
  get sts0_syserrors(): number {
    return this.view.getUint32(36, true);
  }

  // 0x28: u32
  get sts0_bytessent_low(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: u32
  get sts0_bytessent_high(): number {
    return this.view.getUint32(44, true);
  }

  // 0x30: u32
  get sts0_bytesrcvd_low(): number {
    return this.view.getUint32(48, true);
  }

  // 0x34: u32
  get sts0_bytesrcvd_high(): number {
    return this.view.getUint32(52, true);
  }

  // 0x38: u32
  get sts0_avresponse(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: u32
  get sts0_reqbufneed(): number {
    return this.view.getUint32(60, true);
  }

  // 0x40: u32
  get sts0_bigbufneed(): number {
    return this.view.getUint32(64, true);
  }

  // 0x44: pad4

  // 0x00: u32
  set sts0_start(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set sts0_fopens(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set sts0_devopens(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set sts0_jobsqueued(value: number) {
    this.view.setUint32(12, value, true);
  }

  // 0x10: u32
  set sts0_sopens(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set sts0_stimedout(value: number) {
    this.view.setUint32(20, value, true);
  }

  // 0x18: u32
  set sts0_serrorout(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: u32
  set sts0_pwerrors(value: number) {
    this.view.setUint32(28, value, true);
  }

  // 0x20: u32
  set sts0_permerrors(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: u32
  set sts0_syserrors(value: number) {
    this.view.setUint32(36, value, true);
  }

  // 0x28: u32
  set sts0_bytessent_low(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: u32
  set sts0_bytessent_high(value: number) {
    this.view.setUint32(44, value, true);
  }

  // 0x30: u32
  set sts0_bytesrcvd_low(value: number) {
    this.view.setUint32(48, value, true);
  }

  // 0x34: u32
  set sts0_bytesrcvd_high(value: number) {
    this.view.setUint32(52, value, true);
  }

  // 0x38: u32
  set sts0_avresponse(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: u32
  set sts0_reqbufneed(value: number) {
    this.view.setUint32(60, value, true);
  }

  // 0x40: u32
  set sts0_bigbufneed(value: number) {
    this.view.setUint32(64, value, true);
  }

  // 0x44: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.FH_OVERLAPPED (size: 72)
 */
export interface FH_OVERLAPPED {
  /** usize */
  Internal: bigint | number;
  /** usize */
  InternalHigh: bigint | number;
  /** u32 */
  Offset: number;
  /** u32 */
  OffsetHigh: number;
  /** Windows.Win32.Foundation.HANDLE */
  hEvent: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Storage.FileSystem.PFN_IO_COMPLETION */
  pfnCompletion: Uint8Array | Deno.PointerValue;
  /** usize */
  Reserved1: bigint | number;
  /** usize */
  Reserved2: bigint | number;
  /** usize */
  Reserved3: bigint | number;
  /** usize */
  Reserved4: bigint | number;
}

export const sizeofFH_OVERLAPPED = 72;

export function allocFH_OVERLAPPED(data?: Partial<FH_OVERLAPPED>): Uint8Array {
  const buf = new Uint8Array(sizeofFH_OVERLAPPED);
  const view = new DataView(buf.buffer);
  // 0x00: usize
  if (data?.Internal !== undefined) view.setBigUint64(0, BigInt(data.Internal), true);
  // 0x08: usize
  if (data?.InternalHigh !== undefined) view.setBigUint64(8, BigInt(data.InternalHigh), true);
  // 0x10: u32
  if (data?.Offset !== undefined) view.setUint32(16, Number(data.Offset), true);
  // 0x14: u32
  if (data?.OffsetHigh !== undefined) view.setUint32(20, Number(data.OffsetHigh), true);
  // 0x18: pointer
  if (data?.hEvent !== undefined) view.setBigUint64(24, data.hEvent === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.hEvent))), true);
  // 0x20: pointer
  if (data?.pfnCompletion !== undefined) view.setBigUint64(32, data.pfnCompletion === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pfnCompletion))), true);
  // 0x28: usize
  if (data?.Reserved1 !== undefined) view.setBigUint64(40, BigInt(data.Reserved1), true);
  // 0x30: usize
  if (data?.Reserved2 !== undefined) view.setBigUint64(48, BigInt(data.Reserved2), true);
  // 0x38: usize
  if (data?.Reserved3 !== undefined) view.setBigUint64(56, BigInt(data.Reserved3), true);
  // 0x40: usize
  if (data?.Reserved4 !== undefined) view.setBigUint64(64, BigInt(data.Reserved4), true);
  return buf;
}

export class FH_OVERLAPPEDView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: usize
  get Internal(): bigint | number {
    return Number(this.view.getBigUint64(0, true));
  }

  // 0x08: usize
  get InternalHigh(): bigint | number {
    return Number(this.view.getBigUint64(8, true));
  }

  // 0x10: u32
  get Offset(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get OffsetHigh(): number {
    return this.view.getUint32(20, true);
  }

  // 0x18: pointer
  get hEvent(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get pfnCompletion(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: usize
  get Reserved1(): bigint | number {
    return Number(this.view.getBigUint64(40, true));
  }

  // 0x30: usize
  get Reserved2(): bigint | number {
    return Number(this.view.getBigUint64(48, true));
  }

  // 0x38: usize
  get Reserved3(): bigint | number {
    return Number(this.view.getBigUint64(56, true));
  }

  // 0x40: usize
  get Reserved4(): bigint | number {
    return Number(this.view.getBigUint64(64, true));
  }

  // 0x00: usize
  set Internal(value: bigint | number) {
    this.view.setBigUint64(0, BigInt(value), true);
  }

  // 0x08: usize
  set InternalHigh(value: bigint | number) {
    this.view.setBigUint64(8, BigInt(value), true);
  }

  // 0x10: u32
  set Offset(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set OffsetHigh(value: number) {
    this.view.setUint32(20, value, true);
  }

  // 0x18: pointer
  set hEvent(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set pfnCompletion(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: usize
  set Reserved1(value: bigint | number) {
    this.view.setBigUint64(40, BigInt(value), true);
  }

  // 0x30: usize
  set Reserved2(value: bigint | number) {
    this.view.setBigUint64(48, BigInt(value), true);
  }

  // 0x38: usize
  set Reserved3(value: bigint | number) {
    this.view.setBigUint64(56, BigInt(value), true);
  }

  // 0x40: usize
  set Reserved4(value: bigint | number) {
    this.view.setBigUint64(64, BigInt(value), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FIO_CONTEXT (size: 24)
 */
export interface FIO_CONTEXT {
  /** u32 */
  m_dwTempHack: number;
  /** u32 */
  m_dwSignature: number;
  /** Windows.Win32.Foundation.HANDLE */
  m_hFile: Uint8Array | Deno.PointerValue;
  /** u32 */
  m_dwLinesOffset: number;
  /** u32 */
  m_dwHeaderLength: number;
}

export const sizeofFIO_CONTEXT = 24;

export function allocFIO_CONTEXT(data?: Partial<FIO_CONTEXT>): Uint8Array {
  const buf = new Uint8Array(sizeofFIO_CONTEXT);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.m_dwTempHack !== undefined) view.setUint32(0, Number(data.m_dwTempHack), true);
  // 0x04: u32
  if (data?.m_dwSignature !== undefined) view.setUint32(4, Number(data.m_dwSignature), true);
  // 0x08: pointer
  if (data?.m_hFile !== undefined) view.setBigUint64(8, data.m_hFile === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.m_hFile))), true);
  // 0x10: u32
  if (data?.m_dwLinesOffset !== undefined) view.setUint32(16, Number(data.m_dwLinesOffset), true);
  // 0x14: u32
  if (data?.m_dwHeaderLength !== undefined) view.setUint32(20, Number(data.m_dwHeaderLength), true);
  return buf;
}

export class FIO_CONTEXTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get m_dwTempHack(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get m_dwSignature(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get m_hFile(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get m_dwLinesOffset(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get m_dwHeaderLength(): number {
    return this.view.getUint32(20, true);
  }

  // 0x00: u32
  set m_dwTempHack(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set m_dwSignature(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set m_hFile(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set m_dwLinesOffset(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set m_dwHeaderLength(value: number) {
    this.view.setUint32(20, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.NAME_CACHE_CONTEXT (size: 8)
 */
export interface NAME_CACHE_CONTEXT {
  /** u32 */
  m_dwSignature: number;
}

export const sizeofNAME_CACHE_CONTEXT = 8;

export function allocNAME_CACHE_CONTEXT(data?: Partial<NAME_CACHE_CONTEXT>): Uint8Array {
  const buf = new Uint8Array(sizeofNAME_CACHE_CONTEXT);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.m_dwSignature !== undefined) view.setUint32(0, Number(data.m_dwSignature), true);
  // 0x04: pad4
  return buf;
}

export class NAME_CACHE_CONTEXTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get m_dwSignature(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x00: u32
  set m_dwSignature(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.IORING_BUFFER_INFO (size: 16)
 */
export interface IORING_BUFFER_INFO {
  /** ptr */
  Address: Deno.PointerValue | Uint8Array;
  /** u32 */
  Length: number;
}

export const sizeofIORING_BUFFER_INFO = 16;

export function allocIORING_BUFFER_INFO(data?: Partial<IORING_BUFFER_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofIORING_BUFFER_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Address !== undefined) view.setBigUint64(0, data.Address === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Address))), true);
  // 0x08: u32
  if (data?.Length !== undefined) view.setUint32(8, Number(data.Length), true);
  // 0x0c: pad4
  return buf;
}

export class IORING_BUFFER_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Address(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get Length(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x00: pointer
  set Address(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u32
  set Length(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.IORING_REGISTERED_BUFFER (size: 8)
 */
export interface IORING_REGISTERED_BUFFER {
  /** u32 */
  BufferIndex: number;
  /** u32 */
  Offset: number;
}

export const sizeofIORING_REGISTERED_BUFFER = 8;

export function allocIORING_REGISTERED_BUFFER(data?: Partial<IORING_REGISTERED_BUFFER>): Uint8Array {
  const buf = new Uint8Array(sizeofIORING_REGISTERED_BUFFER);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.BufferIndex !== undefined) view.setUint32(0, Number(data.BufferIndex), true);
  // 0x04: u32
  if (data?.Offset !== undefined) view.setUint32(4, Number(data.Offset), true);
  return buf;
}

export class IORING_REGISTERED_BUFFERView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get BufferIndex(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get Offset(): number {
    return this.view.getUint32(4, true);
  }

  // 0x00: u32
  set BufferIndex(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set Offset(value: number) {
    this.view.setUint32(4, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.HIORING__ (size: 8)
 */
export interface HIORING__ {
  /** i32 */
  unused: number;
}

export const sizeofHIORING__ = 8;

export function allocHIORING__(data?: Partial<HIORING__>): Uint8Array {
  const buf = new Uint8Array(sizeofHIORING__);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.unused !== undefined) view.setInt32(0, Number(data.unused), true);
  // 0x04: pad4
  return buf;
}

export class HIORING__View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get unused(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: pad4

  // 0x00: i32
  set unused(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.IORING_CREATE_FLAGS (size: 8)
 */
export interface IORING_CREATE_FLAGS {
  /** Windows.Win32.Storage.FileSystem.IORING_CREATE_REQUIRED_FLAGS */
  Required: IORING_CREATE_REQUIRED_FLAGS;
  /** Windows.Win32.Storage.FileSystem.IORING_CREATE_ADVISORY_FLAGS */
  Advisory: IORING_CREATE_ADVISORY_FLAGS;
}

export const sizeofIORING_CREATE_FLAGS = 8;

export function allocIORING_CREATE_FLAGS(data?: Partial<IORING_CREATE_FLAGS>): Uint8Array {
  const buf = new Uint8Array(sizeofIORING_CREATE_FLAGS);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.Required !== undefined) view.setInt32(0, Number(data.Required), true);
  // 0x04: i32
  if (data?.Advisory !== undefined) view.setInt32(4, Number(data.Advisory), true);
  return buf;
}

export class IORING_CREATE_FLAGSView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get Required(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: i32
  get Advisory(): number {
    return this.view.getInt32(4, true);
  }

  // 0x00: i32
  set Required(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: i32
  set Advisory(value: number) {
    this.view.setInt32(4, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.IORING_INFO (size: 24)
 */
export interface IORING_INFO {
  /** Windows.Win32.Storage.FileSystem.IORING_VERSION */
  IoRingVersion: IORING_VERSION;
  /** Windows.Win32.Storage.FileSystem.IORING_CREATE_FLAGS */
  Flags: Uint8Array | Deno.PointerValue;
  /** u32 */
  SubmissionQueueSize: number;
  /** u32 */
  CompletionQueueSize: number;
}

export const sizeofIORING_INFO = 24;

export function allocIORING_INFO(data?: Partial<IORING_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofIORING_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.IoRingVersion !== undefined) view.setInt32(0, Number(data.IoRingVersion), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.Flags !== undefined) view.setBigUint64(8, data.Flags === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Flags))), true);
  // 0x10: u32
  if (data?.SubmissionQueueSize !== undefined) view.setUint32(16, Number(data.SubmissionQueueSize), true);
  // 0x14: u32
  if (data?.CompletionQueueSize !== undefined) view.setUint32(20, Number(data.CompletionQueueSize), true);
  return buf;
}

export class IORING_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get IoRingVersion(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get Flags(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get SubmissionQueueSize(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get CompletionQueueSize(): number {
    return this.view.getUint32(20, true);
  }

  // 0x00: i32
  set IoRingVersion(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set Flags(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set SubmissionQueueSize(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set CompletionQueueSize(value: number) {
    this.view.setUint32(20, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.IORING_CAPABILITIES (size: 16)
 */
export interface IORING_CAPABILITIES {
  /** Windows.Win32.Storage.FileSystem.IORING_VERSION */
  MaxVersion: IORING_VERSION;
  /** u32 */
  MaxSubmissionQueueSize: number;
  /** u32 */
  MaxCompletionQueueSize: number;
  /** Windows.Win32.Storage.FileSystem.IORING_FEATURE_FLAGS */
  FeatureFlags: IORING_FEATURE_FLAGS;
}

export const sizeofIORING_CAPABILITIES = 16;

export function allocIORING_CAPABILITIES(data?: Partial<IORING_CAPABILITIES>): Uint8Array {
  const buf = new Uint8Array(sizeofIORING_CAPABILITIES);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.MaxVersion !== undefined) view.setInt32(0, Number(data.MaxVersion), true);
  // 0x04: u32
  if (data?.MaxSubmissionQueueSize !== undefined) view.setUint32(4, Number(data.MaxSubmissionQueueSize), true);
  // 0x08: u32
  if (data?.MaxCompletionQueueSize !== undefined) view.setUint32(8, Number(data.MaxCompletionQueueSize), true);
  // 0x0c: i32
  if (data?.FeatureFlags !== undefined) view.setInt32(12, Number(data.FeatureFlags), true);
  return buf;
}

export class IORING_CAPABILITIESView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get MaxVersion(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: u32
  get MaxSubmissionQueueSize(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get MaxCompletionQueueSize(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: i32
  get FeatureFlags(): number {
    return this.view.getInt32(12, true);
  }

  // 0x00: i32
  set MaxVersion(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: u32
  set MaxSubmissionQueueSize(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set MaxCompletionQueueSize(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: i32
  set FeatureFlags(value: number) {
    this.view.setInt32(12, value, true);
  }
}

/**
 * HandleUnion (size: 16)
 */
export interface HandleUnion {
  /** Windows.Win32.Foundation.HANDLE */
  Handle: Uint8Array | Deno.PointerValue;
  /** u32 */
  Index: number;
}

export const sizeofHandleUnion = 16;

export function allocHandleUnion(data?: Partial<HandleUnion>): Uint8Array {
  const buf = new Uint8Array(sizeofHandleUnion);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Handle !== undefined) view.setBigUint64(0, data.Handle === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Handle))), true);
  // 0x08: u32
  if (data?.Index !== undefined) view.setUint32(8, Number(data.Index), true);
  // 0x0c: pad4
  return buf;
}

export class HandleUnionView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Handle(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u32
  get Index(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x00: pointer
  set Handle(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u32
  set Index(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.IORING_HANDLE_REF (size: 16)
 */
export interface IORING_HANDLE_REF {
  /** Windows.Win32.Storage.FileSystem.IORING_REF_KIND */
  Kind: IORING_REF_KIND;
  /** HandleUnion */
  Handle: Uint8Array | Deno.PointerValue;
}

export const sizeofIORING_HANDLE_REF = 16;

export function allocIORING_HANDLE_REF(data?: Partial<IORING_HANDLE_REF>): Uint8Array {
  const buf = new Uint8Array(sizeofIORING_HANDLE_REF);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.Kind !== undefined) view.setInt32(0, Number(data.Kind), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.Handle !== undefined) view.setBigUint64(8, data.Handle === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Handle))), true);
  return buf;
}

export class IORING_HANDLE_REFView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get Kind(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get Handle(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set Kind(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set Handle(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * BufferUnion (size: 16)
 */
export interface BufferUnion {
  /** ptr */
  Address: Deno.PointerValue | Uint8Array;
  /** Windows.Win32.Storage.FileSystem.IORING_REGISTERED_BUFFER */
  IndexAndOffset: Uint8Array | Deno.PointerValue;
}

export const sizeofBufferUnion = 16;

export function allocBufferUnion(data?: Partial<BufferUnion>): Uint8Array {
  const buf = new Uint8Array(sizeofBufferUnion);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Address !== undefined) view.setBigUint64(0, data.Address === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Address))), true);
  // 0x08: pointer
  if (data?.IndexAndOffset !== undefined) view.setBigUint64(8, data.IndexAndOffset === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.IndexAndOffset))), true);
  return buf;
}

export class BufferUnionView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Address(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get IndexAndOffset(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set Address(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set IndexAndOffset(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.IORING_BUFFER_REF (size: 16)
 */
export interface IORING_BUFFER_REF {
  /** Windows.Win32.Storage.FileSystem.IORING_REF_KIND */
  Kind: IORING_REF_KIND;
  /** BufferUnion */
  Buffer: Uint8Array | Deno.PointerValue;
}

export const sizeofIORING_BUFFER_REF = 16;

export function allocIORING_BUFFER_REF(data?: Partial<IORING_BUFFER_REF>): Uint8Array {
  const buf = new Uint8Array(sizeofIORING_BUFFER_REF);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.Kind !== undefined) view.setInt32(0, Number(data.Kind), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.Buffer !== undefined) view.setBigUint64(8, data.Buffer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Buffer))), true);
  return buf;
}

export class IORING_BUFFER_REFView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get Kind(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get Buffer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set Kind(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set Buffer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

export type HRESULT = number;

/**
 * Windows.Win32.Storage.FileSystem.IORING_CQE (size: 24)
 */
export interface IORING_CQE {
  /** usize */
  UserData: bigint | number;
  /** Windows.Win32.Foundation.HRESULT */
  ResultCode: Uint8Array | Deno.PointerValue;
  /** usize */
  Information: bigint | number;
}

export const sizeofIORING_CQE = 24;

export function allocIORING_CQE(data?: Partial<IORING_CQE>): Uint8Array {
  const buf = new Uint8Array(sizeofIORING_CQE);
  const view = new DataView(buf.buffer);
  // 0x00: usize
  if (data?.UserData !== undefined) view.setBigUint64(0, BigInt(data.UserData), true);
  // 0x08: pointer
  if (data?.ResultCode !== undefined) view.setBigUint64(8, data.ResultCode === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ResultCode))), true);
  // 0x10: usize
  if (data?.Information !== undefined) view.setBigUint64(16, BigInt(data.Information), true);
  return buf;
}

export class IORING_CQEView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: usize
  get UserData(): bigint | number {
    return Number(this.view.getBigUint64(0, true));
  }

  // 0x08: pointer
  get ResultCode(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: usize
  get Information(): bigint | number {
    return Number(this.view.getBigUint64(16, true));
  }

  // 0x00: usize
  set UserData(value: bigint | number) {
    this.view.setBigUint64(0, BigInt(value), true);
  }

  // 0x08: pointer
  set ResultCode(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: usize
  set Information(value: bigint | number) {
    this.view.setBigUint64(16, BigInt(value), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_ID_128 (size: 8)
 */
export interface FILE_ID_128 {
  /** array */
  Identifier: Deno.PointerValue;
}

export const sizeofFILE_ID_128 = 8;

export function allocFILE_ID_128(data?: Partial<FILE_ID_128>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_ID_128);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Identifier !== undefined) view.setBigUint64(0, data.Identifier === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Identifier))), true);
  return buf;
}

export class FILE_ID_128View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Identifier(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set Identifier(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_NOTIFY_INFORMATION (size: 24)
 */
export interface FILE_NOTIFY_INFORMATION {
  /** u32 */
  NextEntryOffset: number;
  /** Windows.Win32.Storage.FileSystem.FILE_ACTION */
  Action: FILE_ACTION;
  /** u32 */
  FileNameLength: number;
  /** array */
  FileName: Deno.PointerValue;
}

export const sizeofFILE_NOTIFY_INFORMATION = 24;

export function allocFILE_NOTIFY_INFORMATION(data?: Partial<FILE_NOTIFY_INFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_NOTIFY_INFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.NextEntryOffset !== undefined) view.setUint32(0, Number(data.NextEntryOffset), true);
  // 0x04: u32
  if (data?.Action !== undefined) view.setUint32(4, Number(data.Action), true);
  // 0x08: u32
  if (data?.FileNameLength !== undefined) view.setUint32(8, Number(data.FileNameLength), true);
  // 0x0c: pad4
  // 0x10: pointer
  if (data?.FileName !== undefined) view.setBigUint64(16, data.FileName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.FileName))), true);
  return buf;
}

export class FILE_NOTIFY_INFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get NextEntryOffset(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get Action(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get FileNameLength(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  get FileName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set NextEntryOffset(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set Action(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set FileNameLength(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: pad4

  // 0x10: pointer
  set FileName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_NOTIFY_EXTENDED_INFORMATION (size: 96)
 */
export interface FILE_NOTIFY_EXTENDED_INFORMATION {
  /** u32 */
  NextEntryOffset: number;
  /** Windows.Win32.Storage.FileSystem.FILE_ACTION */
  Action: FILE_ACTION;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  CreationTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  LastModificationTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  LastChangeTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  LastAccessTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  AllocatedLength: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  FileSize: Uint8Array | Deno.PointerValue;
  /** u32 */
  FileAttributes: number;
  /** u32 */
  ReparsePointTag: number;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  FileId: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  ParentFileId: Uint8Array | Deno.PointerValue;
  /** u32 */
  FileNameLength: number;
  /** array */
  FileName: Deno.PointerValue;
}

export const sizeofFILE_NOTIFY_EXTENDED_INFORMATION = 96;

export function allocFILE_NOTIFY_EXTENDED_INFORMATION(data?: Partial<FILE_NOTIFY_EXTENDED_INFORMATION>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_NOTIFY_EXTENDED_INFORMATION);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.NextEntryOffset !== undefined) view.setUint32(0, Number(data.NextEntryOffset), true);
  // 0x04: u32
  if (data?.Action !== undefined) view.setUint32(4, Number(data.Action), true);
  // 0x08: pointer
  if (data?.CreationTime !== undefined) view.setBigUint64(8, data.CreationTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CreationTime))), true);
  // 0x10: pointer
  if (data?.LastModificationTime !== undefined) view.setBigUint64(16, data.LastModificationTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LastModificationTime))), true);
  // 0x18: pointer
  if (data?.LastChangeTime !== undefined) view.setBigUint64(24, data.LastChangeTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LastChangeTime))), true);
  // 0x20: pointer
  if (data?.LastAccessTime !== undefined) view.setBigUint64(32, data.LastAccessTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LastAccessTime))), true);
  // 0x28: pointer
  if (data?.AllocatedLength !== undefined) view.setBigUint64(40, data.AllocatedLength === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.AllocatedLength))), true);
  // 0x30: pointer
  if (data?.FileSize !== undefined) view.setBigUint64(48, data.FileSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.FileSize))), true);
  // 0x38: u32
  if (data?.FileAttributes !== undefined) view.setUint32(56, Number(data.FileAttributes), true);
  // 0x3c: u32
  if (data?.ReparsePointTag !== undefined) view.setUint32(60, Number(data.ReparsePointTag), true);
  // 0x40: pointer
  if (data?.FileId !== undefined) view.setBigUint64(64, data.FileId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.FileId))), true);
  // 0x48: pointer
  if (data?.ParentFileId !== undefined) view.setBigUint64(72, data.ParentFileId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ParentFileId))), true);
  // 0x50: u32
  if (data?.FileNameLength !== undefined) view.setUint32(80, Number(data.FileNameLength), true);
  // 0x54: pad4
  // 0x58: pointer
  if (data?.FileName !== undefined) view.setBigUint64(88, data.FileName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.FileName))), true);
  return buf;
}

export class FILE_NOTIFY_EXTENDED_INFORMATIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get NextEntryOffset(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get Action(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get CreationTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get LastModificationTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get LastChangeTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get LastAccessTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get AllocatedLength(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get FileSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: u32
  get FileAttributes(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: u32
  get ReparsePointTag(): number {
    return this.view.getUint32(60, true);
  }

  // 0x40: pointer
  get FileId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(64, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x48: pointer
  get ParentFileId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: u32
  get FileNameLength(): number {
    return this.view.getUint32(80, true);
  }

  // 0x54: pad4

  // 0x58: pointer
  get FileName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(88, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set NextEntryOffset(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set Action(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set CreationTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set LastModificationTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set LastChangeTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set LastAccessTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set AllocatedLength(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set FileSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: u32
  set FileAttributes(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: u32
  set ReparsePointTag(value: number) {
    this.view.setUint32(60, value, true);
  }

  // 0x40: pointer
  set FileId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(64, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x48: pointer
  set ParentFileId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: u32
  set FileNameLength(value: number) {
    this.view.setUint32(80, value, true);
  }

  // 0x54: pad4

  // 0x58: pointer
  set FileName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(88, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_SEGMENT_ELEMENT (size: 16)
 */
export interface FILE_SEGMENT_ELEMENT {
  /** ptr */
  Buffer: Deno.PointerValue | Uint8Array;
  /** u64 */
  Alignment: bigint | number;
}

export const sizeofFILE_SEGMENT_ELEMENT = 16;

export function allocFILE_SEGMENT_ELEMENT(data?: Partial<FILE_SEGMENT_ELEMENT>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_SEGMENT_ELEMENT);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Buffer !== undefined) view.setBigUint64(0, data.Buffer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Buffer))), true);
  // 0x08: u64
  if (data?.Alignment !== undefined) view.setBigUint64(8, BigInt(data.Alignment), true);
  return buf;
}

export class FILE_SEGMENT_ELEMENTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Buffer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u64
  get Alignment(): bigint | number {
    return Number(this.view.getBigUint64(8, true));
  }

  // 0x00: pointer
  set Buffer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u64
  set Alignment(value: bigint | number) {
    this.view.setBigUint64(8, BigInt(value), true);
  }
}

/**
 * _GenericReparseBuffer_e__Struct (size: 8)
 */
export interface _GenericReparseBuffer_e__Struct {
  /** array */
  DataBuffer: Deno.PointerValue;
}

export const sizeof_GenericReparseBuffer_e__Struct = 8;

export function alloc_GenericReparseBuffer_e__Struct(data?: Partial<_GenericReparseBuffer_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_GenericReparseBuffer_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.DataBuffer !== undefined) view.setBigUint64(0, data.DataBuffer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.DataBuffer))), true);
  return buf;
}

export class _GenericReparseBuffer_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get DataBuffer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set DataBuffer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.REPARSE_GUID_DATA_BUFFER (size: 24)
 */
export interface REPARSE_GUID_DATA_BUFFER {
  /** u32 */
  ReparseTag: number;
  /** u16 */
  ReparseDataLength: number;
  /** u16 */
  Reserved: number;
  /** System.Guid */
  ReparseGuid: Uint8Array | Deno.PointerValue;
  /** _GenericReparseBuffer_e__Struct */
  GenericReparseBuffer: Uint8Array | Deno.PointerValue;
}

export const sizeofREPARSE_GUID_DATA_BUFFER = 24;

export function allocREPARSE_GUID_DATA_BUFFER(data?: Partial<REPARSE_GUID_DATA_BUFFER>): Uint8Array {
  const buf = new Uint8Array(sizeofREPARSE_GUID_DATA_BUFFER);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.ReparseTag !== undefined) view.setUint32(0, Number(data.ReparseTag), true);
  // 0x04: u16
  if (data?.ReparseDataLength !== undefined) view.setUint16(4, Number(data.ReparseDataLength), true);
  // 0x06: u16
  if (data?.Reserved !== undefined) view.setUint16(6, Number(data.Reserved), true);
  // 0x08: pointer
  if (data?.ReparseGuid !== undefined) view.setBigUint64(8, data.ReparseGuid === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ReparseGuid))), true);
  // 0x10: pointer
  if (data?.GenericReparseBuffer !== undefined) view.setBigUint64(16, data.GenericReparseBuffer === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.GenericReparseBuffer))), true);
  return buf;
}

export class REPARSE_GUID_DATA_BUFFERView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get ReparseTag(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u16
  get ReparseDataLength(): number {
    return this.view.getUint16(4, true);
  }

  // 0x06: u16
  get Reserved(): number {
    return this.view.getUint16(6, true);
  }

  // 0x08: pointer
  get ReparseGuid(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get GenericReparseBuffer(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set ReparseTag(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u16
  set ReparseDataLength(value: number) {
    this.view.setUint16(4, value, true);
  }

  // 0x06: u16
  set Reserved(value: number) {
    this.view.setUint16(6, value, true);
  }

  // 0x08: pointer
  set ReparseGuid(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set GenericReparseBuffer(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.TAPE_ERASE (size: 16)
 */
export interface TAPE_ERASE {
  /** Windows.Win32.Storage.FileSystem.ERASE_TAPE_TYPE */
  Type: ERASE_TAPE_TYPE;
  /** Windows.Win32.Foundation.BOOLEAN */
  Immediate: Uint8Array | Deno.PointerValue;
}

export const sizeofTAPE_ERASE = 16;

export function allocTAPE_ERASE(data?: Partial<TAPE_ERASE>): Uint8Array {
  const buf = new Uint8Array(sizeofTAPE_ERASE);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.Type !== undefined) view.setInt32(0, Number(data.Type), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.Immediate !== undefined) view.setBigUint64(8, data.Immediate === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Immediate))), true);
  return buf;
}

export class TAPE_ERASEView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get Type(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get Immediate(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set Type(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set Immediate(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.TAPE_PREPARE (size: 16)
 */
export interface TAPE_PREPARE {
  /** Windows.Win32.Storage.FileSystem.PREPARE_TAPE_OPERATION */
  Operation: PREPARE_TAPE_OPERATION;
  /** Windows.Win32.Foundation.BOOLEAN */
  Immediate: Uint8Array | Deno.PointerValue;
}

export const sizeofTAPE_PREPARE = 16;

export function allocTAPE_PREPARE(data?: Partial<TAPE_PREPARE>): Uint8Array {
  const buf = new Uint8Array(sizeofTAPE_PREPARE);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.Operation !== undefined) view.setInt32(0, Number(data.Operation), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.Immediate !== undefined) view.setBigUint64(8, data.Immediate === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Immediate))), true);
  return buf;
}

export class TAPE_PREPAREView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get Operation(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get Immediate(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set Operation(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set Immediate(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.TAPE_WRITE_MARKS (size: 16)
 */
export interface TAPE_WRITE_MARKS {
  /** Windows.Win32.Storage.FileSystem.TAPEMARK_TYPE */
  Type: TAPEMARK_TYPE;
  /** u32 */
  Count: number;
  /** Windows.Win32.Foundation.BOOLEAN */
  Immediate: Uint8Array | Deno.PointerValue;
}

export const sizeofTAPE_WRITE_MARKS = 16;

export function allocTAPE_WRITE_MARKS(data?: Partial<TAPE_WRITE_MARKS>): Uint8Array {
  const buf = new Uint8Array(sizeofTAPE_WRITE_MARKS);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.Type !== undefined) view.setInt32(0, Number(data.Type), true);
  // 0x04: u32
  if (data?.Count !== undefined) view.setUint32(4, Number(data.Count), true);
  // 0x08: pointer
  if (data?.Immediate !== undefined) view.setBigUint64(8, data.Immediate === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Immediate))), true);
  return buf;
}

export class TAPE_WRITE_MARKSView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get Type(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: u32
  get Count(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get Immediate(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set Type(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: u32
  set Count(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set Immediate(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.TAPE_GET_POSITION (size: 16)
 */
export interface TAPE_GET_POSITION {
  /** Windows.Win32.Storage.FileSystem.TAPE_POSITION_TYPE */
  Type: TAPE_POSITION_TYPE;
  /** u32 */
  Partition: number;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  Offset: Uint8Array | Deno.PointerValue;
}

export const sizeofTAPE_GET_POSITION = 16;

export function allocTAPE_GET_POSITION(data?: Partial<TAPE_GET_POSITION>): Uint8Array {
  const buf = new Uint8Array(sizeofTAPE_GET_POSITION);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.Type !== undefined) view.setInt32(0, Number(data.Type), true);
  // 0x04: u32
  if (data?.Partition !== undefined) view.setUint32(4, Number(data.Partition), true);
  // 0x08: pointer
  if (data?.Offset !== undefined) view.setBigUint64(8, data.Offset === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Offset))), true);
  return buf;
}

export class TAPE_GET_POSITIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get Type(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: u32
  get Partition(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get Offset(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set Type(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: u32
  set Partition(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set Offset(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.TAPE_SET_POSITION (size: 24)
 */
export interface TAPE_SET_POSITION {
  /** Windows.Win32.Storage.FileSystem.TAPE_POSITION_METHOD */
  Method: TAPE_POSITION_METHOD;
  /** u32 */
  Partition: number;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  Offset: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.BOOLEAN */
  Immediate: Uint8Array | Deno.PointerValue;
}

export const sizeofTAPE_SET_POSITION = 24;

export function allocTAPE_SET_POSITION(data?: Partial<TAPE_SET_POSITION>): Uint8Array {
  const buf = new Uint8Array(sizeofTAPE_SET_POSITION);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.Method !== undefined) view.setInt32(0, Number(data.Method), true);
  // 0x04: u32
  if (data?.Partition !== undefined) view.setUint32(4, Number(data.Partition), true);
  // 0x08: pointer
  if (data?.Offset !== undefined) view.setBigUint64(8, data.Offset === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Offset))), true);
  // 0x10: pointer
  if (data?.Immediate !== undefined) view.setBigUint64(16, data.Immediate === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Immediate))), true);
  return buf;
}

export class TAPE_SET_POSITIONView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get Method(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: u32
  get Partition(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get Offset(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get Immediate(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set Method(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: u32
  set Partition(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set Offset(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set Immediate(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.OFSTRUCT (size: 16)
 */
export interface OFSTRUCT {
  /** u8 */
  cBytes: number;
  /** u8 */
  fFixedDisk: number;
  /** u16 */
  nErrCode: number;
  /** u16 */
  Reserved1: number;
  /** u16 */
  Reserved2: number;
  /** array */
  szPathName: Deno.PointerValue;
}

export const sizeofOFSTRUCT = 16;

export function allocOFSTRUCT(data?: Partial<OFSTRUCT>): Uint8Array {
  const buf = new Uint8Array(sizeofOFSTRUCT);
  const view = new DataView(buf.buffer);
  // 0x00: u8
  if (data?.cBytes !== undefined) view.setUint8(0, Number(data.cBytes));
  // 0x01: u8
  if (data?.fFixedDisk !== undefined) view.setUint8(1, Number(data.fFixedDisk));
  // 0x02: u16
  if (data?.nErrCode !== undefined) view.setUint16(2, Number(data.nErrCode), true);
  // 0x04: u16
  if (data?.Reserved1 !== undefined) view.setUint16(4, Number(data.Reserved1), true);
  // 0x06: u16
  if (data?.Reserved2 !== undefined) view.setUint16(6, Number(data.Reserved2), true);
  // 0x08: pointer
  if (data?.szPathName !== undefined) view.setBigUint64(8, data.szPathName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.szPathName))), true);
  return buf;
}

export class OFSTRUCTView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u8
  get cBytes(): number {
    return this.view.getUint8(0);
  }

  // 0x01: u8
  get fFixedDisk(): number {
    return this.view.getUint8(1);
  }

  // 0x02: u16
  get nErrCode(): number {
    return this.view.getUint16(2, true);
  }

  // 0x04: u16
  get Reserved1(): number {
    return this.view.getUint16(4, true);
  }

  // 0x06: u16
  get Reserved2(): number {
    return this.view.getUint16(6, true);
  }

  // 0x08: pointer
  get szPathName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u8
  set cBytes(value: number) {
    this.view.setUint8(0, value);
  }

  // 0x01: u8
  set fFixedDisk(value: number) {
    this.view.setUint8(1, value);
  }

  // 0x02: u16
  set nErrCode(value: number) {
    this.view.setUint16(2, value, true);
  }

  // 0x04: u16
  set Reserved1(value: number) {
    this.view.setUint16(4, value, true);
  }

  // 0x06: u16
  set Reserved2(value: number) {
    this.view.setUint16(6, value, true);
  }

  // 0x08: pointer
  set szPathName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.WIN32_STREAM_ID (size: 32)
 */
export interface WIN32_STREAM_ID {
  /** Windows.Win32.Storage.FileSystem.WIN_STREAM_ID */
  dwStreamId: WIN_STREAM_ID;
  /** u32 */
  dwStreamAttributes: number;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  Size: Uint8Array | Deno.PointerValue;
  /** u32 */
  dwStreamNameSize: number;
  /** array */
  cStreamName: Deno.PointerValue;
}

export const sizeofWIN32_STREAM_ID = 32;

export function allocWIN32_STREAM_ID(data?: Partial<WIN32_STREAM_ID>): Uint8Array {
  const buf = new Uint8Array(sizeofWIN32_STREAM_ID);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwStreamId !== undefined) view.setUint32(0, Number(data.dwStreamId), true);
  // 0x04: u32
  if (data?.dwStreamAttributes !== undefined) view.setUint32(4, Number(data.dwStreamAttributes), true);
  // 0x08: pointer
  if (data?.Size !== undefined) view.setBigUint64(8, data.Size === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Size))), true);
  // 0x10: u32
  if (data?.dwStreamNameSize !== undefined) view.setUint32(16, Number(data.dwStreamNameSize), true);
  // 0x14: pad4
  // 0x18: pointer
  if (data?.cStreamName !== undefined) view.setBigUint64(24, data.cStreamName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.cStreamName))), true);
  return buf;
}

export class WIN32_STREAM_IDView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwStreamId(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get dwStreamAttributes(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get Size(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get dwStreamNameSize(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  get cStreamName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwStreamId(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set dwStreamAttributes(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set Size(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set dwStreamNameSize(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  set cStreamName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.COPYFILE2_MESSAGE (size: 16)
 */
export interface COPYFILE2_MESSAGE {
  /** Windows.Win32.Storage.FileSystem.COPYFILE2_MESSAGE_TYPE */
  Type: COPYFILE2_MESSAGE_TYPE;
  /** u32 */
  dwPadding: number;
  /** _Info_e__Union */
  Info: Uint8Array | Deno.PointerValue;
}

export const sizeofCOPYFILE2_MESSAGE = 16;

export function allocCOPYFILE2_MESSAGE(data?: Partial<COPYFILE2_MESSAGE>): Uint8Array {
  const buf = new Uint8Array(sizeofCOPYFILE2_MESSAGE);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.Type !== undefined) view.setInt32(0, Number(data.Type), true);
  // 0x04: u32
  if (data?.dwPadding !== undefined) view.setUint32(4, Number(data.dwPadding), true);
  // 0x08: pointer
  if (data?.Info !== undefined) view.setBigUint64(8, data.Info === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Info))), true);
  return buf;
}

export class COPYFILE2_MESSAGEView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get Type(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: u32
  get dwPadding(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get Info(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: i32
  set Type(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: u32
  set dwPadding(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set Info(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.COPYFILE2_EXTENDED_PARAMETERS (size: 32)
 */
export interface COPYFILE2_EXTENDED_PARAMETERS {
  /** u32 */
  dwSize: number;
  /** u32 */
  dwCopyFlags: number;
  /** ptr */
  pfCancel: Deno.PointerValue | Uint8Array;
  /** Windows.Win32.Storage.FileSystem.PCOPYFILE2_PROGRESS_ROUTINE */
  pProgressRoutine: Uint8Array | Deno.PointerValue;
  /** ptr */
  pvCallbackContext: Deno.PointerValue | Uint8Array;
}

export const sizeofCOPYFILE2_EXTENDED_PARAMETERS = 32;

export function allocCOPYFILE2_EXTENDED_PARAMETERS(data?: Partial<COPYFILE2_EXTENDED_PARAMETERS>): Uint8Array {
  const buf = new Uint8Array(sizeofCOPYFILE2_EXTENDED_PARAMETERS);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwSize !== undefined) view.setUint32(0, Number(data.dwSize), true);
  // 0x04: u32
  if (data?.dwCopyFlags !== undefined) view.setUint32(4, Number(data.dwCopyFlags), true);
  // 0x08: pointer
  if (data?.pfCancel !== undefined) view.setBigUint64(8, data.pfCancel === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pfCancel))), true);
  // 0x10: pointer
  if (data?.pProgressRoutine !== undefined) view.setBigUint64(16, data.pProgressRoutine === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pProgressRoutine))), true);
  // 0x18: pointer
  if (data?.pvCallbackContext !== undefined) view.setBigUint64(24, data.pvCallbackContext === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pvCallbackContext))), true);
  return buf;
}

export class COPYFILE2_EXTENDED_PARAMETERSView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get dwCopyFlags(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get pfCancel(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get pProgressRoutine(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get pvCallbackContext(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set dwCopyFlags(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set pfCancel(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set pProgressRoutine(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set pvCallbackContext(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.COPYFILE2_EXTENDED_PARAMETERS_V2 (size: 56)
 */
export interface COPYFILE2_EXTENDED_PARAMETERS_V2 {
  /** u32 */
  dwSize: number;
  /** u32 */
  dwCopyFlags: number;
  /** ptr */
  pfCancel: Deno.PointerValue | Uint8Array;
  /** Windows.Win32.Storage.FileSystem.PCOPYFILE2_PROGRESS_ROUTINE */
  pProgressRoutine: Uint8Array | Deno.PointerValue;
  /** ptr */
  pvCallbackContext: Deno.PointerValue | Uint8Array;
  /** u32 */
  dwCopyFlagsV2: number;
  /** u32 */
  ioDesiredSize: number;
  /** u32 */
  ioDesiredRate: number;
  /** array */
  reserved: Deno.PointerValue;
}

export const sizeofCOPYFILE2_EXTENDED_PARAMETERS_V2 = 56;

export function allocCOPYFILE2_EXTENDED_PARAMETERS_V2(data?: Partial<COPYFILE2_EXTENDED_PARAMETERS_V2>): Uint8Array {
  const buf = new Uint8Array(sizeofCOPYFILE2_EXTENDED_PARAMETERS_V2);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwSize !== undefined) view.setUint32(0, Number(data.dwSize), true);
  // 0x04: u32
  if (data?.dwCopyFlags !== undefined) view.setUint32(4, Number(data.dwCopyFlags), true);
  // 0x08: pointer
  if (data?.pfCancel !== undefined) view.setBigUint64(8, data.pfCancel === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pfCancel))), true);
  // 0x10: pointer
  if (data?.pProgressRoutine !== undefined) view.setBigUint64(16, data.pProgressRoutine === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pProgressRoutine))), true);
  // 0x18: pointer
  if (data?.pvCallbackContext !== undefined) view.setBigUint64(24, data.pvCallbackContext === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.pvCallbackContext))), true);
  // 0x20: u32
  if (data?.dwCopyFlagsV2 !== undefined) view.setUint32(32, Number(data.dwCopyFlagsV2), true);
  // 0x24: u32
  if (data?.ioDesiredSize !== undefined) view.setUint32(36, Number(data.ioDesiredSize), true);
  // 0x28: u32
  if (data?.ioDesiredRate !== undefined) view.setUint32(40, Number(data.ioDesiredRate), true);
  // 0x2c: pad4
  // 0x30: pointer
  if (data?.reserved !== undefined) view.setBigUint64(48, data.reserved === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.reserved))), true);
  return buf;
}

export class COPYFILE2_EXTENDED_PARAMETERS_V2View {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get dwCopyFlags(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get pfCancel(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get pProgressRoutine(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get pvCallbackContext(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: u32
  get dwCopyFlagsV2(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: u32
  get ioDesiredSize(): number {
    return this.view.getUint32(36, true);
  }

  // 0x28: u32
  get ioDesiredRate(): number {
    return this.view.getUint32(40, true);
  }

  // 0x2c: pad4

  // 0x30: pointer
  get reserved(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set dwCopyFlags(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set pfCancel(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set pProgressRoutine(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set pvCallbackContext(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: u32
  set dwCopyFlagsV2(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: u32
  set ioDesiredSize(value: number) {
    this.view.setUint32(36, value, true);
  }

  // 0x28: u32
  set ioDesiredRate(value: number) {
    this.view.setUint32(40, value, true);
  }

  // 0x2c: pad4

  // 0x30: pointer
  set reserved(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_BASIC_INFO (size: 40)
 */
export interface FILE_BASIC_INFO {
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  CreationTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  LastAccessTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  LastWriteTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  ChangeTime: Uint8Array | Deno.PointerValue;
  /** u32 */
  FileAttributes: number;
}

export const sizeofFILE_BASIC_INFO = 40;

export function allocFILE_BASIC_INFO(data?: Partial<FILE_BASIC_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_BASIC_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.CreationTime !== undefined) view.setBigUint64(0, data.CreationTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CreationTime))), true);
  // 0x08: pointer
  if (data?.LastAccessTime !== undefined) view.setBigUint64(8, data.LastAccessTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LastAccessTime))), true);
  // 0x10: pointer
  if (data?.LastWriteTime !== undefined) view.setBigUint64(16, data.LastWriteTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LastWriteTime))), true);
  // 0x18: pointer
  if (data?.ChangeTime !== undefined) view.setBigUint64(24, data.ChangeTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ChangeTime))), true);
  // 0x20: u32
  if (data?.FileAttributes !== undefined) view.setUint32(32, Number(data.FileAttributes), true);
  // 0x24: pad4
  return buf;
}

export class FILE_BASIC_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get CreationTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get LastAccessTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get LastWriteTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get ChangeTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: u32
  get FileAttributes(): number {
    return this.view.getUint32(32, true);
  }

  // 0x24: pad4

  // 0x00: pointer
  set CreationTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set LastAccessTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set LastWriteTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set ChangeTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: u32
  set FileAttributes(value: number) {
    this.view.setUint32(32, value, true);
  }

  // 0x24: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_STANDARD_INFO (size: 40)
 */
export interface FILE_STANDARD_INFO {
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  AllocationSize: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  EndOfFile: Uint8Array | Deno.PointerValue;
  /** u32 */
  NumberOfLinks: number;
  /** Windows.Win32.Foundation.BOOLEAN */
  DeletePending: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.BOOLEAN */
  Directory: Uint8Array | Deno.PointerValue;
}

export const sizeofFILE_STANDARD_INFO = 40;

export function allocFILE_STANDARD_INFO(data?: Partial<FILE_STANDARD_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_STANDARD_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.AllocationSize !== undefined) view.setBigUint64(0, data.AllocationSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.AllocationSize))), true);
  // 0x08: pointer
  if (data?.EndOfFile !== undefined) view.setBigUint64(8, data.EndOfFile === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.EndOfFile))), true);
  // 0x10: u32
  if (data?.NumberOfLinks !== undefined) view.setUint32(16, Number(data.NumberOfLinks), true);
  // 0x14: pad4
  // 0x18: pointer
  if (data?.DeletePending !== undefined) view.setBigUint64(24, data.DeletePending === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.DeletePending))), true);
  // 0x20: pointer
  if (data?.Directory !== undefined) view.setBigUint64(32, data.Directory === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Directory))), true);
  return buf;
}

export class FILE_STANDARD_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get AllocationSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get EndOfFile(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get NumberOfLinks(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  get DeletePending(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get Directory(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set AllocationSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set EndOfFile(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set NumberOfLinks(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  set DeletePending(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set Directory(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_NAME_INFO (size: 16)
 */
export interface FILE_NAME_INFO {
  /** u32 */
  FileNameLength: number;
  /** array */
  FileName: Deno.PointerValue;
}

export const sizeofFILE_NAME_INFO = 16;

export function allocFILE_NAME_INFO(data?: Partial<FILE_NAME_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_NAME_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.FileNameLength !== undefined) view.setUint32(0, Number(data.FileNameLength), true);
  // 0x04: pad4
  // 0x08: pointer
  if (data?.FileName !== undefined) view.setBigUint64(8, data.FileName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.FileName))), true);
  return buf;
}

export class FILE_NAME_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get FileNameLength(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  get FileName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set FileNameLength(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4

  // 0x08: pointer
  set FileName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * _Anonymous_e__Union (size: 16)
 */
export interface _Anonymous_e__Union {
  /** _Anonymous_e__Struct */
  Anonymous: Uint8Array | Deno.PointerValue;
  /** array */
  X: Deno.PointerValue;
}

export const sizeof_Anonymous_e__Union = 16;

export function alloc_Anonymous_e__Union(data?: Partial<_Anonymous_e__Union>): Uint8Array {
  const buf = new Uint8Array(sizeof_Anonymous_e__Union);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Anonymous !== undefined) view.setBigUint64(0, data.Anonymous === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Anonymous))), true);
  // 0x08: pointer
  if (data?.X !== undefined) view.setBigUint64(8, data.X === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.X))), true);
  return buf;
}

export class _Anonymous_e__UnionView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Anonymous(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get X(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set Anonymous(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set X(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_RENAME_INFO (size: 32)
 */
export interface FILE_RENAME_INFO {
  /** _Anonymous_e__Union */
  Anonymous: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.HANDLE */
  RootDirectory: Uint8Array | Deno.PointerValue;
  /** u32 */
  FileNameLength: number;
  /** array */
  FileName: Deno.PointerValue;
}

export const sizeofFILE_RENAME_INFO = 32;

export function allocFILE_RENAME_INFO(data?: Partial<FILE_RENAME_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_RENAME_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Anonymous !== undefined) view.setBigUint64(0, data.Anonymous === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Anonymous))), true);
  // 0x08: pointer
  if (data?.RootDirectory !== undefined) view.setBigUint64(8, data.RootDirectory === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.RootDirectory))), true);
  // 0x10: u32
  if (data?.FileNameLength !== undefined) view.setUint32(16, Number(data.FileNameLength), true);
  // 0x14: pad4
  // 0x18: pointer
  if (data?.FileName !== undefined) view.setBigUint64(24, data.FileName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.FileName))), true);
  return buf;
}

export class FILE_RENAME_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Anonymous(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get RootDirectory(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: u32
  get FileNameLength(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  get FileName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set Anonymous(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set RootDirectory(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: u32
  set FileNameLength(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  set FileName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_ALLOCATION_INFO (size: 8)
 */
export interface FILE_ALLOCATION_INFO {
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  AllocationSize: Uint8Array | Deno.PointerValue;
}

export const sizeofFILE_ALLOCATION_INFO = 8;

export function allocFILE_ALLOCATION_INFO(data?: Partial<FILE_ALLOCATION_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_ALLOCATION_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.AllocationSize !== undefined) view.setBigUint64(0, data.AllocationSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.AllocationSize))), true);
  return buf;
}

export class FILE_ALLOCATION_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get AllocationSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set AllocationSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_END_OF_FILE_INFO (size: 8)
 */
export interface FILE_END_OF_FILE_INFO {
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  EndOfFile: Uint8Array | Deno.PointerValue;
}

export const sizeofFILE_END_OF_FILE_INFO = 8;

export function allocFILE_END_OF_FILE_INFO(data?: Partial<FILE_END_OF_FILE_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_END_OF_FILE_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.EndOfFile !== undefined) view.setBigUint64(0, data.EndOfFile === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.EndOfFile))), true);
  return buf;
}

export class FILE_END_OF_FILE_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get EndOfFile(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set EndOfFile(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_STREAM_INFO (size: 32)
 */
export interface FILE_STREAM_INFO {
  /** u32 */
  NextEntryOffset: number;
  /** u32 */
  StreamNameLength: number;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  StreamSize: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  StreamAllocationSize: Uint8Array | Deno.PointerValue;
  /** array */
  StreamName: Deno.PointerValue;
}

export const sizeofFILE_STREAM_INFO = 32;

export function allocFILE_STREAM_INFO(data?: Partial<FILE_STREAM_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_STREAM_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.NextEntryOffset !== undefined) view.setUint32(0, Number(data.NextEntryOffset), true);
  // 0x04: u32
  if (data?.StreamNameLength !== undefined) view.setUint32(4, Number(data.StreamNameLength), true);
  // 0x08: pointer
  if (data?.StreamSize !== undefined) view.setBigUint64(8, data.StreamSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.StreamSize))), true);
  // 0x10: pointer
  if (data?.StreamAllocationSize !== undefined) view.setBigUint64(16, data.StreamAllocationSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.StreamAllocationSize))), true);
  // 0x18: pointer
  if (data?.StreamName !== undefined) view.setBigUint64(24, data.StreamName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.StreamName))), true);
  return buf;
}

export class FILE_STREAM_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get NextEntryOffset(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get StreamNameLength(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get StreamSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get StreamAllocationSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get StreamName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set NextEntryOffset(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set StreamNameLength(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set StreamSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set StreamAllocationSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set StreamName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_COMPRESSION_INFO (size: 24)
 */
export interface FILE_COMPRESSION_INFO {
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  CompressedFileSize: Uint8Array | Deno.PointerValue;
  /** u16 */
  CompressionFormat: number;
  /** u8 */
  CompressionUnitShift: number;
  /** u8 */
  ChunkShift: number;
  /** u8 */
  ClusterShift: number;
  /** array */
  Reserved: Deno.PointerValue;
}

export const sizeofFILE_COMPRESSION_INFO = 24;

export function allocFILE_COMPRESSION_INFO(data?: Partial<FILE_COMPRESSION_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_COMPRESSION_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.CompressedFileSize !== undefined) view.setBigUint64(0, data.CompressedFileSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CompressedFileSize))), true);
  // 0x08: u16
  if (data?.CompressionFormat !== undefined) view.setUint16(8, Number(data.CompressionFormat), true);
  // 0x0a: u8
  if (data?.CompressionUnitShift !== undefined) view.setUint8(10, Number(data.CompressionUnitShift));
  // 0x0b: u8
  if (data?.ChunkShift !== undefined) view.setUint8(11, Number(data.ChunkShift));
  // 0x0c: u8
  if (data?.ClusterShift !== undefined) view.setUint8(12, Number(data.ClusterShift));
  // 0x0d: pad3
  // 0x10: pointer
  if (data?.Reserved !== undefined) view.setBigUint64(16, data.Reserved === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Reserved))), true);
  return buf;
}

export class FILE_COMPRESSION_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get CompressedFileSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: u16
  get CompressionFormat(): number {
    return this.view.getUint16(8, true);
  }

  // 0x0a: u8
  get CompressionUnitShift(): number {
    return this.view.getUint8(10);
  }

  // 0x0b: u8
  get ChunkShift(): number {
    return this.view.getUint8(11);
  }

  // 0x0c: u8
  get ClusterShift(): number {
    return this.view.getUint8(12);
  }

  // 0x0d: pad3

  // 0x10: pointer
  get Reserved(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set CompressedFileSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: u16
  set CompressionFormat(value: number) {
    this.view.setUint16(8, value, true);
  }

  // 0x0a: u8
  set CompressionUnitShift(value: number) {
    this.view.setUint8(10, value);
  }

  // 0x0b: u8
  set ChunkShift(value: number) {
    this.view.setUint8(11, value);
  }

  // 0x0c: u8
  set ClusterShift(value: number) {
    this.view.setUint8(12, value);
  }

  // 0x0d: pad3

  // 0x10: pointer
  set Reserved(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_ATTRIBUTE_TAG_INFO (size: 8)
 */
export interface FILE_ATTRIBUTE_TAG_INFO {
  /** u32 */
  FileAttributes: number;
  /** u32 */
  ReparseTag: number;
}

export const sizeofFILE_ATTRIBUTE_TAG_INFO = 8;

export function allocFILE_ATTRIBUTE_TAG_INFO(data?: Partial<FILE_ATTRIBUTE_TAG_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_ATTRIBUTE_TAG_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.FileAttributes !== undefined) view.setUint32(0, Number(data.FileAttributes), true);
  // 0x04: u32
  if (data?.ReparseTag !== undefined) view.setUint32(4, Number(data.ReparseTag), true);
  return buf;
}

export class FILE_ATTRIBUTE_TAG_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get FileAttributes(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get ReparseTag(): number {
    return this.view.getUint32(4, true);
  }

  // 0x00: u32
  set FileAttributes(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set ReparseTag(value: number) {
    this.view.setUint32(4, value, true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_ID_BOTH_DIR_INFO (size: 96)
 */
export interface FILE_ID_BOTH_DIR_INFO {
  /** u32 */
  NextEntryOffset: number;
  /** u32 */
  FileIndex: number;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  CreationTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  LastAccessTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  LastWriteTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  ChangeTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  EndOfFile: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  AllocationSize: Uint8Array | Deno.PointerValue;
  /** u32 */
  FileAttributes: number;
  /** u32 */
  FileNameLength: number;
  /** u32 */
  EaSize: number;
  /** i8 */
  ShortNameLength: number;
  /** array */
  ShortName: Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  FileId: Uint8Array | Deno.PointerValue;
  /** array */
  FileName: Deno.PointerValue;
}

export const sizeofFILE_ID_BOTH_DIR_INFO = 96;

export function allocFILE_ID_BOTH_DIR_INFO(data?: Partial<FILE_ID_BOTH_DIR_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_ID_BOTH_DIR_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.NextEntryOffset !== undefined) view.setUint32(0, Number(data.NextEntryOffset), true);
  // 0x04: u32
  if (data?.FileIndex !== undefined) view.setUint32(4, Number(data.FileIndex), true);
  // 0x08: pointer
  if (data?.CreationTime !== undefined) view.setBigUint64(8, data.CreationTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CreationTime))), true);
  // 0x10: pointer
  if (data?.LastAccessTime !== undefined) view.setBigUint64(16, data.LastAccessTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LastAccessTime))), true);
  // 0x18: pointer
  if (data?.LastWriteTime !== undefined) view.setBigUint64(24, data.LastWriteTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LastWriteTime))), true);
  // 0x20: pointer
  if (data?.ChangeTime !== undefined) view.setBigUint64(32, data.ChangeTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ChangeTime))), true);
  // 0x28: pointer
  if (data?.EndOfFile !== undefined) view.setBigUint64(40, data.EndOfFile === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.EndOfFile))), true);
  // 0x30: pointer
  if (data?.AllocationSize !== undefined) view.setBigUint64(48, data.AllocationSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.AllocationSize))), true);
  // 0x38: u32
  if (data?.FileAttributes !== undefined) view.setUint32(56, Number(data.FileAttributes), true);
  // 0x3c: u32
  if (data?.FileNameLength !== undefined) view.setUint32(60, Number(data.FileNameLength), true);
  // 0x40: u32
  if (data?.EaSize !== undefined) view.setUint32(64, Number(data.EaSize), true);
  // 0x44: i8
  if (data?.ShortNameLength !== undefined) view.setInt8(68, Number(data.ShortNameLength));
  // 0x45: pad3
  // 0x48: pointer
  if (data?.ShortName !== undefined) view.setBigUint64(72, data.ShortName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ShortName))), true);
  // 0x50: pointer
  if (data?.FileId !== undefined) view.setBigUint64(80, data.FileId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.FileId))), true);
  // 0x58: pointer
  if (data?.FileName !== undefined) view.setBigUint64(88, data.FileName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.FileName))), true);
  return buf;
}

export class FILE_ID_BOTH_DIR_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get NextEntryOffset(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get FileIndex(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get CreationTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get LastAccessTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get LastWriteTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get ChangeTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get EndOfFile(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get AllocationSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: u32
  get FileAttributes(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: u32
  get FileNameLength(): number {
    return this.view.getUint32(60, true);
  }

  // 0x40: u32
  get EaSize(): number {
    return this.view.getUint32(64, true);
  }

  // 0x44: i8
  get ShortNameLength(): number {
    return this.view.getInt8(68);
  }

  // 0x45: pad3

  // 0x48: pointer
  get ShortName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: pointer
  get FileId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(80, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x58: pointer
  get FileName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(88, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set NextEntryOffset(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set FileIndex(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set CreationTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set LastAccessTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set LastWriteTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set ChangeTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set EndOfFile(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set AllocationSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: u32
  set FileAttributes(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: u32
  set FileNameLength(value: number) {
    this.view.setUint32(60, value, true);
  }

  // 0x40: u32
  set EaSize(value: number) {
    this.view.setUint32(64, value, true);
  }

  // 0x44: i8
  set ShortNameLength(value: number) {
    this.view.setInt8(68, value);
  }

  // 0x45: pad3

  // 0x48: pointer
  set ShortName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: pointer
  set FileId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(80, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x58: pointer
  set FileName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(88, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_FULL_DIR_INFO (size: 80)
 */
export interface FILE_FULL_DIR_INFO {
  /** u32 */
  NextEntryOffset: number;
  /** u32 */
  FileIndex: number;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  CreationTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  LastAccessTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  LastWriteTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  ChangeTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  EndOfFile: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  AllocationSize: Uint8Array | Deno.PointerValue;
  /** u32 */
  FileAttributes: number;
  /** u32 */
  FileNameLength: number;
  /** u32 */
  EaSize: number;
  /** array */
  FileName: Deno.PointerValue;
}

export const sizeofFILE_FULL_DIR_INFO = 80;

export function allocFILE_FULL_DIR_INFO(data?: Partial<FILE_FULL_DIR_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_FULL_DIR_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.NextEntryOffset !== undefined) view.setUint32(0, Number(data.NextEntryOffset), true);
  // 0x04: u32
  if (data?.FileIndex !== undefined) view.setUint32(4, Number(data.FileIndex), true);
  // 0x08: pointer
  if (data?.CreationTime !== undefined) view.setBigUint64(8, data.CreationTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CreationTime))), true);
  // 0x10: pointer
  if (data?.LastAccessTime !== undefined) view.setBigUint64(16, data.LastAccessTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LastAccessTime))), true);
  // 0x18: pointer
  if (data?.LastWriteTime !== undefined) view.setBigUint64(24, data.LastWriteTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LastWriteTime))), true);
  // 0x20: pointer
  if (data?.ChangeTime !== undefined) view.setBigUint64(32, data.ChangeTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ChangeTime))), true);
  // 0x28: pointer
  if (data?.EndOfFile !== undefined) view.setBigUint64(40, data.EndOfFile === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.EndOfFile))), true);
  // 0x30: pointer
  if (data?.AllocationSize !== undefined) view.setBigUint64(48, data.AllocationSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.AllocationSize))), true);
  // 0x38: u32
  if (data?.FileAttributes !== undefined) view.setUint32(56, Number(data.FileAttributes), true);
  // 0x3c: u32
  if (data?.FileNameLength !== undefined) view.setUint32(60, Number(data.FileNameLength), true);
  // 0x40: u32
  if (data?.EaSize !== undefined) view.setUint32(64, Number(data.EaSize), true);
  // 0x44: pad4
  // 0x48: pointer
  if (data?.FileName !== undefined) view.setBigUint64(72, data.FileName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.FileName))), true);
  return buf;
}

export class FILE_FULL_DIR_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get NextEntryOffset(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get FileIndex(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get CreationTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get LastAccessTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get LastWriteTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get ChangeTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get EndOfFile(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get AllocationSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: u32
  get FileAttributes(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: u32
  get FileNameLength(): number {
    return this.view.getUint32(60, true);
  }

  // 0x40: u32
  get EaSize(): number {
    return this.view.getUint32(64, true);
  }

  // 0x44: pad4

  // 0x48: pointer
  get FileName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set NextEntryOffset(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set FileIndex(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set CreationTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set LastAccessTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set LastWriteTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set ChangeTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set EndOfFile(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set AllocationSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: u32
  set FileAttributes(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: u32
  set FileNameLength(value: number) {
    this.view.setUint32(60, value, true);
  }

  // 0x40: u32
  set EaSize(value: number) {
    this.view.setUint32(64, value, true);
  }

  // 0x44: pad4

  // 0x48: pointer
  set FileName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_IO_PRIORITY_HINT_INFO (size: 8)
 */
export interface FILE_IO_PRIORITY_HINT_INFO {
  /** Windows.Win32.Storage.FileSystem.PRIORITY_HINT */
  PriorityHint: PRIORITY_HINT;
}

export const sizeofFILE_IO_PRIORITY_HINT_INFO = 8;

export function allocFILE_IO_PRIORITY_HINT_INFO(data?: Partial<FILE_IO_PRIORITY_HINT_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_IO_PRIORITY_HINT_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: i32
  if (data?.PriorityHint !== undefined) view.setInt32(0, Number(data.PriorityHint), true);
  // 0x04: pad4
  return buf;
}

export class FILE_IO_PRIORITY_HINT_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: i32
  get PriorityHint(): number {
    return this.view.getInt32(0, true);
  }

  // 0x04: pad4

  // 0x00: i32
  set PriorityHint(value: number) {
    this.view.setInt32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_ALIGNMENT_INFO (size: 8)
 */
export interface FILE_ALIGNMENT_INFO {
  /** u32 */
  AlignmentRequirement: number;
}

export const sizeofFILE_ALIGNMENT_INFO = 8;

export function allocFILE_ALIGNMENT_INFO(data?: Partial<FILE_ALIGNMENT_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_ALIGNMENT_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.AlignmentRequirement !== undefined) view.setUint32(0, Number(data.AlignmentRequirement), true);
  // 0x04: pad4
  return buf;
}

export class FILE_ALIGNMENT_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get AlignmentRequirement(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x00: u32
  set AlignmentRequirement(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_STORAGE_INFO (size: 32)
 */
export interface FILE_STORAGE_INFO {
  /** u32 */
  LogicalBytesPerSector: number;
  /** u32 */
  PhysicalBytesPerSectorForAtomicity: number;
  /** u32 */
  PhysicalBytesPerSectorForPerformance: number;
  /** u32 */
  FileSystemEffectivePhysicalBytesPerSectorForAtomicity: number;
  /** u32 */
  Flags: number;
  /** u32 */
  ByteOffsetForSectorAlignment: number;
  /** u32 */
  ByteOffsetForPartitionAlignment: number;
}

export const sizeofFILE_STORAGE_INFO = 32;

export function allocFILE_STORAGE_INFO(data?: Partial<FILE_STORAGE_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_STORAGE_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.LogicalBytesPerSector !== undefined) view.setUint32(0, Number(data.LogicalBytesPerSector), true);
  // 0x04: u32
  if (data?.PhysicalBytesPerSectorForAtomicity !== undefined) view.setUint32(4, Number(data.PhysicalBytesPerSectorForAtomicity), true);
  // 0x08: u32
  if (data?.PhysicalBytesPerSectorForPerformance !== undefined) view.setUint32(8, Number(data.PhysicalBytesPerSectorForPerformance), true);
  // 0x0c: u32
  if (data?.FileSystemEffectivePhysicalBytesPerSectorForAtomicity !== undefined) view.setUint32(12, Number(data.FileSystemEffectivePhysicalBytesPerSectorForAtomicity), true);
  // 0x10: u32
  if (data?.Flags !== undefined) view.setUint32(16, Number(data.Flags), true);
  // 0x14: u32
  if (data?.ByteOffsetForSectorAlignment !== undefined) view.setUint32(20, Number(data.ByteOffsetForSectorAlignment), true);
  // 0x18: u32
  if (data?.ByteOffsetForPartitionAlignment !== undefined) view.setUint32(24, Number(data.ByteOffsetForPartitionAlignment), true);
  // 0x1c: pad4
  return buf;
}

export class FILE_STORAGE_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get LogicalBytesPerSector(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get PhysicalBytesPerSectorForAtomicity(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u32
  get PhysicalBytesPerSectorForPerformance(): number {
    return this.view.getUint32(8, true);
  }

  // 0x0c: u32
  get FileSystemEffectivePhysicalBytesPerSectorForAtomicity(): number {
    return this.view.getUint32(12, true);
  }

  // 0x10: u32
  get Flags(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: u32
  get ByteOffsetForSectorAlignment(): number {
    return this.view.getUint32(20, true);
  }

  // 0x18: u32
  get ByteOffsetForPartitionAlignment(): number {
    return this.view.getUint32(24, true);
  }

  // 0x1c: pad4

  // 0x00: u32
  set LogicalBytesPerSector(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set PhysicalBytesPerSectorForAtomicity(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u32
  set PhysicalBytesPerSectorForPerformance(value: number) {
    this.view.setUint32(8, value, true);
  }

  // 0x0c: u32
  set FileSystemEffectivePhysicalBytesPerSectorForAtomicity(value: number) {
    this.view.setUint32(12, value, true);
  }

  // 0x10: u32
  set Flags(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: u32
  set ByteOffsetForSectorAlignment(value: number) {
    this.view.setUint32(20, value, true);
  }

  // 0x18: u32
  set ByteOffsetForPartitionAlignment(value: number) {
    this.view.setUint32(24, value, true);
  }

  // 0x1c: pad4
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_ID_INFO (size: 16)
 */
export interface FILE_ID_INFO {
  /** u64 */
  VolumeSerialNumber: bigint | number;
  /** Windows.Win32.Storage.FileSystem.FILE_ID_128 */
  FileId: Uint8Array | Deno.PointerValue;
}

export const sizeofFILE_ID_INFO = 16;

export function allocFILE_ID_INFO(data?: Partial<FILE_ID_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_ID_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u64
  if (data?.VolumeSerialNumber !== undefined) view.setBigUint64(0, BigInt(data.VolumeSerialNumber), true);
  // 0x08: pointer
  if (data?.FileId !== undefined) view.setBigUint64(8, data.FileId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.FileId))), true);
  return buf;
}

export class FILE_ID_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u64
  get VolumeSerialNumber(): bigint | number {
    return Number(this.view.getBigUint64(0, true));
  }

  // 0x08: pointer
  get FileId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u64
  set VolumeSerialNumber(value: bigint | number) {
    this.view.setBigUint64(0, BigInt(value), true);
  }

  // 0x08: pointer
  set FileId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_ID_EXTD_DIR_INFO (size: 88)
 */
export interface FILE_ID_EXTD_DIR_INFO {
  /** u32 */
  NextEntryOffset: number;
  /** u32 */
  FileIndex: number;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  CreationTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  LastAccessTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  LastWriteTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  ChangeTime: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  EndOfFile: Uint8Array | Deno.PointerValue;
  /** Windows.Win32.Foundation.LARGE_INTEGER */
  AllocationSize: Uint8Array | Deno.PointerValue;
  /** u32 */
  FileAttributes: number;
  /** u32 */
  FileNameLength: number;
  /** u32 */
  EaSize: number;
  /** u32 */
  ReparsePointTag: number;
  /** Windows.Win32.Storage.FileSystem.FILE_ID_128 */
  FileId: Uint8Array | Deno.PointerValue;
  /** array */
  FileName: Deno.PointerValue;
}

export const sizeofFILE_ID_EXTD_DIR_INFO = 88;

export function allocFILE_ID_EXTD_DIR_INFO(data?: Partial<FILE_ID_EXTD_DIR_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_ID_EXTD_DIR_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.NextEntryOffset !== undefined) view.setUint32(0, Number(data.NextEntryOffset), true);
  // 0x04: u32
  if (data?.FileIndex !== undefined) view.setUint32(4, Number(data.FileIndex), true);
  // 0x08: pointer
  if (data?.CreationTime !== undefined) view.setBigUint64(8, data.CreationTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.CreationTime))), true);
  // 0x10: pointer
  if (data?.LastAccessTime !== undefined) view.setBigUint64(16, data.LastAccessTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LastAccessTime))), true);
  // 0x18: pointer
  if (data?.LastWriteTime !== undefined) view.setBigUint64(24, data.LastWriteTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.LastWriteTime))), true);
  // 0x20: pointer
  if (data?.ChangeTime !== undefined) view.setBigUint64(32, data.ChangeTime === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ChangeTime))), true);
  // 0x28: pointer
  if (data?.EndOfFile !== undefined) view.setBigUint64(40, data.EndOfFile === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.EndOfFile))), true);
  // 0x30: pointer
  if (data?.AllocationSize !== undefined) view.setBigUint64(48, data.AllocationSize === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.AllocationSize))), true);
  // 0x38: u32
  if (data?.FileAttributes !== undefined) view.setUint32(56, Number(data.FileAttributes), true);
  // 0x3c: u32
  if (data?.FileNameLength !== undefined) view.setUint32(60, Number(data.FileNameLength), true);
  // 0x40: u32
  if (data?.EaSize !== undefined) view.setUint32(64, Number(data.EaSize), true);
  // 0x44: u32
  if (data?.ReparsePointTag !== undefined) view.setUint32(68, Number(data.ReparsePointTag), true);
  // 0x48: pointer
  if (data?.FileId !== undefined) view.setBigUint64(72, data.FileId === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.FileId))), true);
  // 0x50: pointer
  if (data?.FileName !== undefined) view.setBigUint64(80, data.FileName === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.FileName))), true);
  return buf;
}

export class FILE_ID_EXTD_DIR_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get NextEntryOffset(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get FileIndex(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: pointer
  get CreationTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x10: pointer
  get LastAccessTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(16, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x18: pointer
  get LastWriteTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get ChangeTime(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x28: pointer
  get EndOfFile(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(40, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x30: pointer
  get AllocationSize(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(48, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x38: u32
  get FileAttributes(): number {
    return this.view.getUint32(56, true);
  }

  // 0x3c: u32
  get FileNameLength(): number {
    return this.view.getUint32(60, true);
  }

  // 0x40: u32
  get EaSize(): number {
    return this.view.getUint32(64, true);
  }

  // 0x44: u32
  get ReparsePointTag(): number {
    return this.view.getUint32(68, true);
  }

  // 0x48: pointer
  get FileId(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(72, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x50: pointer
  get FileName(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(80, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set NextEntryOffset(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set FileIndex(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: pointer
  set CreationTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x10: pointer
  set LastAccessTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(16, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x18: pointer
  set LastWriteTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set ChangeTime(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x28: pointer
  set EndOfFile(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(40, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x30: pointer
  set AllocationSize(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(48, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x38: u32
  set FileAttributes(value: number) {
    this.view.setUint32(56, value, true);
  }

  // 0x3c: u32
  set FileNameLength(value: number) {
    this.view.setUint32(60, value, true);
  }

  // 0x40: u32
  set EaSize(value: number) {
    this.view.setUint32(64, value, true);
  }

  // 0x44: u32
  set ReparsePointTag(value: number) {
    this.view.setUint32(68, value, true);
  }

  // 0x48: pointer
  set FileId(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(72, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x50: pointer
  set FileName(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(80, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * _GenericReserved_e__Struct (size: 8)
 */
export interface _GenericReserved_e__Struct {
  /** array */
  Reserved: Deno.PointerValue;
}

export const sizeof_GenericReserved_e__Struct = 8;

export function alloc_GenericReserved_e__Struct(data?: Partial<_GenericReserved_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_GenericReserved_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Reserved !== undefined) view.setBigUint64(0, data.Reserved === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Reserved))), true);
  return buf;
}

export class _GenericReserved_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Reserved(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set Reserved(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * _Server_e__Struct (size: 8)
 */
export interface _Server_e__Struct {
  /** u32 */
  Capabilities: number;
}

export const sizeof_Server_e__Struct = 8;

export function alloc_Server_e__Struct(data?: Partial<_Server_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_Server_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Capabilities !== undefined) view.setUint32(0, Number(data.Capabilities), true);
  // 0x04: pad4
  return buf;
}

export class _Server_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Capabilities(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: pad4

  // 0x00: u32
  set Capabilities(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: pad4
}

/**
 * _Share_e__Struct (size: 8)
 */
export interface _Share_e__Struct {
  /** u32 */
  Capabilities: number;
  /** u32 */
  CachingFlags: number;
}

export const sizeof_Share_e__Struct = 8;

export function alloc_Share_e__Struct(data?: Partial<_Share_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_Share_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.Capabilities !== undefined) view.setUint32(0, Number(data.Capabilities), true);
  // 0x04: u32
  if (data?.CachingFlags !== undefined) view.setUint32(4, Number(data.CachingFlags), true);
  return buf;
}

export class _Share_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get Capabilities(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: u32
  get CachingFlags(): number {
    return this.view.getUint32(4, true);
  }

  // 0x00: u32
  set Capabilities(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: u32
  set CachingFlags(value: number) {
    this.view.setUint32(4, value, true);
  }
}

/**
 * _Smb2_e__Struct (size: 16)
 */
export interface _Smb2_e__Struct {
  /** _Server_e__Struct */
  Server: Uint8Array | Deno.PointerValue;
  /** _Share_e__Struct */
  Share: Uint8Array | Deno.PointerValue;
}

export const sizeof_Smb2_e__Struct = 16;

export function alloc_Smb2_e__Struct(data?: Partial<_Smb2_e__Struct>): Uint8Array {
  const buf = new Uint8Array(sizeof_Smb2_e__Struct);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Server !== undefined) view.setBigUint64(0, data.Server === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Server))), true);
  // 0x08: pointer
  if (data?.Share !== undefined) view.setBigUint64(8, data.Share === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Share))), true);
  return buf;
}

export class _Smb2_e__StructView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Server(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get Share(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set Server(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set Share(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * _ProtocolSpecific_e__Union (size: 16)
 */
export interface _ProtocolSpecific_e__Union {
  /** _Smb2_e__Struct */
  Smb2: Uint8Array | Deno.PointerValue;
  /** array */
  Reserved: Deno.PointerValue;
}

export const sizeof_ProtocolSpecific_e__Union = 16;

export function alloc_ProtocolSpecific_e__Union(data?: Partial<_ProtocolSpecific_e__Union>): Uint8Array {
  const buf = new Uint8Array(sizeof_ProtocolSpecific_e__Union);
  const view = new DataView(buf.buffer);
  // 0x00: pointer
  if (data?.Smb2 !== undefined) view.setBigUint64(0, data.Smb2 === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Smb2))), true);
  // 0x08: pointer
  if (data?.Reserved !== undefined) view.setBigUint64(8, data.Reserved === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Reserved))), true);
  return buf;
}

export class _ProtocolSpecific_e__UnionView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: pointer
  get Smb2(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(0, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x08: pointer
  get Reserved(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: pointer
  set Smb2(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(0, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x08: pointer
  set Reserved(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_REMOTE_PROTOCOL_INFO (size: 40)
 */
export interface FILE_REMOTE_PROTOCOL_INFO {
  /** u16 */
  StructureVersion: number;
  /** u16 */
  StructureSize: number;
  /** u32 */
  Protocol: number;
  /** u16 */
  ProtocolMajorVersion: number;
  /** u16 */
  ProtocolMinorVersion: number;
  /** u16 */
  ProtocolRevision: number;
  /** u16 */
  Reserved: number;
  /** u32 */
  Flags: number;
  /** _GenericReserved_e__Struct */
  GenericReserved: Uint8Array | Deno.PointerValue;
  /** _ProtocolSpecific_e__Union */
  ProtocolSpecific: Uint8Array | Deno.PointerValue;
}

export const sizeofFILE_REMOTE_PROTOCOL_INFO = 40;

export function allocFILE_REMOTE_PROTOCOL_INFO(data?: Partial<FILE_REMOTE_PROTOCOL_INFO>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_REMOTE_PROTOCOL_INFO);
  const view = new DataView(buf.buffer);
  // 0x00: u16
  if (data?.StructureVersion !== undefined) view.setUint16(0, Number(data.StructureVersion), true);
  // 0x02: u16
  if (data?.StructureSize !== undefined) view.setUint16(2, Number(data.StructureSize), true);
  // 0x04: u32
  if (data?.Protocol !== undefined) view.setUint32(4, Number(data.Protocol), true);
  // 0x08: u16
  if (data?.ProtocolMajorVersion !== undefined) view.setUint16(8, Number(data.ProtocolMajorVersion), true);
  // 0x0a: u16
  if (data?.ProtocolMinorVersion !== undefined) view.setUint16(10, Number(data.ProtocolMinorVersion), true);
  // 0x0c: u16
  if (data?.ProtocolRevision !== undefined) view.setUint16(12, Number(data.ProtocolRevision), true);
  // 0x0e: u16
  if (data?.Reserved !== undefined) view.setUint16(14, Number(data.Reserved), true);
  // 0x10: u32
  if (data?.Flags !== undefined) view.setUint32(16, Number(data.Flags), true);
  // 0x14: pad4
  // 0x18: pointer
  if (data?.GenericReserved !== undefined) view.setBigUint64(24, data.GenericReserved === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.GenericReserved))), true);
  // 0x20: pointer
  if (data?.ProtocolSpecific !== undefined) view.setBigUint64(32, data.ProtocolSpecific === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.ProtocolSpecific))), true);
  return buf;
}

export class FILE_REMOTE_PROTOCOL_INFOView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u16
  get StructureVersion(): number {
    return this.view.getUint16(0, true);
  }

  // 0x02: u16
  get StructureSize(): number {
    return this.view.getUint16(2, true);
  }

  // 0x04: u32
  get Protocol(): number {
    return this.view.getUint32(4, true);
  }

  // 0x08: u16
  get ProtocolMajorVersion(): number {
    return this.view.getUint16(8, true);
  }

  // 0x0a: u16
  get ProtocolMinorVersion(): number {
    return this.view.getUint16(10, true);
  }

  // 0x0c: u16
  get ProtocolRevision(): number {
    return this.view.getUint16(12, true);
  }

  // 0x0e: u16
  get Reserved(): number {
    return this.view.getUint16(14, true);
  }

  // 0x10: u32
  get Flags(): number {
    return this.view.getUint32(16, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  get GenericReserved(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(24, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x20: pointer
  get ProtocolSpecific(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(32, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u16
  set StructureVersion(value: number) {
    this.view.setUint16(0, value, true);
  }

  // 0x02: u16
  set StructureSize(value: number) {
    this.view.setUint16(2, value, true);
  }

  // 0x04: u32
  set Protocol(value: number) {
    this.view.setUint32(4, value, true);
  }

  // 0x08: u16
  set ProtocolMajorVersion(value: number) {
    this.view.setUint16(8, value, true);
  }

  // 0x0a: u16
  set ProtocolMinorVersion(value: number) {
    this.view.setUint16(10, value, true);
  }

  // 0x0c: u16
  set ProtocolRevision(value: number) {
    this.view.setUint16(12, value, true);
  }

  // 0x0e: u16
  set Reserved(value: number) {
    this.view.setUint16(14, value, true);
  }

  // 0x10: u32
  set Flags(value: number) {
    this.view.setUint32(16, value, true);
  }

  // 0x14: pad4

  // 0x18: pointer
  set GenericReserved(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(24, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }

  // 0x20: pointer
  set ProtocolSpecific(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(32, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

/**
 * Windows.Win32.Storage.FileSystem.FILE_ID_DESCRIPTOR (size: 16)
 */
export interface FILE_ID_DESCRIPTOR {
  /** u32 */
  dwSize: number;
  /** Windows.Win32.Storage.FileSystem.FILE_ID_TYPE */
  Type: FILE_ID_TYPE;
  /** _Anonymous_e__Union */
  Anonymous: Uint8Array | Deno.PointerValue;
}

export const sizeofFILE_ID_DESCRIPTOR = 16;

export function allocFILE_ID_DESCRIPTOR(data?: Partial<FILE_ID_DESCRIPTOR>): Uint8Array {
  const buf = new Uint8Array(sizeofFILE_ID_DESCRIPTOR);
  const view = new DataView(buf.buffer);
  // 0x00: u32
  if (data?.dwSize !== undefined) view.setUint32(0, Number(data.dwSize), true);
  // 0x04: i32
  if (data?.Type !== undefined) view.setInt32(4, Number(data.Type), true);
  // 0x08: pointer
  if (data?.Anonymous !== undefined) view.setBigUint64(8, data.Anonymous === null ? 0n : BigInt(Deno.UnsafePointer.value(util.toPointer(data.Anonymous))), true);
  return buf;
}

export class FILE_ID_DESCRIPTORView {
  private readonly view: DataView;
  constructor(private readonly buf: Uint8Array) {
    this.view = new DataView(buf.buffer);
  }

  get buffer(): Uint8Array {
    return this.buf;
  }

  // 0x00: u32
  get dwSize(): number {
    return this.view.getUint32(0, true);
  }

  // 0x04: i32
  get Type(): number {
    return this.view.getInt32(4, true);
  }

  // 0x08: pointer
  get Anonymous(): Uint8Array | Deno.PointerValue {
    const ptr = this.view.getBigUint64(8, true);
    return Deno.UnsafePointer.create(ptr);
  }

  // 0x00: u32
  set dwSize(value: number) {
    this.view.setUint32(0, value, true);
  }

  // 0x04: i32
  set Type(value: number) {
    this.view.setInt32(4, value, true);
  }

  // 0x08: pointer
  set Anonymous(value: Uint8Array | Deno.PointerValue) {
    this.view.setBigUint64(8, BigInt(Deno.UnsafePointer.value(util.toPointer(value))), true);
  }
}

export type PSTR = Deno.PointerValue | Uint8Array;

export type NTSTATUS = number;

// Native Libraries

try {
  var libKERNEL32_dll = Deno.dlopen("KERNEL32.dll", {
    SearchPathW: {
      parameters: ["buffer", "buffer", "buffer", "u32", "buffer", "pointer"],
      result: "u32",
    },
    SearchPathA: {
      parameters: ["buffer", "buffer", "buffer", "u32", "buffer", "pointer"],
      result: "u32",
    },
    CompareFileTime: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    CreateDirectoryA: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    CreateDirectoryW: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    CreateFileA: {
      parameters: ["buffer", "u32", "u32", "pointer", "u32", "u32", "pointer"],
      result: "pointer",
    },
    CreateFileAAsync: {
      name: "CreateFileA",
      nonblocking: true,
      parameters: ["buffer", "u32", "u32", "pointer", "u32", "u32", "pointer"],
      result: "pointer",
    },
    CreateFileW: {
      parameters: ["buffer", "u32", "u32", "pointer", "u32", "u32", "pointer"],
      result: "pointer",
    },
    CreateFileWAsync: {
      name: "CreateFileW",
      nonblocking: true,
      parameters: ["buffer", "u32", "u32", "pointer", "u32", "u32", "pointer"],
      result: "pointer",
    },
    DefineDosDeviceW: {
      parameters: ["u32", "buffer", "buffer"],
      result: "i32",
    },
    DeleteFileA: {
      parameters: ["buffer"],
      result: "i32",
    },
    DeleteFileW: {
      parameters: ["buffer"],
      result: "i32",
    },
    DeleteVolumeMountPointW: {
      parameters: ["buffer"],
      result: "i32",
    },
    FileTimeToLocalFileTime: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    FindClose: {
      parameters: ["pointer"],
      result: "i32",
    },
    FindCloseChangeNotification: {
      parameters: ["pointer"],
      result: "i32",
    },
    FindFirstChangeNotificationA: {
      parameters: ["buffer", "i32", "u32"],
      result: "pointer",
    },
    FindFirstChangeNotificationW: {
      parameters: ["buffer", "i32", "u32"],
      result: "pointer",
    },
    FindFirstFileA: {
      parameters: ["buffer", "pointer"],
      result: "pointer",
    },
    FindFirstFileW: {
      parameters: ["buffer", "pointer"],
      result: "pointer",
    },
    FindFirstFileExA: {
      parameters: ["buffer", "i32", "pointer", "i32", "pointer", "u32"],
      result: "pointer",
    },
    FindFirstFileExW: {
      parameters: ["buffer", "i32", "pointer", "i32", "pointer", "u32"],
      result: "pointer",
    },
    FindFirstVolumeW: {
      parameters: ["buffer", "u32"],
      result: "pointer",
    },
    FindNextChangeNotification: {
      parameters: ["pointer"],
      result: "i32",
    },
    FindNextFileA: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    FindNextFileW: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    FindNextVolumeW: {
      parameters: ["pointer", "buffer", "u32"],
      result: "i32",
    },
    FindVolumeClose: {
      parameters: ["pointer"],
      result: "i32",
    },
    FlushFileBuffers: {
      parameters: ["pointer"],
      result: "i32",
    },
    GetDiskFreeSpaceA: {
      parameters: ["buffer", "pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    GetDiskFreeSpaceW: {
      parameters: ["buffer", "pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    GetDiskFreeSpaceExA: {
      parameters: ["buffer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    GetDiskFreeSpaceExW: {
      parameters: ["buffer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    GetDiskSpaceInformationA: {
      parameters: ["buffer", "pointer"],
      result: "pointer",
    },
    GetDiskSpaceInformationW: {
      parameters: ["buffer", "pointer"],
      result: "pointer",
    },
    GetDriveTypeA: {
      parameters: ["buffer"],
      result: "u32",
    },
    GetDriveTypeW: {
      parameters: ["buffer"],
      result: "u32",
    },
    GetFileAttributesA: {
      parameters: ["buffer"],
      result: "u32",
    },
    GetFileAttributesW: {
      parameters: ["buffer"],
      result: "u32",
    },
    GetFileAttributesExA: {
      parameters: ["buffer", "i32", "pointer"],
      result: "i32",
    },
    GetFileAttributesExW: {
      parameters: ["buffer", "i32", "pointer"],
      result: "i32",
    },
    GetFileInformationByHandle: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    GetFileSize: {
      parameters: ["pointer", "pointer"],
      result: "u32",
    },
    GetFileSizeEx: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    GetFileType: {
      parameters: ["pointer"],
      result: "u32",
    },
    GetFinalPathNameByHandleA: {
      parameters: ["pointer", "buffer", "u32", "u32"],
      result: "u32",
    },
    GetFinalPathNameByHandleW: {
      parameters: ["pointer", "buffer", "u32", "u32"],
      result: "u32",
    },
    GetFileTime: {
      parameters: ["pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    GetFullPathNameW: {
      parameters: ["buffer", "u32", "buffer", "pointer"],
      result: "u32",
    },
    GetFullPathNameA: {
      parameters: ["buffer", "u32", "buffer", "pointer"],
      result: "u32",
    },
    GetLogicalDrives: {
      parameters: [],
      result: "u32",
    },
    GetLogicalDriveStringsW: {
      parameters: ["u32", "buffer"],
      result: "u32",
    },
    GetLongPathNameA: {
      parameters: ["buffer", "buffer", "u32"],
      result: "u32",
    },
    GetLongPathNameW: {
      parameters: ["buffer", "buffer", "u32"],
      result: "u32",
    },
    AreShortNamesEnabled: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    GetShortPathNameW: {
      parameters: ["buffer", "buffer", "u32"],
      result: "u32",
    },
    GetTempFileNameW: {
      parameters: ["buffer", "buffer", "u32", "buffer"],
      result: "u32",
    },
    GetVolumeInformationByHandleW: {
      parameters: ["pointer", "buffer", "u32", "pointer", "pointer", "pointer", "buffer", "u32"],
      result: "i32",
    },
    GetVolumeInformationW: {
      parameters: ["buffer", "buffer", "u32", "pointer", "pointer", "pointer", "buffer", "u32"],
      result: "i32",
    },
    GetVolumePathNameW: {
      parameters: ["buffer", "buffer", "u32"],
      result: "i32",
    },
    LocalFileTimeToFileTime: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    LockFile: {
      parameters: ["pointer", "u32", "u32", "u32", "u32"],
      result: "i32",
    },
    LockFileEx: {
      parameters: ["pointer", "u32", "u32", "u32", "u32", "pointer"],
      result: "i32",
    },
    QueryDosDeviceW: {
      parameters: ["buffer", "buffer", "u32"],
      result: "u32",
    },
    ReadFile: {
      parameters: ["pointer", "pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    ReadFileEx: {
      parameters: ["pointer", "pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    ReadFileScatter: {
      parameters: ["pointer", "pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    RemoveDirectoryA: {
      parameters: ["buffer"],
      result: "i32",
    },
    RemoveDirectoryW: {
      parameters: ["buffer"],
      result: "i32",
    },
    SetEndOfFile: {
      parameters: ["pointer"],
      result: "i32",
    },
    SetFileAttributesA: {
      parameters: ["buffer", "u32"],
      result: "i32",
    },
    SetFileAttributesW: {
      parameters: ["buffer", "u32"],
      result: "i32",
    },
    SetFileInformationByHandle: {
      parameters: ["pointer", "i32", "pointer", "u32"],
      result: "i32",
    },
    SetFilePointer: {
      parameters: ["pointer", "i32", "pointer", "u32"],
      result: "u32",
    },
    SetFilePointerEx: {
      parameters: ["pointer", "pointer", "pointer", "u32"],
      result: "i32",
    },
    SetFileTime: {
      parameters: ["pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    SetFileValidData: {
      parameters: ["pointer", "i64"],
      result: "i32",
    },
    UnlockFile: {
      parameters: ["pointer", "u32", "u32", "u32", "u32"],
      result: "i32",
    },
    UnlockFileEx: {
      parameters: ["pointer", "u32", "u32", "u32", "pointer"],
      result: "i32",
    },
    WriteFile: {
      parameters: ["pointer", "pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    WriteFileEx: {
      parameters: ["pointer", "pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    WriteFileGather: {
      parameters: ["pointer", "pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    GetTempPathW: {
      parameters: ["u32", "buffer"],
      result: "u32",
    },
    GetVolumeNameForVolumeMountPointW: {
      parameters: ["buffer", "buffer", "u32"],
      result: "i32",
    },
    GetVolumePathNamesForVolumeNameW: {
      parameters: ["buffer", "buffer", "u32", "pointer"],
      result: "i32",
    },
    CreateFile2: {
      parameters: ["buffer", "u32", "u32", "u32", "pointer"],
      result: "pointer",
    },
    SetFileIoOverlappedRange: {
      parameters: ["pointer", "pointer", "u32"],
      result: "i32",
    },
    GetCompressedFileSizeA: {
      parameters: ["buffer", "pointer"],
      result: "u32",
    },
    GetCompressedFileSizeW: {
      parameters: ["buffer", "pointer"],
      result: "u32",
    },
    FindFirstStreamW: {
      parameters: ["buffer", "i32", "pointer", "u32"],
      result: "pointer",
    },
    FindNextStreamW: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    AreFileApisANSI: {
      parameters: [],
      result: "i32",
    },
    GetTempPathA: {
      parameters: ["u32", "buffer"],
      result: "u32",
    },
    FindFirstFileNameW: {
      parameters: ["buffer", "u32", "pointer", "buffer"],
      result: "pointer",
    },
    FindNextFileNameW: {
      parameters: ["pointer", "pointer", "buffer"],
      result: "i32",
    },
    GetVolumeInformationA: {
      parameters: ["buffer", "buffer", "u32", "pointer", "pointer", "pointer", "buffer", "u32"],
      result: "i32",
    },
    GetTempFileNameA: {
      parameters: ["buffer", "buffer", "u32", "buffer"],
      result: "u32",
    },
    SetFileApisToOEM: {
      parameters: [],
      result: "void",
    },
    SetFileApisToANSI: {
      parameters: [],
      result: "void",
    },
    GetTempPath2W: {
      parameters: ["u32", "buffer"],
      result: "u32",
    },
    GetTempPath2A: {
      parameters: ["u32", "buffer"],
      result: "u32",
    },
    VerLanguageNameA: {
      parameters: ["u32", "buffer", "u32"],
      result: "u32",
    },
    VerLanguageNameW: {
      parameters: ["u32", "buffer", "u32"],
      result: "u32",
    },
    LZStart: {
      parameters: [],
      result: "i32",
    },
    LZDone: {
      parameters: [],
      result: "void",
    },
    CopyLZFile: {
      parameters: ["i32", "i32"],
      result: "i32",
    },
    LZCopy: {
      parameters: ["i32", "i32"],
      result: "i32",
    },
    LZInit: {
      parameters: ["i32"],
      result: "i32",
    },
    GetExpandedNameA: {
      parameters: ["buffer", "buffer"],
      result: "i32",
    },
    GetExpandedNameW: {
      parameters: ["buffer", "buffer"],
      result: "i32",
    },
    LZOpenFileA: {
      parameters: ["buffer", "pointer", "u16"],
      result: "i32",
    },
    LZOpenFileW: {
      parameters: ["buffer", "pointer", "u16"],
      result: "i32",
    },
    LZSeek: {
      parameters: ["i32", "i32", "i32"],
      result: "i32",
    },
    LZRead: {
      parameters: ["i32", "buffer", "i32"],
      result: "i32",
    },
    LZClose: {
      parameters: ["i32"],
      result: "void",
    },
    Wow64EnableWow64FsRedirection: {
      parameters: ["pointer"],
      result: "pointer",
    },
    Wow64DisableWow64FsRedirection: {
      parameters: ["pointer"],
      result: "i32",
    },
    Wow64RevertWow64FsRedirection: {
      parameters: ["pointer"],
      result: "i32",
    },
    GetBinaryTypeA: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    GetBinaryTypeW: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    GetShortPathNameA: {
      parameters: ["buffer", "buffer", "u32"],
      result: "u32",
    },
    GetLongPathNameTransactedA: {
      parameters: ["buffer", "buffer", "u32", "pointer"],
      result: "u32",
    },
    GetLongPathNameTransactedW: {
      parameters: ["buffer", "buffer", "u32", "pointer"],
      result: "u32",
    },
    SetFileCompletionNotificationModes: {
      parameters: ["pointer", "u8"],
      result: "i32",
    },
    SetFileShortNameA: {
      parameters: ["pointer", "buffer"],
      result: "i32",
    },
    SetFileShortNameW: {
      parameters: ["pointer", "buffer"],
      result: "i32",
    },
    SetTapePosition: {
      parameters: ["pointer", "i32", "u32", "u32", "u32", "i32"],
      result: "u32",
    },
    GetTapePosition: {
      parameters: ["pointer", "i32", "pointer", "pointer", "pointer"],
      result: "u32",
    },
    PrepareTape: {
      parameters: ["pointer", "i32", "i32"],
      result: "u32",
    },
    EraseTape: {
      parameters: ["pointer", "i32", "i32"],
      result: "u32",
    },
    CreateTapePartition: {
      parameters: ["pointer", "i32", "u32", "u32"],
      result: "u32",
    },
    WriteTapemark: {
      parameters: ["pointer", "i32", "u32", "i32"],
      result: "u32",
    },
    GetTapeStatus: {
      parameters: ["pointer"],
      result: "u32",
    },
    GetTapeParameters: {
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "u32",
    },
    SetTapeParameters: {
      parameters: ["pointer", "u32", "pointer"],
      result: "u32",
    },
    OpenFile: {
      parameters: ["buffer", "pointer", "u32"],
      result: "i32",
    },
    BackupRead: {
      parameters: ["pointer", "pointer", "u32", "pointer", "i32", "i32", "pointer"],
      result: "i32",
    },
    BackupSeek: {
      parameters: ["pointer", "u32", "u32", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    BackupWrite: {
      parameters: ["pointer", "pointer", "u32", "pointer", "i32", "i32", "pointer"],
      result: "i32",
    },
    GetLogicalDriveStringsA: {
      parameters: ["u32", "buffer"],
      result: "u32",
    },
    SetSearchPathMode: {
      parameters: ["u32"],
      result: "i32",
    },
    CreateDirectoryExA: {
      parameters: ["buffer", "buffer", "pointer"],
      result: "i32",
    },
    CreateDirectoryExW: {
      parameters: ["buffer", "buffer", "pointer"],
      result: "i32",
    },
    CreateDirectoryTransactedA: {
      parameters: ["buffer", "buffer", "pointer", "pointer"],
      result: "i32",
    },
    CreateDirectoryTransactedW: {
      parameters: ["buffer", "buffer", "pointer", "pointer"],
      result: "i32",
    },
    RemoveDirectoryTransactedA: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    RemoveDirectoryTransactedW: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    GetFullPathNameTransactedA: {
      parameters: ["buffer", "u32", "buffer", "pointer", "pointer"],
      result: "u32",
    },
    GetFullPathNameTransactedW: {
      parameters: ["buffer", "u32", "buffer", "pointer", "pointer"],
      result: "u32",
    },
    DefineDosDeviceA: {
      parameters: ["u32", "buffer", "buffer"],
      result: "i32",
    },
    QueryDosDeviceA: {
      parameters: ["buffer", "buffer", "u32"],
      result: "u32",
    },
    CreateFileTransactedA: {
      parameters: ["buffer", "u32", "u32", "pointer", "u32", "u32", "pointer", "pointer", "pointer", "pointer"],
      result: "pointer",
    },
    CreateFileTransactedW: {
      parameters: ["buffer", "u32", "u32", "pointer", "u32", "u32", "pointer", "pointer", "pointer", "pointer"],
      result: "pointer",
    },
    ReOpenFile: {
      parameters: ["pointer", "u32", "u32", "u32"],
      result: "pointer",
    },
    SetFileAttributesTransactedA: {
      parameters: ["buffer", "u32", "pointer"],
      result: "i32",
    },
    SetFileAttributesTransactedW: {
      parameters: ["buffer", "u32", "pointer"],
      result: "i32",
    },
    GetFileAttributesTransactedA: {
      parameters: ["buffer", "i32", "pointer", "pointer"],
      result: "i32",
    },
    GetFileAttributesTransactedW: {
      parameters: ["buffer", "i32", "pointer", "pointer"],
      result: "i32",
    },
    GetCompressedFileSizeTransactedA: {
      parameters: ["buffer", "pointer", "pointer"],
      result: "u32",
    },
    GetCompressedFileSizeTransactedW: {
      parameters: ["buffer", "pointer", "pointer"],
      result: "u32",
    },
    DeleteFileTransactedA: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    DeleteFileTransactedW: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    CheckNameLegalDOS8Dot3A: {
      parameters: ["buffer", "buffer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    CheckNameLegalDOS8Dot3W: {
      parameters: ["buffer", "buffer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    FindFirstFileTransactedA: {
      parameters: ["buffer", "i32", "pointer", "i32", "pointer", "u32", "pointer"],
      result: "pointer",
    },
    FindFirstFileTransactedW: {
      parameters: ["buffer", "i32", "pointer", "i32", "pointer", "u32", "pointer"],
      result: "pointer",
    },
    CopyFileA: {
      parameters: ["buffer", "buffer", "i32"],
      result: "i32",
    },
    CopyFileW: {
      parameters: ["buffer", "buffer", "i32"],
      result: "i32",
    },
    CopyFileExA: {
      parameters: ["buffer", "buffer", "pointer", "pointer", "pointer", "u32"],
      result: "i32",
    },
    CopyFileExW: {
      parameters: ["buffer", "buffer", "pointer", "pointer", "pointer", "u32"],
      result: "i32",
    },
    CopyFileTransactedA: {
      parameters: ["buffer", "buffer", "pointer", "pointer", "pointer", "u32", "pointer"],
      result: "i32",
    },
    CopyFileTransactedW: {
      parameters: ["buffer", "buffer", "pointer", "pointer", "pointer", "u32", "pointer"],
      result: "i32",
    },
    CopyFile2: {
      parameters: ["buffer", "buffer", "pointer"],
      result: "pointer",
    },
    MoveFileA: {
      parameters: ["buffer", "buffer"],
      result: "i32",
    },
    MoveFileW: {
      parameters: ["buffer", "buffer"],
      result: "i32",
    },
    MoveFileExA: {
      parameters: ["buffer", "buffer", "u32"],
      result: "i32",
    },
    MoveFileExW: {
      parameters: ["buffer", "buffer", "u32"],
      result: "i32",
    },
    MoveFileWithProgressA: {
      parameters: ["buffer", "buffer", "pointer", "pointer", "u32"],
      result: "i32",
    },
    MoveFileWithProgressW: {
      parameters: ["buffer", "buffer", "pointer", "pointer", "u32"],
      result: "i32",
    },
    MoveFileTransactedA: {
      parameters: ["buffer", "buffer", "pointer", "pointer", "u32", "pointer"],
      result: "i32",
    },
    MoveFileTransactedW: {
      parameters: ["buffer", "buffer", "pointer", "pointer", "u32", "pointer"],
      result: "i32",
    },
    ReplaceFileA: {
      parameters: ["buffer", "buffer", "buffer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    ReplaceFileW: {
      parameters: ["buffer", "buffer", "buffer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    CreateHardLinkA: {
      parameters: ["buffer", "buffer", "pointer"],
      result: "i32",
    },
    CreateHardLinkW: {
      parameters: ["buffer", "buffer", "pointer"],
      result: "i32",
    },
    CreateHardLinkTransactedA: {
      parameters: ["buffer", "buffer", "pointer", "pointer"],
      result: "i32",
    },
    CreateHardLinkTransactedW: {
      parameters: ["buffer", "buffer", "pointer", "pointer"],
      result: "i32",
    },
    FindFirstStreamTransactedW: {
      parameters: ["buffer", "i32", "pointer", "u32", "pointer"],
      result: "pointer",
    },
    FindFirstFileNameTransactedW: {
      parameters: ["buffer", "u32", "pointer", "buffer", "pointer"],
      result: "pointer",
    },
    SetVolumeLabelA: {
      parameters: ["buffer", "buffer"],
      result: "i32",
    },
    SetVolumeLabelW: {
      parameters: ["buffer", "buffer"],
      result: "i32",
    },
    SetFileBandwidthReservation: {
      parameters: ["pointer", "u32", "u32", "i32", "pointer", "pointer"],
      result: "i32",
    },
    GetFileBandwidthReservation: {
      parameters: ["pointer", "pointer", "pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    ReadDirectoryChangesW: {
      parameters: ["pointer", "pointer", "u32", "i32", "u32", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    ReadDirectoryChangesExW: {
      parameters: ["pointer", "pointer", "u32", "i32", "u32", "pointer", "pointer", "pointer", "i32"],
      result: "i32",
    },
    FindFirstVolumeA: {
      parameters: ["buffer", "u32"],
      result: "pointer",
    },
    FindNextVolumeA: {
      parameters: ["pointer", "buffer", "u32"],
      result: "i32",
    },
    FindFirstVolumeMountPointA: {
      parameters: ["buffer", "buffer", "u32"],
      result: "pointer",
    },
    FindFirstVolumeMountPointW: {
      parameters: ["buffer", "buffer", "u32"],
      result: "pointer",
    },
    FindNextVolumeMountPointA: {
      parameters: ["pointer", "buffer", "u32"],
      result: "i32",
    },
    FindNextVolumeMountPointW: {
      parameters: ["pointer", "buffer", "u32"],
      result: "i32",
    },
    FindVolumeMountPointClose: {
      parameters: ["pointer"],
      result: "i32",
    },
    SetVolumeMountPointA: {
      parameters: ["buffer", "buffer"],
      result: "i32",
    },
    SetVolumeMountPointW: {
      parameters: ["buffer", "buffer"],
      result: "i32",
    },
    DeleteVolumeMountPointA: {
      parameters: ["buffer"],
      result: "i32",
    },
    GetVolumeNameForVolumeMountPointA: {
      parameters: ["buffer", "buffer", "u32"],
      result: "i32",
    },
    GetVolumePathNameA: {
      parameters: ["buffer", "buffer", "u32"],
      result: "i32",
    },
    GetVolumePathNamesForVolumeNameA: {
      parameters: ["buffer", "buffer", "u32", "pointer"],
      result: "i32",
    },
    GetFileInformationByHandleEx: {
      parameters: ["pointer", "i32", "pointer", "u32"],
      result: "i32",
    },
    OpenFileById: {
      parameters: ["pointer", "pointer", "u32", "u32", "pointer", "u32"],
      result: "pointer",
    },
    CreateSymbolicLinkA: {
      parameters: ["buffer", "buffer", "u32"],
      result: "pointer",
    },
    CreateSymbolicLinkW: {
      parameters: ["buffer", "buffer", "u32"],
      result: "pointer",
    },
    CreateSymbolicLinkTransactedA: {
      parameters: ["buffer", "buffer", "u32", "pointer"],
      result: "pointer",
    },
    CreateSymbolicLinkTransactedW: {
      parameters: ["buffer", "buffer", "u32", "pointer"],
      result: "pointer",
    },
  }).symbols;
} catch(e) { /* ignore */ }

try {
  var libapi_ms_win_core_file_fromapp_l1_1_0_dll = Deno.dlopen("api-ms-win-core-file-fromapp-l1-1-0.dll", {
    CopyFileFromAppW: {
      parameters: ["buffer", "buffer", "i32"],
      result: "i32",
    },
    CreateDirectoryFromAppW: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    CreateFileFromAppW: {
      parameters: ["buffer", "u32", "u32", "pointer", "u32", "u32", "pointer"],
      result: "pointer",
    },
    CreateFile2FromAppW: {
      parameters: ["buffer", "u32", "u32", "u32", "pointer"],
      result: "pointer",
    },
    DeleteFileFromAppW: {
      parameters: ["buffer"],
      result: "i32",
    },
    FindFirstFileExFromAppW: {
      parameters: ["buffer", "i32", "pointer", "i32", "pointer", "u32"],
      result: "pointer",
    },
    GetFileAttributesExFromAppW: {
      parameters: ["buffer", "i32", "pointer"],
      result: "i32",
    },
    MoveFileFromAppW: {
      parameters: ["buffer", "buffer"],
      result: "i32",
    },
    RemoveDirectoryFromAppW: {
      parameters: ["buffer"],
      result: "i32",
    },
    ReplaceFileFromAppW: {
      parameters: ["buffer", "buffer", "buffer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    SetFileAttributesFromAppW: {
      parameters: ["buffer", "u32"],
      result: "i32",
    },
  }).symbols;
} catch(e) { /* ignore */ }

try {
  var libVERSION_dll = Deno.dlopen("VERSION.dll", {
    VerFindFileA: {
      parameters: ["u32", "buffer", "buffer", "buffer", "buffer", "pointer", "buffer", "pointer"],
      result: "u32",
    },
    VerFindFileW: {
      parameters: ["u32", "buffer", "buffer", "buffer", "buffer", "pointer", "buffer", "pointer"],
      result: "u32",
    },
    VerInstallFileA: {
      parameters: ["u32", "buffer", "buffer", "buffer", "buffer", "buffer", "buffer", "pointer"],
      result: "u32",
    },
    VerInstallFileW: {
      parameters: ["u32", "buffer", "buffer", "buffer", "buffer", "buffer", "buffer", "pointer"],
      result: "u32",
    },
    GetFileVersionInfoSizeA: {
      parameters: ["buffer", "pointer"],
      result: "u32",
    },
    GetFileVersionInfoSizeW: {
      parameters: ["buffer", "pointer"],
      result: "u32",
    },
    GetFileVersionInfoA: {
      parameters: ["buffer", "u32", "u32", "pointer"],
      result: "i32",
    },
    GetFileVersionInfoW: {
      parameters: ["buffer", "u32", "u32", "pointer"],
      result: "i32",
    },
    GetFileVersionInfoSizeExA: {
      parameters: ["u32", "buffer", "pointer"],
      result: "u32",
    },
    GetFileVersionInfoSizeExW: {
      parameters: ["u32", "buffer", "pointer"],
      result: "u32",
    },
    GetFileVersionInfoExA: {
      parameters: ["u32", "buffer", "u32", "u32", "pointer"],
      result: "i32",
    },
    GetFileVersionInfoExW: {
      parameters: ["u32", "buffer", "u32", "u32", "pointer"],
      result: "i32",
    },
    VerQueryValueA: {
      parameters: ["pointer", "buffer", "pointer", "pointer"],
      result: "i32",
    },
    VerQueryValueW: {
      parameters: ["pointer", "buffer", "pointer", "pointer"],
      result: "i32",
    },
  }).symbols;
} catch(e) { /* ignore */ }

try {
  var libclfsw32_dll = Deno.dlopen("clfsw32.dll", {
    LsnEqual: {
      parameters: ["pointer", "pointer"],
      result: "pointer",
    },
    LsnLess: {
      parameters: ["pointer", "pointer"],
      result: "pointer",
    },
    LsnGreater: {
      parameters: ["pointer", "pointer"],
      result: "pointer",
    },
    LsnNull: {
      parameters: ["pointer"],
      result: "pointer",
    },
    LsnContainer: {
      parameters: ["pointer"],
      result: "u32",
    },
    LsnCreate: {
      parameters: ["u32", "u32", "u32"],
      result: "pointer",
    },
    LsnBlockOffset: {
      parameters: ["pointer"],
      result: "u32",
    },
    LsnRecordSequence: {
      parameters: ["pointer"],
      result: "u32",
    },
    LsnInvalid: {
      parameters: ["pointer"],
      result: "pointer",
    },
    LsnIncrement: {
      parameters: ["pointer"],
      result: "pointer",
    },
    CreateLogFile: {
      parameters: ["buffer", "u32", "u32", "pointer", "u32", "u32"],
      result: "pointer",
    },
    DeleteLogByHandle: {
      parameters: ["pointer"],
      result: "i32",
    },
    DeleteLogFile: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    AddLogContainer: {
      parameters: ["pointer", "pointer", "buffer", "pointer"],
      result: "i32",
    },
    AddLogContainerSet: {
      parameters: ["pointer", "u16", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    RemoveLogContainer: {
      parameters: ["pointer", "buffer", "i32", "pointer"],
      result: "i32",
    },
    RemoveLogContainerSet: {
      parameters: ["pointer", "u16", "pointer", "i32", "pointer"],
      result: "i32",
    },
    SetLogArchiveTail: {
      parameters: ["pointer", "pointer", "pointer"],
      result: "i32",
    },
    SetEndOfLog: {
      parameters: ["pointer", "pointer", "pointer"],
      result: "i32",
    },
    TruncateLog: {
      parameters: ["pointer", "pointer", "pointer"],
      result: "i32",
    },
    CreateLogContainerScanContext: {
      parameters: ["pointer", "u32", "u32", "u8", "pointer", "pointer"],
      result: "i32",
    },
    ScanLogContainers: {
      parameters: ["pointer", "u8", "pointer"],
      result: "i32",
    },
    AlignReservedLog: {
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    AllocReservedLog: {
      parameters: ["pointer", "u32", "pointer"],
      result: "i32",
    },
    FreeReservedLog: {
      parameters: ["pointer", "u32", "pointer"],
      result: "i32",
    },
    GetLogFileInformation: {
      parameters: ["pointer", "pointer", "pointer"],
      result: "i32",
    },
    SetLogArchiveMode: {
      parameters: ["pointer", "i32"],
      result: "i32",
    },
    ReadLogRestartArea: {
      parameters: ["pointer", "pointer", "pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    ReadPreviousLogRestartArea: {
      parameters: ["pointer", "pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    WriteLogRestartArea: {
      parameters: ["pointer", "pointer", "u32", "pointer", "u32", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    GetLogReservationInfo: {
      parameters: ["pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    AdvanceLogBase: {
      parameters: ["pointer", "pointer", "u32", "pointer"],
      result: "i32",
    },
    CloseAndResetLogFile: {
      parameters: ["pointer"],
      result: "i32",
    },
    CreateLogMarshallingArea: {
      parameters: ["pointer", "pointer", "pointer", "pointer", "u32", "u32", "u32", "pointer"],
      result: "i32",
    },
    DeleteLogMarshallingArea: {
      parameters: ["pointer"],
      result: "i32",
    },
    ReserveAndAppendLog: {
      parameters: ["pointer", "pointer", "u32", "pointer", "pointer", "u32", "pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    ReserveAndAppendLogAligned: {
      parameters: ["pointer", "pointer", "u32", "u32", "pointer", "pointer", "u32", "pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    FlushLogBuffers: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    FlushLogToLsn: {
      parameters: ["pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    ReadLogRecord: {
      parameters: ["pointer", "pointer", "i32", "pointer", "pointer", "pointer", "pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    ReadNextLogRecord: {
      parameters: ["pointer", "pointer", "pointer", "pointer", "pointer", "pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    TerminateReadLog: {
      parameters: ["pointer"],
      result: "i32",
    },
    PrepareLogArchive: {
      parameters: ["pointer", "buffer", "u32", "pointer", "pointer", "pointer", "pointer", "pointer", "pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    ReadLogArchiveMetadata: {
      parameters: ["pointer", "u32", "u32", "pointer", "pointer"],
      result: "i32",
    },
    GetNextLogArchiveExtent: {
      parameters: ["pointer", "pointer", "u32", "pointer"],
      result: "i32",
    },
    TerminateLogArchive: {
      parameters: ["pointer"],
      result: "i32",
    },
    ValidateLog: {
      parameters: ["buffer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    GetLogContainerName: {
      parameters: ["pointer", "u32", "buffer", "u32", "pointer"],
      result: "i32",
    },
    GetLogIoStatistics: {
      parameters: ["pointer", "pointer", "u32", "i32", "pointer"],
      result: "i32",
    },
    RegisterManageableLogClient: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    DeregisterManageableLogClient: {
      parameters: ["pointer"],
      result: "i32",
    },
    ReadLogNotification: {
      parameters: ["pointer", "pointer", "pointer"],
      result: "i32",
    },
    InstallLogPolicy: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    RemoveLogPolicy: {
      parameters: ["pointer", "i32"],
      result: "i32",
    },
    QueryLogPolicy: {
      parameters: ["pointer", "i32", "pointer", "pointer"],
      result: "i32",
    },
    SetLogFileSizeWithPolicy: {
      parameters: ["pointer", "pointer", "pointer"],
      result: "i32",
    },
    HandleLogFull: {
      parameters: ["pointer"],
      result: "i32",
    },
    LogTailAdvanceFailure: {
      parameters: ["pointer", "u32"],
      result: "i32",
    },
    RegisterForLogWriteNotification: {
      parameters: ["pointer", "u32", "i32"],
      result: "i32",
    },
  }).symbols;
} catch(e) { /* ignore */ }

try {
  var libADVAPI32_dll = Deno.dlopen("ADVAPI32.dll", {
    QueryUsersOnEncryptedFile: {
      parameters: ["buffer", "pointer"],
      result: "u32",
    },
    QueryRecoveryAgentsOnEncryptedFile: {
      parameters: ["buffer", "pointer"],
      result: "u32",
    },
    RemoveUsersFromEncryptedFile: {
      parameters: ["buffer", "pointer"],
      result: "u32",
    },
    AddUsersToEncryptedFile: {
      parameters: ["buffer", "pointer"],
      result: "u32",
    },
    SetUserFileEncryptionKey: {
      parameters: ["pointer"],
      result: "u32",
    },
    SetUserFileEncryptionKeyEx: {
      parameters: ["pointer", "u32", "u32", "pointer"],
      result: "u32",
    },
    FreeEncryptionCertificateHashList: {
      parameters: ["pointer"],
      result: "void",
    },
    EncryptionDisable: {
      parameters: ["buffer", "i32"],
      result: "i32",
    },
    DuplicateEncryptionInfoFile: {
      parameters: ["buffer", "buffer", "u32", "u32", "pointer"],
      result: "u32",
    },
    GetEncryptedFileMetadata: {
      parameters: ["buffer", "pointer", "pointer"],
      result: "u32",
    },
    SetEncryptedFileMetadata: {
      parameters: ["buffer", "pointer", "pointer", "pointer", "u32", "pointer"],
      result: "u32",
    },
    FreeEncryptedFileMetadata: {
      parameters: ["pointer"],
      result: "void",
    },
    EncryptFileA: {
      parameters: ["buffer"],
      result: "i32",
    },
    EncryptFileW: {
      parameters: ["buffer"],
      result: "i32",
    },
    DecryptFileA: {
      parameters: ["buffer", "u32"],
      result: "i32",
    },
    DecryptFileW: {
      parameters: ["buffer", "u32"],
      result: "i32",
    },
    FileEncryptionStatusA: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    FileEncryptionStatusW: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    OpenEncryptedFileRawA: {
      parameters: ["buffer", "u32", "pointer"],
      result: "u32",
    },
    OpenEncryptedFileRawW: {
      parameters: ["buffer", "u32", "pointer"],
      result: "u32",
    },
    ReadEncryptedFileRaw: {
      parameters: ["pointer", "pointer", "pointer"],
      result: "u32",
    },
    WriteEncryptedFileRaw: {
      parameters: ["pointer", "pointer", "pointer"],
      result: "u32",
    },
    CloseEncryptedFileRaw: {
      parameters: ["pointer"],
      result: "void",
    },
  }).symbols;
} catch(e) { /* ignore */ }

try {
  var libWOFUTIL_dll = Deno.dlopen("WOFUTIL.dll", {
    WofShouldCompressBinaries: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    WofGetDriverVersion: {
      parameters: ["pointer", "u32", "pointer"],
      result: "pointer",
    },
    WofSetFileDataLocation: {
      parameters: ["pointer", "u32", "pointer", "u32"],
      result: "pointer",
    },
    WofIsExternalFile: {
      parameters: ["buffer", "pointer", "pointer", "pointer", "pointer"],
      result: "pointer",
    },
    WofEnumEntries: {
      parameters: ["buffer", "u32", "pointer", "pointer"],
      result: "pointer",
    },
    WofWimAddEntry: {
      parameters: ["buffer", "buffer", "u32", "u32", "pointer"],
      result: "pointer",
    },
    WofWimEnumFiles: {
      parameters: ["buffer", "pointer", "pointer", "pointer"],
      result: "pointer",
    },
    WofWimSuspendEntry: {
      parameters: ["buffer", "pointer"],
      result: "pointer",
    },
    WofWimRemoveEntry: {
      parameters: ["buffer", "pointer"],
      result: "pointer",
    },
    WofWimUpdateEntry: {
      parameters: ["buffer", "pointer", "buffer"],
      result: "pointer",
    },
    WofFileEnumFiles: {
      parameters: ["buffer", "u32", "pointer", "pointer"],
      result: "pointer",
    },
  }).symbols;
} catch(e) { /* ignore */ }

try {
  var libtxfw32_dll = Deno.dlopen("txfw32.dll", {
    TxfLogCreateFileReadContext: {
      parameters: ["buffer", "pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    TxfLogCreateRangeReadContext: {
      parameters: ["buffer", "pointer", "pointer", "pointer", "pointer", "u32", "pointer"],
      result: "i32",
    },
    TxfLogDestroyReadContext: {
      parameters: ["pointer"],
      result: "i32",
    },
    TxfLogReadRecords: {
      parameters: ["pointer", "u32", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    TxfReadMetadataInfo: {
      parameters: ["pointer", "pointer", "pointer", "pointer", "pointer"],
      result: "i32",
    },
    TxfLogRecordGetFileName: {
      parameters: ["pointer", "u32", "buffer", "pointer", "pointer"],
      result: "i32",
    },
    TxfLogRecordGetGenericType: {
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    TxfSetThreadMiniVersionForCreate: {
      parameters: ["u16"],
      result: "void",
    },
    TxfGetThreadMiniVersionForCreate: {
      parameters: ["pointer"],
      result: "void",
    },
  }).symbols;
} catch(e) { /* ignore */ }

try {
  var libktmw32_dll = Deno.dlopen("ktmw32.dll", {
    CreateTransaction: {
      parameters: ["pointer", "pointer", "u32", "u32", "u32", "u32", "buffer"],
      result: "pointer",
    },
    OpenTransaction: {
      parameters: ["u32", "pointer"],
      result: "pointer",
    },
    CommitTransaction: {
      parameters: ["pointer"],
      result: "i32",
    },
    CommitTransactionAsync: {
      parameters: ["pointer"],
      result: "i32",
    },
    RollbackTransaction: {
      parameters: ["pointer"],
      result: "i32",
    },
    RollbackTransactionAsync: {
      parameters: ["pointer"],
      result: "i32",
    },
    GetTransactionId: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    GetTransactionInformation: {
      parameters: ["pointer", "pointer", "pointer", "pointer", "pointer", "u32", "buffer"],
      result: "i32",
    },
    SetTransactionInformation: {
      parameters: ["pointer", "u32", "u32", "u32", "buffer"],
      result: "i32",
    },
    CreateTransactionManager: {
      parameters: ["pointer", "buffer", "u32", "u32"],
      result: "pointer",
    },
    OpenTransactionManager: {
      parameters: ["buffer", "u32", "u32"],
      result: "pointer",
    },
    OpenTransactionManagerById: {
      parameters: ["pointer", "u32", "u32"],
      result: "pointer",
    },
    RenameTransactionManager: {
      parameters: ["buffer", "pointer"],
      result: "i32",
    },
    RollforwardTransactionManager: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    RecoverTransactionManager: {
      parameters: ["pointer"],
      result: "i32",
    },
    GetCurrentClockTransactionManager: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    GetTransactionManagerId: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    CreateResourceManager: {
      parameters: ["pointer", "pointer", "u32", "pointer", "buffer"],
      result: "pointer",
    },
    OpenResourceManager: {
      parameters: ["u32", "pointer", "pointer"],
      result: "pointer",
    },
    RecoverResourceManager: {
      parameters: ["pointer"],
      result: "i32",
    },
    GetNotificationResourceManager: {
      parameters: ["pointer", "pointer", "u32", "u32", "pointer"],
      result: "i32",
    },
    GetNotificationResourceManagerAsync: {
      parameters: ["pointer", "pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    SetResourceManagerCompletionPort: {
      parameters: ["pointer", "pointer", "usize"],
      result: "i32",
    },
    CreateEnlistment: {
      parameters: ["pointer", "pointer", "pointer", "u32", "u32", "pointer"],
      result: "pointer",
    },
    OpenEnlistment: {
      parameters: ["u32", "pointer", "pointer"],
      result: "pointer",
    },
    RecoverEnlistment: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    GetEnlistmentRecoveryInformation: {
      parameters: ["pointer", "u32", "pointer", "pointer"],
      result: "i32",
    },
    GetEnlistmentId: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    SetEnlistmentRecoveryInformation: {
      parameters: ["pointer", "u32", "pointer"],
      result: "i32",
    },
    PrepareEnlistment: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    PrePrepareEnlistment: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    CommitEnlistment: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    RollbackEnlistment: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    PrePrepareComplete: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    PrepareComplete: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    ReadOnlyEnlistment: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    CommitComplete: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    RollbackComplete: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
    SinglePhaseReject: {
      parameters: ["pointer", "pointer"],
      result: "i32",
    },
  }).symbols;
} catch(e) { /* ignore */ }

try {
  var libNETAPI32_dll = Deno.dlopen("NETAPI32.dll", {
    NetShareAdd: {
      parameters: ["buffer", "u32", "pointer", "pointer"],
      result: "u32",
    },
    NetShareEnum: {
      parameters: ["buffer", "u32", "pointer", "u32", "pointer", "pointer", "pointer"],
      result: "u32",
    },
    NetShareEnumSticky: {
      parameters: ["buffer", "u32", "pointer", "u32", "pointer", "pointer", "pointer"],
      result: "u32",
    },
    NetShareGetInfo: {
      parameters: ["buffer", "buffer", "u32", "pointer"],
      result: "u32",
    },
    NetShareSetInfo: {
      parameters: ["buffer", "buffer", "u32", "pointer", "pointer"],
      result: "u32",
    },
    NetShareDel: {
      parameters: ["buffer", "buffer", "u32"],
      result: "u32",
    },
    NetShareDelSticky: {
      parameters: ["buffer", "buffer", "u32"],
      result: "u32",
    },
    NetShareCheck: {
      parameters: ["buffer", "buffer", "pointer"],
      result: "u32",
    },
    NetShareDelEx: {
      parameters: ["buffer", "u32", "pointer"],
      result: "u32",
    },
    NetServerAliasAdd: {
      parameters: ["buffer", "u32", "pointer"],
      result: "u32",
    },
    NetServerAliasDel: {
      parameters: ["buffer", "u32", "pointer"],
      result: "u32",
    },
    NetServerAliasEnum: {
      parameters: ["buffer", "u32", "pointer", "u32", "pointer", "pointer", "pointer"],
      result: "u32",
    },
    NetSessionEnum: {
      parameters: ["buffer", "buffer", "buffer", "u32", "pointer", "u32", "pointer", "pointer", "pointer"],
      result: "u32",
    },
    NetSessionDel: {
      parameters: ["buffer", "buffer", "buffer"],
      result: "u32",
    },
    NetSessionGetInfo: {
      parameters: ["buffer", "buffer", "buffer", "u32", "pointer"],
      result: "u32",
    },
    NetConnectionEnum: {
      parameters: ["buffer", "buffer", "u32", "pointer", "u32", "pointer", "pointer", "pointer"],
      result: "u32",
    },
    NetFileClose: {
      parameters: ["buffer", "u32"],
      result: "u32",
    },
    NetFileEnum: {
      parameters: ["buffer", "buffer", "buffer", "u32", "pointer", "u32", "pointer", "pointer", "pointer"],
      result: "u32",
    },
    NetFileGetInfo: {
      parameters: ["buffer", "u32", "u32", "pointer"],
      result: "u32",
    },
    NetStatisticsGet: {
      parameters: ["pointer", "pointer", "u32", "u32", "pointer"],
      result: "u32",
    },
  }).symbols;
} catch(e) { /* ignore */ }

try {
  var libapi_ms_win_core_ioring_l1_1_0_dll = Deno.dlopen("api-ms-win-core-ioring-l1-1-0.dll", {
    QueryIoRingCapabilities: {
      parameters: ["pointer"],
      result: "pointer",
    },
    IsIoRingOpSupported: {
      parameters: ["pointer", "i32"],
      result: "i32",
    },
    CreateIoRing: {
      parameters: ["i32", "pointer", "u32", "u32", "pointer"],
      result: "pointer",
    },
    GetIoRingInfo: {
      parameters: ["pointer", "pointer"],
      result: "pointer",
    },
    SubmitIoRing: {
      parameters: ["pointer", "u32", "u32", "pointer"],
      result: "pointer",
    },
    CloseIoRing: {
      parameters: ["pointer"],
      result: "pointer",
    },
    PopIoRingCompletion: {
      parameters: ["pointer", "pointer"],
      result: "pointer",
    },
    SetIoRingCompletionEvent: {
      parameters: ["pointer", "pointer"],
      result: "pointer",
    },
    BuildIoRingCancelRequest: {
      parameters: ["pointer", "pointer", "usize", "usize"],
      result: "pointer",
    },
    BuildIoRingReadFile: {
      parameters: ["pointer", "pointer", "pointer", "u32", "u64", "usize", "i32"],
      result: "pointer",
    },
    BuildIoRingRegisterFileHandles: {
      parameters: ["pointer", "u32", "pointer", "usize"],
      result: "pointer",
    },
    BuildIoRingRegisterBuffers: {
      parameters: ["pointer", "u32", "pointer", "usize"],
      result: "pointer",
    },
  }).symbols;
} catch(e) { /* ignore */ }

try {
  var libntdll_dll = Deno.dlopen("ntdll.dll", {
    NtCreateFile: {
      parameters: ["pointer", "u32", "pointer", "pointer", "pointer", "u32", "u32", "u32", "u32", "pointer", "u32"],
      result: "pointer",
    },
  }).symbols;
} catch(e) { /* ignore */ }

// Symbols

export function SearchPathW(
  lpPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpExtension: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  nBufferLength: number /* u32 */,
  lpBuffer: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpFilePart: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libKERNEL32_dll.SearchPathW(util.pwstrToFfi(lpPath), util.pwstrToFfi(lpFileName), util.pwstrToFfi(lpExtension), nBufferLength, util.pwstrToFfi(lpBuffer), util.toPointer(lpFilePart));
}

export function SearchPathA(
  lpPath: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpExtension: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  nBufferLength: number /* u32 */,
  lpBuffer: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpFilePart: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libKERNEL32_dll.SearchPathA(util.pstrToFfi(lpPath), util.pstrToFfi(lpFileName), util.pstrToFfi(lpExtension), nBufferLength, util.pstrToFfi(lpBuffer), util.toPointer(lpFilePart));
}

export function CompareFileTime(
  lpFileTime1: Deno.PointerValue | Uint8Array /* ptr */,
  lpFileTime2: Deno.PointerValue | Uint8Array /* ptr */,
): number /* i32 */ {
  return libKERNEL32_dll.CompareFileTime(util.toPointer(lpFileTime1), util.toPointer(lpFileTime2));
}

export function CreateDirectoryA(
  lpPathName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CreateDirectoryA(util.pstrToFfi(lpPathName), util.toPointer(lpSecurityAttributes)));
}

export function CreateDirectoryW(
  lpPathName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CreateDirectoryW(util.pwstrToFfi(lpPathName), util.toPointer(lpSecurityAttributes)));
}

export function CreateFileA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwDesiredAccess: FILE_ACCESS_FLAGS /* Windows.Win32.Storage.FileSystem.FILE_ACCESS_FLAGS */,
  dwShareMode: FILE_SHARE_MODE /* Windows.Win32.Storage.FileSystem.FILE_SHARE_MODE */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  dwCreationDisposition: FILE_CREATION_DISPOSITION /* Windows.Win32.Storage.FileSystem.FILE_CREATION_DISPOSITION */,
  dwFlagsAndAttributes: FILE_FLAGS_AND_ATTRIBUTES /* Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES */,
  hTemplateFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libKERNEL32_dll.CreateFileA(util.pstrToFfi(lpFileName), dwDesiredAccess, dwShareMode, util.toPointer(lpSecurityAttributes), dwCreationDisposition, dwFlagsAndAttributes, util.toPointer(hTemplateFile));
}

export async function CreateFileAAsync(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwDesiredAccess: FILE_ACCESS_FLAGS /* Windows.Win32.Storage.FileSystem.FILE_ACCESS_FLAGS */,
  dwShareMode: FILE_SHARE_MODE /* Windows.Win32.Storage.FileSystem.FILE_SHARE_MODE */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  dwCreationDisposition: FILE_CREATION_DISPOSITION /* Windows.Win32.Storage.FileSystem.FILE_CREATION_DISPOSITION */,
  dwFlagsAndAttributes: FILE_FLAGS_AND_ATTRIBUTES /* Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES */,
  hTemplateFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): Promise<Deno.PointerValue> /* Windows.Win32.Foundation.HANDLE */ {
  return await libKERNEL32_dll.CreateFileAAsync(util.pstrToFfi(lpFileName), dwDesiredAccess, dwShareMode, util.toPointer(lpSecurityAttributes), dwCreationDisposition, dwFlagsAndAttributes, util.toPointer(hTemplateFile));
}

export function CreateFileW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwDesiredAccess: FILE_ACCESS_FLAGS /* Windows.Win32.Storage.FileSystem.FILE_ACCESS_FLAGS */,
  dwShareMode: FILE_SHARE_MODE /* Windows.Win32.Storage.FileSystem.FILE_SHARE_MODE */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  dwCreationDisposition: FILE_CREATION_DISPOSITION /* Windows.Win32.Storage.FileSystem.FILE_CREATION_DISPOSITION */,
  dwFlagsAndAttributes: FILE_FLAGS_AND_ATTRIBUTES /* Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES */,
  hTemplateFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libKERNEL32_dll.CreateFileW(util.pwstrToFfi(lpFileName), dwDesiredAccess, dwShareMode, util.toPointer(lpSecurityAttributes), dwCreationDisposition, dwFlagsAndAttributes, util.toPointer(hTemplateFile));
}

export async function CreateFileWAsync(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwDesiredAccess: FILE_ACCESS_FLAGS /* Windows.Win32.Storage.FileSystem.FILE_ACCESS_FLAGS */,
  dwShareMode: FILE_SHARE_MODE /* Windows.Win32.Storage.FileSystem.FILE_SHARE_MODE */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  dwCreationDisposition: FILE_CREATION_DISPOSITION /* Windows.Win32.Storage.FileSystem.FILE_CREATION_DISPOSITION */,
  dwFlagsAndAttributes: FILE_FLAGS_AND_ATTRIBUTES /* Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES */,
  hTemplateFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): Promise<Deno.PointerValue> /* Windows.Win32.Foundation.HANDLE */ {
  return await libKERNEL32_dll.CreateFileWAsync(util.pwstrToFfi(lpFileName), dwDesiredAccess, dwShareMode, util.toPointer(lpSecurityAttributes), dwCreationDisposition, dwFlagsAndAttributes, util.toPointer(hTemplateFile));
}

export function DefineDosDeviceW(
  dwFlags: DEFINE_DOS_DEVICE_FLAGS /* Windows.Win32.Storage.FileSystem.DEFINE_DOS_DEVICE_FLAGS */,
  lpDeviceName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpTargetPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.DefineDosDeviceW(dwFlags, util.pwstrToFfi(lpDeviceName), util.pwstrToFfi(lpTargetPath)));
}

export function DeleteFileA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.DeleteFileA(util.pstrToFfi(lpFileName)));
}

export function DeleteFileW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.DeleteFileW(util.pwstrToFfi(lpFileName)));
}

export function DeleteVolumeMountPointW(
  lpszVolumeMountPoint: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.DeleteVolumeMountPointW(util.pwstrToFfi(lpszVolumeMountPoint)));
}

export function FileTimeToLocalFileTime(
  lpFileTime: Deno.PointerValue | Uint8Array /* ptr */,
  lpLocalFileTime: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.FileTimeToLocalFileTime(util.toPointer(lpFileTime), util.toPointer(lpLocalFileTime)));
}

export function FindClose(
  hFindFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindFileHandle */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.FindClose(util.toPointer(hFindFile)));
}

export function FindCloseChangeNotification(
  hChangeHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindChangeNotificationHandle */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.FindCloseChangeNotification(util.toPointer(hChangeHandle)));
}

export function FindFirstChangeNotificationA(
  lpPathName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  bWatchSubtree: boolean /* Windows.Win32.Foundation.BOOL */,
  dwNotifyFilter: FILE_NOTIFY_CHANGE /* Windows.Win32.Storage.FileSystem.FILE_NOTIFY_CHANGE */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindChangeNotificationHandle */ {
  return libKERNEL32_dll.FindFirstChangeNotificationA(util.pstrToFfi(lpPathName), util.boolToFfi(bWatchSubtree), dwNotifyFilter);
}

export function FindFirstChangeNotificationW(
  lpPathName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  bWatchSubtree: boolean /* Windows.Win32.Foundation.BOOL */,
  dwNotifyFilter: FILE_NOTIFY_CHANGE /* Windows.Win32.Storage.FileSystem.FILE_NOTIFY_CHANGE */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindChangeNotificationHandle */ {
  return libKERNEL32_dll.FindFirstChangeNotificationW(util.pwstrToFfi(lpPathName), util.boolToFfi(bWatchSubtree), dwNotifyFilter);
}

export function FindFirstFileA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpFindFileData: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindFileHandle */ {
  return libKERNEL32_dll.FindFirstFileA(util.pstrToFfi(lpFileName), util.toPointer(lpFindFileData));
}

export function FindFirstFileW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpFindFileData: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindFileHandle */ {
  return libKERNEL32_dll.FindFirstFileW(util.pwstrToFfi(lpFileName), util.toPointer(lpFindFileData));
}

export function FindFirstFileExA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  fInfoLevelId: FINDEX_INFO_LEVELS /* Windows.Win32.Storage.FileSystem.FINDEX_INFO_LEVELS */,
  lpFindFileData: Deno.PointerValue | Uint8Array /* ptr */,
  fSearchOp: FINDEX_SEARCH_OPS /* Windows.Win32.Storage.FileSystem.FINDEX_SEARCH_OPS */,
  lpSearchFilter: Deno.PointerValue | Uint8Array /* ptr */,
  dwAdditionalFlags: FIND_FIRST_EX_FLAGS /* Windows.Win32.Storage.FileSystem.FIND_FIRST_EX_FLAGS */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindFileHandle */ {
  return libKERNEL32_dll.FindFirstFileExA(util.pstrToFfi(lpFileName), fInfoLevelId, util.toPointer(lpFindFileData), fSearchOp, util.toPointer(lpSearchFilter), dwAdditionalFlags);
}

export function FindFirstFileExW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  fInfoLevelId: FINDEX_INFO_LEVELS /* Windows.Win32.Storage.FileSystem.FINDEX_INFO_LEVELS */,
  lpFindFileData: Deno.PointerValue | Uint8Array /* ptr */,
  fSearchOp: FINDEX_SEARCH_OPS /* Windows.Win32.Storage.FileSystem.FINDEX_SEARCH_OPS */,
  lpSearchFilter: Deno.PointerValue | Uint8Array /* ptr */,
  dwAdditionalFlags: FIND_FIRST_EX_FLAGS /* Windows.Win32.Storage.FileSystem.FIND_FIRST_EX_FLAGS */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindFileHandle */ {
  return libKERNEL32_dll.FindFirstFileExW(util.pwstrToFfi(lpFileName), fInfoLevelId, util.toPointer(lpFindFileData), fSearchOp, util.toPointer(lpSearchFilter), dwAdditionalFlags);
}

export function FindFirstVolumeW(
  lpszVolumeName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchBufferLength: number /* u32 */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindVolumeHandle */ {
  return libKERNEL32_dll.FindFirstVolumeW(util.pwstrToFfi(lpszVolumeName), cchBufferLength);
}

export function FindNextChangeNotification(
  hChangeHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindChangeNotificationHandle */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.FindNextChangeNotification(util.toPointer(hChangeHandle)));
}

export function FindNextFileA(
  hFindFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindFileHandle */,
  lpFindFileData: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.FindNextFileA(util.toPointer(hFindFile), util.toPointer(lpFindFileData)));
}

export function FindNextFileW(
  hFindFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindFileHandle */,
  lpFindFileData: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.FindNextFileW(util.toPointer(hFindFile), util.toPointer(lpFindFileData)));
}

export function FindNextVolumeW(
  hFindVolume: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindVolumeHandle */,
  lpszVolumeName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchBufferLength: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.FindNextVolumeW(util.toPointer(hFindVolume), util.pwstrToFfi(lpszVolumeName), cchBufferLength));
}

export function FindVolumeClose(
  hFindVolume: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindVolumeHandle */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.FindVolumeClose(util.toPointer(hFindVolume)));
}

export function FlushFileBuffers(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.FlushFileBuffers(util.toPointer(hFile)));
}

export function GetDiskFreeSpaceA(
  lpRootPathName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpSectorsPerCluster: Deno.PointerValue | Uint8Array /* ptr */,
  lpBytesPerSector: Deno.PointerValue | Uint8Array /* ptr */,
  lpNumberOfFreeClusters: Deno.PointerValue | Uint8Array /* ptr */,
  lpTotalNumberOfClusters: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetDiskFreeSpaceA(util.pstrToFfi(lpRootPathName), util.toPointer(lpSectorsPerCluster), util.toPointer(lpBytesPerSector), util.toPointer(lpNumberOfFreeClusters), util.toPointer(lpTotalNumberOfClusters)));
}

export function GetDiskFreeSpaceW(
  lpRootPathName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpSectorsPerCluster: Deno.PointerValue | Uint8Array /* ptr */,
  lpBytesPerSector: Deno.PointerValue | Uint8Array /* ptr */,
  lpNumberOfFreeClusters: Deno.PointerValue | Uint8Array /* ptr */,
  lpTotalNumberOfClusters: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetDiskFreeSpaceW(util.pwstrToFfi(lpRootPathName), util.toPointer(lpSectorsPerCluster), util.toPointer(lpBytesPerSector), util.toPointer(lpNumberOfFreeClusters), util.toPointer(lpTotalNumberOfClusters)));
}

export function GetDiskFreeSpaceExA(
  lpDirectoryName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpFreeBytesAvailableToCaller: Deno.PointerValue | Uint8Array /* ptr */,
  lpTotalNumberOfBytes: Deno.PointerValue | Uint8Array /* ptr */,
  lpTotalNumberOfFreeBytes: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetDiskFreeSpaceExA(util.pstrToFfi(lpDirectoryName), util.toPointer(lpFreeBytesAvailableToCaller), util.toPointer(lpTotalNumberOfBytes), util.toPointer(lpTotalNumberOfFreeBytes)));
}

export function GetDiskFreeSpaceExW(
  lpDirectoryName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpFreeBytesAvailableToCaller: Deno.PointerValue | Uint8Array /* ptr */,
  lpTotalNumberOfBytes: Deno.PointerValue | Uint8Array /* ptr */,
  lpTotalNumberOfFreeBytes: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetDiskFreeSpaceExW(util.pwstrToFfi(lpDirectoryName), util.toPointer(lpFreeBytesAvailableToCaller), util.toPointer(lpTotalNumberOfBytes), util.toPointer(lpTotalNumberOfFreeBytes)));
}

export function GetDiskSpaceInformationA(
  rootPath: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  diskSpaceInfo: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libKERNEL32_dll.GetDiskSpaceInformationA(util.pstrToFfi(rootPath), util.toPointer(diskSpaceInfo));
}

export function GetDiskSpaceInformationW(
  rootPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  diskSpaceInfo: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libKERNEL32_dll.GetDiskSpaceInformationW(util.pwstrToFfi(rootPath), util.toPointer(diskSpaceInfo));
}

export function GetDriveTypeA(
  lpRootPathName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): number /* u32 */ {
  return libKERNEL32_dll.GetDriveTypeA(util.pstrToFfi(lpRootPathName));
}

export function GetDriveTypeW(
  lpRootPathName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): number /* u32 */ {
  return libKERNEL32_dll.GetDriveTypeW(util.pwstrToFfi(lpRootPathName));
}

export function GetFileAttributesA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): number /* u32 */ {
  return libKERNEL32_dll.GetFileAttributesA(util.pstrToFfi(lpFileName));
}

export function GetFileAttributesW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): number /* u32 */ {
  return libKERNEL32_dll.GetFileAttributesW(util.pwstrToFfi(lpFileName));
}

export function GetFileAttributesExA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  fInfoLevelId: GET_FILEEX_INFO_LEVELS /* Windows.Win32.Storage.FileSystem.GET_FILEEX_INFO_LEVELS */,
  lpFileInformation: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetFileAttributesExA(util.pstrToFfi(lpFileName), fInfoLevelId, util.toPointer(lpFileInformation)));
}

export function GetFileAttributesExW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  fInfoLevelId: GET_FILEEX_INFO_LEVELS /* Windows.Win32.Storage.FileSystem.GET_FILEEX_INFO_LEVELS */,
  lpFileInformation: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetFileAttributesExW(util.pwstrToFfi(lpFileName), fInfoLevelId, util.toPointer(lpFileInformation)));
}

export function GetFileInformationByHandle(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpFileInformation: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetFileInformationByHandle(util.toPointer(hFile), util.toPointer(lpFileInformation)));
}

export function GetFileSize(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpFileSizeHigh: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libKERNEL32_dll.GetFileSize(util.toPointer(hFile), util.toPointer(lpFileSizeHigh));
}

export function GetFileSizeEx(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpFileSize: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetFileSizeEx(util.toPointer(hFile), util.toPointer(lpFileSize)));
}

export function GetFileType(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): number /* u32 */ {
  return libKERNEL32_dll.GetFileType(util.toPointer(hFile));
}

export function GetFinalPathNameByHandleA(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpszFilePath: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchFilePath: number /* u32 */,
  dwFlags: FILE_NAME /* Windows.Win32.Storage.FileSystem.FILE_NAME */,
): number /* u32 */ {
  return libKERNEL32_dll.GetFinalPathNameByHandleA(util.toPointer(hFile), util.pstrToFfi(lpszFilePath), cchFilePath, dwFlags);
}

export function GetFinalPathNameByHandleW(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpszFilePath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchFilePath: number /* u32 */,
  dwFlags: FILE_NAME /* Windows.Win32.Storage.FileSystem.FILE_NAME */,
): number /* u32 */ {
  return libKERNEL32_dll.GetFinalPathNameByHandleW(util.toPointer(hFile), util.pwstrToFfi(lpszFilePath), cchFilePath, dwFlags);
}

export function GetFileTime(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpCreationTime: Deno.PointerValue | Uint8Array /* ptr */,
  lpLastAccessTime: Deno.PointerValue | Uint8Array /* ptr */,
  lpLastWriteTime: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetFileTime(util.toPointer(hFile), util.toPointer(lpCreationTime), util.toPointer(lpLastAccessTime), util.toPointer(lpLastWriteTime)));
}

export function GetFullPathNameW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  nBufferLength: number /* u32 */,
  lpBuffer: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpFilePart: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libKERNEL32_dll.GetFullPathNameW(util.pwstrToFfi(lpFileName), nBufferLength, util.pwstrToFfi(lpBuffer), util.toPointer(lpFilePart));
}

export function GetFullPathNameA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  nBufferLength: number /* u32 */,
  lpBuffer: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpFilePart: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libKERNEL32_dll.GetFullPathNameA(util.pstrToFfi(lpFileName), nBufferLength, util.pstrToFfi(lpBuffer), util.toPointer(lpFilePart));
}

export function GetLogicalDrives(): number /* u32 */ {
  return libKERNEL32_dll.GetLogicalDrives();
}

export function GetLogicalDriveStringsW(
  nBufferLength: number /* u32 */,
  lpBuffer: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): number /* u32 */ {
  return libKERNEL32_dll.GetLogicalDriveStringsW(nBufferLength, util.pwstrToFfi(lpBuffer));
}

export function GetLongPathNameA(
  lpszShortPath: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpszLongPath: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchBuffer: number /* u32 */,
): number /* u32 */ {
  return libKERNEL32_dll.GetLongPathNameA(util.pstrToFfi(lpszShortPath), util.pstrToFfi(lpszLongPath), cchBuffer);
}

export function GetLongPathNameW(
  lpszShortPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpszLongPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchBuffer: number /* u32 */,
): number /* u32 */ {
  return libKERNEL32_dll.GetLongPathNameW(util.pwstrToFfi(lpszShortPath), util.pwstrToFfi(lpszLongPath), cchBuffer);
}

export function AreShortNamesEnabled(
  Handle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  Enabled: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.AreShortNamesEnabled(util.toPointer(Handle), util.toPointer(Enabled)));
}

export function GetShortPathNameW(
  lpszLongPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpszShortPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchBuffer: number /* u32 */,
): number /* u32 */ {
  return libKERNEL32_dll.GetShortPathNameW(util.pwstrToFfi(lpszLongPath), util.pwstrToFfi(lpszShortPath), cchBuffer);
}

export function GetTempFileNameW(
  lpPathName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpPrefixString: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  uUnique: number /* u32 */,
  lpTempFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): number /* u32 */ {
  return libKERNEL32_dll.GetTempFileNameW(util.pwstrToFfi(lpPathName), util.pwstrToFfi(lpPrefixString), uUnique, util.pwstrToFfi(lpTempFileName));
}

export function GetVolumeInformationByHandleW(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpVolumeNameBuffer: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  nVolumeNameSize: number /* u32 */,
  lpVolumeSerialNumber: Deno.PointerValue | Uint8Array /* ptr */,
  lpMaximumComponentLength: Deno.PointerValue | Uint8Array /* ptr */,
  lpFileSystemFlags: Deno.PointerValue | Uint8Array /* ptr */,
  lpFileSystemNameBuffer: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  nFileSystemNameSize: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetVolumeInformationByHandleW(util.toPointer(hFile), util.pwstrToFfi(lpVolumeNameBuffer), nVolumeNameSize, util.toPointer(lpVolumeSerialNumber), util.toPointer(lpMaximumComponentLength), util.toPointer(lpFileSystemFlags), util.pwstrToFfi(lpFileSystemNameBuffer), nFileSystemNameSize));
}

export function GetVolumeInformationW(
  lpRootPathName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpVolumeNameBuffer: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  nVolumeNameSize: number /* u32 */,
  lpVolumeSerialNumber: Deno.PointerValue | Uint8Array /* ptr */,
  lpMaximumComponentLength: Deno.PointerValue | Uint8Array /* ptr */,
  lpFileSystemFlags: Deno.PointerValue | Uint8Array /* ptr */,
  lpFileSystemNameBuffer: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  nFileSystemNameSize: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetVolumeInformationW(util.pwstrToFfi(lpRootPathName), util.pwstrToFfi(lpVolumeNameBuffer), nVolumeNameSize, util.toPointer(lpVolumeSerialNumber), util.toPointer(lpMaximumComponentLength), util.toPointer(lpFileSystemFlags), util.pwstrToFfi(lpFileSystemNameBuffer), nFileSystemNameSize));
}

export function GetVolumePathNameW(
  lpszFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpszVolumePathName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchBufferLength: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetVolumePathNameW(util.pwstrToFfi(lpszFileName), util.pwstrToFfi(lpszVolumePathName), cchBufferLength));
}

export function LocalFileTimeToFileTime(
  lpLocalFileTime: Deno.PointerValue | Uint8Array /* ptr */,
  lpFileTime: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.LocalFileTimeToFileTime(util.toPointer(lpLocalFileTime), util.toPointer(lpFileTime)));
}

export function LockFile(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  dwFileOffsetLow: number /* u32 */,
  dwFileOffsetHigh: number /* u32 */,
  nNumberOfBytesToLockLow: number /* u32 */,
  nNumberOfBytesToLockHigh: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.LockFile(util.toPointer(hFile), dwFileOffsetLow, dwFileOffsetHigh, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh));
}

export function LockFileEx(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  dwFlags: LOCK_FILE_FLAGS /* Windows.Win32.Storage.FileSystem.LOCK_FILE_FLAGS */,
  dwReserved: number /* u32 */,
  nNumberOfBytesToLockLow: number /* u32 */,
  nNumberOfBytesToLockHigh: number /* u32 */,
  lpOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.LockFileEx(util.toPointer(hFile), dwFlags, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, util.toPointer(lpOverlapped)));
}

export function QueryDosDeviceW(
  lpDeviceName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpTargetPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  ucchMax: number /* u32 */,
): number /* u32 */ {
  return libKERNEL32_dll.QueryDosDeviceW(util.pwstrToFfi(lpDeviceName), util.pwstrToFfi(lpTargetPath), ucchMax);
}

export function ReadFile(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  nNumberOfBytesToRead: number /* u32 */,
  lpNumberOfBytesRead: Deno.PointerValue | Uint8Array /* ptr */,
  lpOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.ReadFile(util.toPointer(hFile), util.toPointer(lpBuffer), nNumberOfBytesToRead, util.toPointer(lpNumberOfBytesRead), util.toPointer(lpOverlapped)));
}

export function ReadFileEx(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  nNumberOfBytesToRead: number /* u32 */,
  lpOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
  lpCompletionRoutine: Uint8Array | Deno.PointerValue /* Windows.Win32.System.IO.LPOVERLAPPED_COMPLETION_ROUTINE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.ReadFileEx(util.toPointer(hFile), util.toPointer(lpBuffer), nNumberOfBytesToRead, util.toPointer(lpOverlapped), util.toPointer(lpCompletionRoutine)));
}

export function ReadFileScatter(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  aSegmentArray: Deno.PointerValue | Uint8Array /* ptr */,
  nNumberOfBytesToRead: number /* u32 */,
  lpReserved: Deno.PointerValue | Uint8Array /* ptr */,
  lpOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.ReadFileScatter(util.toPointer(hFile), util.toPointer(aSegmentArray), nNumberOfBytesToRead, util.toPointer(lpReserved), util.toPointer(lpOverlapped)));
}

export function RemoveDirectoryA(
  lpPathName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.RemoveDirectoryA(util.pstrToFfi(lpPathName)));
}

export function RemoveDirectoryW(
  lpPathName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.RemoveDirectoryW(util.pwstrToFfi(lpPathName)));
}

export function SetEndOfFile(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetEndOfFile(util.toPointer(hFile)));
}

export function SetFileAttributesA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwFileAttributes: FILE_FLAGS_AND_ATTRIBUTES /* Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetFileAttributesA(util.pstrToFfi(lpFileName), dwFileAttributes));
}

export function SetFileAttributesW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwFileAttributes: FILE_FLAGS_AND_ATTRIBUTES /* Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetFileAttributesW(util.pwstrToFfi(lpFileName), dwFileAttributes));
}

export function SetFileInformationByHandle(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  FileInformationClass: FILE_INFO_BY_HANDLE_CLASS /* Windows.Win32.Storage.FileSystem.FILE_INFO_BY_HANDLE_CLASS */,
  lpFileInformation: Deno.PointerValue | Uint8Array /* ptr */,
  dwBufferSize: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetFileInformationByHandle(util.toPointer(hFile), FileInformationClass, util.toPointer(lpFileInformation), dwBufferSize));
}

export function SetFilePointer(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lDistanceToMove: number /* i32 */,
  lpDistanceToMoveHigh: Deno.PointerValue | Uint8Array /* ptr */,
  dwMoveMethod: SET_FILE_POINTER_MOVE_METHOD /* Windows.Win32.Storage.FileSystem.SET_FILE_POINTER_MOVE_METHOD */,
): number /* u32 */ {
  return libKERNEL32_dll.SetFilePointer(util.toPointer(hFile), lDistanceToMove, util.toPointer(lpDistanceToMoveHigh), dwMoveMethod);
}

export function SetFilePointerEx(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  liDistanceToMove: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LARGE_INTEGER */,
  lpNewFilePointer: Deno.PointerValue | Uint8Array /* ptr */,
  dwMoveMethod: SET_FILE_POINTER_MOVE_METHOD /* Windows.Win32.Storage.FileSystem.SET_FILE_POINTER_MOVE_METHOD */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetFilePointerEx(util.toPointer(hFile), util.toPointer(liDistanceToMove), util.toPointer(lpNewFilePointer), dwMoveMethod));
}

export function SetFileTime(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpCreationTime: Deno.PointerValue | Uint8Array /* ptr */,
  lpLastAccessTime: Deno.PointerValue | Uint8Array /* ptr */,
  lpLastWriteTime: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetFileTime(util.toPointer(hFile), util.toPointer(lpCreationTime), util.toPointer(lpLastAccessTime), util.toPointer(lpLastWriteTime)));
}

export function SetFileValidData(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  ValidDataLength: bigint | number /* i64 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetFileValidData(util.toPointer(hFile), ValidDataLength));
}

export function UnlockFile(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  dwFileOffsetLow: number /* u32 */,
  dwFileOffsetHigh: number /* u32 */,
  nNumberOfBytesToUnlockLow: number /* u32 */,
  nNumberOfBytesToUnlockHigh: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.UnlockFile(util.toPointer(hFile), dwFileOffsetLow, dwFileOffsetHigh, nNumberOfBytesToUnlockLow, nNumberOfBytesToUnlockHigh));
}

export function UnlockFileEx(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  dwReserved: number /* u32 */,
  nNumberOfBytesToUnlockLow: number /* u32 */,
  nNumberOfBytesToUnlockHigh: number /* u32 */,
  lpOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.UnlockFileEx(util.toPointer(hFile), dwReserved, nNumberOfBytesToUnlockLow, nNumberOfBytesToUnlockHigh, util.toPointer(lpOverlapped)));
}

export function WriteFile(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  nNumberOfBytesToWrite: number /* u32 */,
  lpNumberOfBytesWritten: Deno.PointerValue | Uint8Array /* ptr */,
  lpOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.WriteFile(util.toPointer(hFile), util.toPointer(lpBuffer), nNumberOfBytesToWrite, util.toPointer(lpNumberOfBytesWritten), util.toPointer(lpOverlapped)));
}

export function WriteFileEx(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  nNumberOfBytesToWrite: number /* u32 */,
  lpOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
  lpCompletionRoutine: Uint8Array | Deno.PointerValue /* Windows.Win32.System.IO.LPOVERLAPPED_COMPLETION_ROUTINE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.WriteFileEx(util.toPointer(hFile), util.toPointer(lpBuffer), nNumberOfBytesToWrite, util.toPointer(lpOverlapped), util.toPointer(lpCompletionRoutine)));
}

export function WriteFileGather(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  aSegmentArray: Deno.PointerValue | Uint8Array /* ptr */,
  nNumberOfBytesToWrite: number /* u32 */,
  lpReserved: Deno.PointerValue | Uint8Array /* ptr */,
  lpOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.WriteFileGather(util.toPointer(hFile), util.toPointer(aSegmentArray), nNumberOfBytesToWrite, util.toPointer(lpReserved), util.toPointer(lpOverlapped)));
}

export function GetTempPathW(
  nBufferLength: number /* u32 */,
  lpBuffer: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): number /* u32 */ {
  return libKERNEL32_dll.GetTempPathW(nBufferLength, util.pwstrToFfi(lpBuffer));
}

export function GetVolumeNameForVolumeMountPointW(
  lpszVolumeMountPoint: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpszVolumeName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchBufferLength: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetVolumeNameForVolumeMountPointW(util.pwstrToFfi(lpszVolumeMountPoint), util.pwstrToFfi(lpszVolumeName), cchBufferLength));
}

export function GetVolumePathNamesForVolumeNameW(
  lpszVolumeName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpszVolumePathNames: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchBufferLength: number /* u32 */,
  lpcchReturnLength: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetVolumePathNamesForVolumeNameW(util.pwstrToFfi(lpszVolumeName), util.pwstrToFfi(lpszVolumePathNames), cchBufferLength, util.toPointer(lpcchReturnLength)));
}

export function CreateFile2(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwDesiredAccess: FILE_ACCESS_FLAGS /* Windows.Win32.Storage.FileSystem.FILE_ACCESS_FLAGS */,
  dwShareMode: FILE_SHARE_MODE /* Windows.Win32.Storage.FileSystem.FILE_SHARE_MODE */,
  dwCreationDisposition: FILE_CREATION_DISPOSITION /* Windows.Win32.Storage.FileSystem.FILE_CREATION_DISPOSITION */,
  pCreateExParams: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libKERNEL32_dll.CreateFile2(util.pwstrToFfi(lpFileName), dwDesiredAccess, dwShareMode, dwCreationDisposition, util.toPointer(pCreateExParams));
}

export function SetFileIoOverlappedRange(
  FileHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  OverlappedRangeStart: Deno.PointerValue | Uint8Array /* ptr */,
  Length: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetFileIoOverlappedRange(util.toPointer(FileHandle), util.toPointer(OverlappedRangeStart), Length));
}

export function GetCompressedFileSizeA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpFileSizeHigh: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libKERNEL32_dll.GetCompressedFileSizeA(util.pstrToFfi(lpFileName), util.toPointer(lpFileSizeHigh));
}

export function GetCompressedFileSizeW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpFileSizeHigh: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libKERNEL32_dll.GetCompressedFileSizeW(util.pwstrToFfi(lpFileName), util.toPointer(lpFileSizeHigh));
}

export function FindFirstStreamW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  InfoLevel: STREAM_INFO_LEVELS /* Windows.Win32.Storage.FileSystem.STREAM_INFO_LEVELS */,
  lpFindStreamData: Deno.PointerValue | Uint8Array /* ptr */,
  dwFlags: number /* u32 */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindStreamHandle */ {
  return libKERNEL32_dll.FindFirstStreamW(util.pwstrToFfi(lpFileName), InfoLevel, util.toPointer(lpFindStreamData), dwFlags);
}

export function FindNextStreamW(
  hFindStream: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindStreamHandle */,
  lpFindStreamData: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.FindNextStreamW(util.toPointer(hFindStream), util.toPointer(lpFindStreamData)));
}

export function AreFileApisANSI(): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.AreFileApisANSI());
}

export function GetTempPathA(
  nBufferLength: number /* u32 */,
  lpBuffer: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): number /* u32 */ {
  return libKERNEL32_dll.GetTempPathA(nBufferLength, util.pstrToFfi(lpBuffer));
}

export function FindFirstFileNameW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwFlags: number /* u32 */,
  StringLength: Deno.PointerValue | Uint8Array /* ptr */,
  LinkName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindFileNameHandle */ {
  return libKERNEL32_dll.FindFirstFileNameW(util.pwstrToFfi(lpFileName), dwFlags, util.toPointer(StringLength), util.pwstrToFfi(LinkName));
}

export function FindNextFileNameW(
  hFindStream: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindFileNameHandle */,
  StringLength: Deno.PointerValue | Uint8Array /* ptr */,
  LinkName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.FindNextFileNameW(util.toPointer(hFindStream), util.toPointer(StringLength), util.pwstrToFfi(LinkName)));
}

export function GetVolumeInformationA(
  lpRootPathName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpVolumeNameBuffer: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  nVolumeNameSize: number /* u32 */,
  lpVolumeSerialNumber: Deno.PointerValue | Uint8Array /* ptr */,
  lpMaximumComponentLength: Deno.PointerValue | Uint8Array /* ptr */,
  lpFileSystemFlags: Deno.PointerValue | Uint8Array /* ptr */,
  lpFileSystemNameBuffer: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  nFileSystemNameSize: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetVolumeInformationA(util.pstrToFfi(lpRootPathName), util.pstrToFfi(lpVolumeNameBuffer), nVolumeNameSize, util.toPointer(lpVolumeSerialNumber), util.toPointer(lpMaximumComponentLength), util.toPointer(lpFileSystemFlags), util.pstrToFfi(lpFileSystemNameBuffer), nFileSystemNameSize));
}

export function GetTempFileNameA(
  lpPathName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpPrefixString: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  uUnique: number /* u32 */,
  lpTempFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): number /* u32 */ {
  return libKERNEL32_dll.GetTempFileNameA(util.pstrToFfi(lpPathName), util.pstrToFfi(lpPrefixString), uUnique, util.pstrToFfi(lpTempFileName));
}

export function SetFileApisToOEM(): void /* void */ {
  return libKERNEL32_dll.SetFileApisToOEM();
}

export function SetFileApisToANSI(): void /* void */ {
  return libKERNEL32_dll.SetFileApisToANSI();
}

export function GetTempPath2W(
  BufferLength: number /* u32 */,
  Buffer: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): number /* u32 */ {
  return libKERNEL32_dll.GetTempPath2W(BufferLength, util.pwstrToFfi(Buffer));
}

export function GetTempPath2A(
  BufferLength: number /* u32 */,
  Buffer: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): number /* u32 */ {
  return libKERNEL32_dll.GetTempPath2A(BufferLength, util.pstrToFfi(Buffer));
}

export function CopyFileFromAppW(
  lpExistingFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpNewFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  bFailIfExists: boolean /* Windows.Win32.Foundation.BOOL */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libapi_ms_win_core_file_fromapp_l1_1_0_dll.CopyFileFromAppW(util.pwstrToFfi(lpExistingFileName), util.pwstrToFfi(lpNewFileName), util.boolToFfi(bFailIfExists)));
}

export function CreateDirectoryFromAppW(
  lpPathName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libapi_ms_win_core_file_fromapp_l1_1_0_dll.CreateDirectoryFromAppW(util.pwstrToFfi(lpPathName), util.toPointer(lpSecurityAttributes)));
}

export function CreateFileFromAppW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwDesiredAccess: number /* u32 */,
  dwShareMode: number /* u32 */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  dwCreationDisposition: number /* u32 */,
  dwFlagsAndAttributes: number /* u32 */,
  hTemplateFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libapi_ms_win_core_file_fromapp_l1_1_0_dll.CreateFileFromAppW(util.pwstrToFfi(lpFileName), dwDesiredAccess, dwShareMode, util.toPointer(lpSecurityAttributes), dwCreationDisposition, dwFlagsAndAttributes, util.toPointer(hTemplateFile));
}

export function CreateFile2FromAppW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwDesiredAccess: number /* u32 */,
  dwShareMode: number /* u32 */,
  dwCreationDisposition: number /* u32 */,
  pCreateExParams: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libapi_ms_win_core_file_fromapp_l1_1_0_dll.CreateFile2FromAppW(util.pwstrToFfi(lpFileName), dwDesiredAccess, dwShareMode, dwCreationDisposition, util.toPointer(pCreateExParams));
}

export function DeleteFileFromAppW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libapi_ms_win_core_file_fromapp_l1_1_0_dll.DeleteFileFromAppW(util.pwstrToFfi(lpFileName)));
}

export function FindFirstFileExFromAppW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  fInfoLevelId: FINDEX_INFO_LEVELS /* Windows.Win32.Storage.FileSystem.FINDEX_INFO_LEVELS */,
  lpFindFileData: Deno.PointerValue | Uint8Array /* ptr */,
  fSearchOp: FINDEX_SEARCH_OPS /* Windows.Win32.Storage.FileSystem.FINDEX_SEARCH_OPS */,
  lpSearchFilter: Deno.PointerValue | Uint8Array /* ptr */,
  dwAdditionalFlags: number /* u32 */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libapi_ms_win_core_file_fromapp_l1_1_0_dll.FindFirstFileExFromAppW(util.pwstrToFfi(lpFileName), fInfoLevelId, util.toPointer(lpFindFileData), fSearchOp, util.toPointer(lpSearchFilter), dwAdditionalFlags);
}

export function GetFileAttributesExFromAppW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  fInfoLevelId: GET_FILEEX_INFO_LEVELS /* Windows.Win32.Storage.FileSystem.GET_FILEEX_INFO_LEVELS */,
  lpFileInformation: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libapi_ms_win_core_file_fromapp_l1_1_0_dll.GetFileAttributesExFromAppW(util.pwstrToFfi(lpFileName), fInfoLevelId, util.toPointer(lpFileInformation)));
}

export function MoveFileFromAppW(
  lpExistingFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpNewFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libapi_ms_win_core_file_fromapp_l1_1_0_dll.MoveFileFromAppW(util.pwstrToFfi(lpExistingFileName), util.pwstrToFfi(lpNewFileName)));
}

export function RemoveDirectoryFromAppW(
  lpPathName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libapi_ms_win_core_file_fromapp_l1_1_0_dll.RemoveDirectoryFromAppW(util.pwstrToFfi(lpPathName)));
}

export function ReplaceFileFromAppW(
  lpReplacedFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpReplacementFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpBackupFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwReplaceFlags: number /* u32 */,
  lpExclude: Deno.PointerValue | Uint8Array /* ptr */,
  lpReserved: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libapi_ms_win_core_file_fromapp_l1_1_0_dll.ReplaceFileFromAppW(util.pwstrToFfi(lpReplacedFileName), util.pwstrToFfi(lpReplacementFileName), util.pwstrToFfi(lpBackupFileName), dwReplaceFlags, util.toPointer(lpExclude), util.toPointer(lpReserved)));
}

export function SetFileAttributesFromAppW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwFileAttributes: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libapi_ms_win_core_file_fromapp_l1_1_0_dll.SetFileAttributesFromAppW(util.pwstrToFfi(lpFileName), dwFileAttributes));
}

export function VerFindFileA(
  uFlags: VER_FIND_FILE_FLAGS /* Windows.Win32.Storage.FileSystem.VER_FIND_FILE_FLAGS */,
  szFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  szWinDir: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  szAppDir: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  szCurDir: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  puCurDirLen: Deno.PointerValue | Uint8Array /* ptr */,
  szDestDir: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  puDestDirLen: Deno.PointerValue | Uint8Array /* ptr */,
): VER_FIND_FILE_STATUS /* Windows.Win32.Storage.FileSystem.VER_FIND_FILE_STATUS */ {
  return libVERSION_dll.VerFindFileA(uFlags, util.pstrToFfi(szFileName), util.pstrToFfi(szWinDir), util.pstrToFfi(szAppDir), util.pstrToFfi(szCurDir), util.toPointer(puCurDirLen), util.pstrToFfi(szDestDir), util.toPointer(puDestDirLen));
}

export function VerFindFileW(
  uFlags: VER_FIND_FILE_FLAGS /* Windows.Win32.Storage.FileSystem.VER_FIND_FILE_FLAGS */,
  szFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  szWinDir: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  szAppDir: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  szCurDir: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  puCurDirLen: Deno.PointerValue | Uint8Array /* ptr */,
  szDestDir: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  puDestDirLen: Deno.PointerValue | Uint8Array /* ptr */,
): VER_FIND_FILE_STATUS /* Windows.Win32.Storage.FileSystem.VER_FIND_FILE_STATUS */ {
  return libVERSION_dll.VerFindFileW(uFlags, util.pwstrToFfi(szFileName), util.pwstrToFfi(szWinDir), util.pwstrToFfi(szAppDir), util.pwstrToFfi(szCurDir), util.toPointer(puCurDirLen), util.pwstrToFfi(szDestDir), util.toPointer(puDestDirLen));
}

export function VerInstallFileA(
  uFlags: VER_INSTALL_FILE_FLAGS /* Windows.Win32.Storage.FileSystem.VER_INSTALL_FILE_FLAGS */,
  szSrcFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  szDestFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  szSrcDir: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  szDestDir: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  szCurDir: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  szTmpFile: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  puTmpFileLen: Deno.PointerValue | Uint8Array /* ptr */,
): VER_INSTALL_FILE_STATUS /* Windows.Win32.Storage.FileSystem.VER_INSTALL_FILE_STATUS */ {
  return libVERSION_dll.VerInstallFileA(uFlags, util.pstrToFfi(szSrcFileName), util.pstrToFfi(szDestFileName), util.pstrToFfi(szSrcDir), util.pstrToFfi(szDestDir), util.pstrToFfi(szCurDir), util.pstrToFfi(szTmpFile), util.toPointer(puTmpFileLen));
}

export function VerInstallFileW(
  uFlags: VER_INSTALL_FILE_FLAGS /* Windows.Win32.Storage.FileSystem.VER_INSTALL_FILE_FLAGS */,
  szSrcFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  szDestFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  szSrcDir: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  szDestDir: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  szCurDir: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  szTmpFile: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  puTmpFileLen: Deno.PointerValue | Uint8Array /* ptr */,
): VER_INSTALL_FILE_STATUS /* Windows.Win32.Storage.FileSystem.VER_INSTALL_FILE_STATUS */ {
  return libVERSION_dll.VerInstallFileW(uFlags, util.pwstrToFfi(szSrcFileName), util.pwstrToFfi(szDestFileName), util.pwstrToFfi(szSrcDir), util.pwstrToFfi(szDestDir), util.pwstrToFfi(szCurDir), util.pwstrToFfi(szTmpFile), util.toPointer(puTmpFileLen));
}

export function GetFileVersionInfoSizeA(
  lptstrFilename: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpdwHandle: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libVERSION_dll.GetFileVersionInfoSizeA(util.pstrToFfi(lptstrFilename), util.toPointer(lpdwHandle));
}

export function GetFileVersionInfoSizeW(
  lptstrFilename: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpdwHandle: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libVERSION_dll.GetFileVersionInfoSizeW(util.pwstrToFfi(lptstrFilename), util.toPointer(lpdwHandle));
}

export function GetFileVersionInfoA(
  lptstrFilename: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwHandle: number /* u32 */,
  dwLen: number /* u32 */,
  lpData: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libVERSION_dll.GetFileVersionInfoA(util.pstrToFfi(lptstrFilename), dwHandle, dwLen, util.toPointer(lpData)));
}

export function GetFileVersionInfoW(
  lptstrFilename: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwHandle: number /* u32 */,
  dwLen: number /* u32 */,
  lpData: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libVERSION_dll.GetFileVersionInfoW(util.pwstrToFfi(lptstrFilename), dwHandle, dwLen, util.toPointer(lpData)));
}

export function GetFileVersionInfoSizeExA(
  dwFlags: GET_FILE_VERSION_INFO_FLAGS /* Windows.Win32.Storage.FileSystem.GET_FILE_VERSION_INFO_FLAGS */,
  lpwstrFilename: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpdwHandle: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libVERSION_dll.GetFileVersionInfoSizeExA(dwFlags, util.pstrToFfi(lpwstrFilename), util.toPointer(lpdwHandle));
}

export function GetFileVersionInfoSizeExW(
  dwFlags: GET_FILE_VERSION_INFO_FLAGS /* Windows.Win32.Storage.FileSystem.GET_FILE_VERSION_INFO_FLAGS */,
  lpwstrFilename: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpdwHandle: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libVERSION_dll.GetFileVersionInfoSizeExW(dwFlags, util.pwstrToFfi(lpwstrFilename), util.toPointer(lpdwHandle));
}

export function GetFileVersionInfoExA(
  dwFlags: GET_FILE_VERSION_INFO_FLAGS /* Windows.Win32.Storage.FileSystem.GET_FILE_VERSION_INFO_FLAGS */,
  lpwstrFilename: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwHandle: number /* u32 */,
  dwLen: number /* u32 */,
  lpData: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libVERSION_dll.GetFileVersionInfoExA(dwFlags, util.pstrToFfi(lpwstrFilename), dwHandle, dwLen, util.toPointer(lpData)));
}

export function GetFileVersionInfoExW(
  dwFlags: GET_FILE_VERSION_INFO_FLAGS /* Windows.Win32.Storage.FileSystem.GET_FILE_VERSION_INFO_FLAGS */,
  lpwstrFilename: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwHandle: number /* u32 */,
  dwLen: number /* u32 */,
  lpData: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libVERSION_dll.GetFileVersionInfoExW(dwFlags, util.pwstrToFfi(lpwstrFilename), dwHandle, dwLen, util.toPointer(lpData)));
}

export function VerLanguageNameA(
  wLang: number /* u32 */,
  szLang: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchLang: number /* u32 */,
): number /* u32 */ {
  return libKERNEL32_dll.VerLanguageNameA(wLang, util.pstrToFfi(szLang), cchLang);
}

export function VerLanguageNameW(
  wLang: number /* u32 */,
  szLang: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchLang: number /* u32 */,
): number /* u32 */ {
  return libKERNEL32_dll.VerLanguageNameW(wLang, util.pwstrToFfi(szLang), cchLang);
}

export function VerQueryValueA(
  pBlock: Deno.PointerValue | Uint8Array /* ptr */,
  lpSubBlock: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lplpBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  puLen: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libVERSION_dll.VerQueryValueA(util.toPointer(pBlock), util.pstrToFfi(lpSubBlock), util.toPointer(lplpBuffer), util.toPointer(puLen)));
}

export function VerQueryValueW(
  pBlock: Deno.PointerValue | Uint8Array /* ptr */,
  lpSubBlock: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lplpBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  puLen: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libVERSION_dll.VerQueryValueW(util.toPointer(pBlock), util.pwstrToFfi(lpSubBlock), util.toPointer(lplpBuffer), util.toPointer(puLen)));
}

export function LsnEqual(
  plsn1: Deno.PointerValue | Uint8Array /* ptr */,
  plsn2: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.BOOLEAN */ {
  return libclfsw32_dll.LsnEqual(util.toPointer(plsn1), util.toPointer(plsn2));
}

export function LsnLess(
  plsn1: Deno.PointerValue | Uint8Array /* ptr */,
  plsn2: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.BOOLEAN */ {
  return libclfsw32_dll.LsnLess(util.toPointer(plsn1), util.toPointer(plsn2));
}

export function LsnGreater(
  plsn1: Deno.PointerValue | Uint8Array /* ptr */,
  plsn2: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.BOOLEAN */ {
  return libclfsw32_dll.LsnGreater(util.toPointer(plsn1), util.toPointer(plsn2));
}

export function LsnNull(
  plsn: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.BOOLEAN */ {
  return libclfsw32_dll.LsnNull(util.toPointer(plsn));
}

export function LsnContainer(
  plsn: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libclfsw32_dll.LsnContainer(util.toPointer(plsn));
}

export function LsnCreate(
  cidContainer: number /* u32 */,
  offBlock: number /* u32 */,
  cRecord: number /* u32 */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.CLS_LSN */ {
  return libclfsw32_dll.LsnCreate(cidContainer, offBlock, cRecord);
}

export function LsnBlockOffset(
  plsn: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libclfsw32_dll.LsnBlockOffset(util.toPointer(plsn));
}

export function LsnRecordSequence(
  plsn: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libclfsw32_dll.LsnRecordSequence(util.toPointer(plsn));
}

export function LsnInvalid(
  plsn: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.BOOLEAN */ {
  return libclfsw32_dll.LsnInvalid(util.toPointer(plsn));
}

export function LsnIncrement(
  plsn: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.CLS_LSN */ {
  return libclfsw32_dll.LsnIncrement(util.toPointer(plsn));
}

export function CreateLogFile(
  pszLogFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  fDesiredAccess: FILE_ACCESS_FLAGS /* Windows.Win32.Storage.FileSystem.FILE_ACCESS_FLAGS */,
  dwShareMode: FILE_SHARE_MODE /* Windows.Win32.Storage.FileSystem.FILE_SHARE_MODE */,
  psaLogFile: Deno.PointerValue | Uint8Array /* ptr */,
  fCreateDisposition: FILE_CREATION_DISPOSITION /* Windows.Win32.Storage.FileSystem.FILE_CREATION_DISPOSITION */,
  fFlagsAndAttributes: FILE_FLAGS_AND_ATTRIBUTES /* Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libclfsw32_dll.CreateLogFile(util.pwstrToFfi(pszLogFileName), fDesiredAccess, dwShareMode, util.toPointer(psaLogFile), fCreateDisposition, fFlagsAndAttributes);
}

export function DeleteLogByHandle(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.DeleteLogByHandle(util.toPointer(hLog)));
}

export function DeleteLogFile(
  pszLogFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  pvReserved: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.DeleteLogFile(util.pwstrToFfi(pszLogFileName), util.toPointer(pvReserved)));
}

export function AddLogContainer(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  pcbContainer: Deno.PointerValue | Uint8Array /* ptr */,
  pwszContainerPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  pReserved: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.AddLogContainer(util.toPointer(hLog), util.toPointer(pcbContainer), util.pwstrToFfi(pwszContainerPath), util.toPointer(pReserved)));
}

export function AddLogContainerSet(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  cContainer: number /* u16 */,
  pcbContainer: Deno.PointerValue | Uint8Array /* ptr */,
  rgwszContainerPath: Deno.PointerValue | Uint8Array /* ptr */,
  pReserved: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.AddLogContainerSet(util.toPointer(hLog), cContainer, util.toPointer(pcbContainer), util.toPointer(rgwszContainerPath), util.toPointer(pReserved)));
}

export function RemoveLogContainer(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  pwszContainerPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  fForce: boolean /* Windows.Win32.Foundation.BOOL */,
  pReserved: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.RemoveLogContainer(util.toPointer(hLog), util.pwstrToFfi(pwszContainerPath), util.boolToFfi(fForce), util.toPointer(pReserved)));
}

export function RemoveLogContainerSet(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  cContainer: number /* u16 */,
  rgwszContainerPath: Deno.PointerValue | Uint8Array /* ptr */,
  fForce: boolean /* Windows.Win32.Foundation.BOOL */,
  pReserved: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.RemoveLogContainerSet(util.toPointer(hLog), cContainer, util.toPointer(rgwszContainerPath), util.boolToFfi(fForce), util.toPointer(pReserved)));
}

export function SetLogArchiveTail(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  plsnArchiveTail: Deno.PointerValue | Uint8Array /* ptr */,
  pReserved: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.SetLogArchiveTail(util.toPointer(hLog), util.toPointer(plsnArchiveTail), util.toPointer(pReserved)));
}

export function SetEndOfLog(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  plsnEnd: Deno.PointerValue | Uint8Array /* ptr */,
  lpOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.SetEndOfLog(util.toPointer(hLog), util.toPointer(plsnEnd), util.toPointer(lpOverlapped)));
}

export function TruncateLog(
  pvMarshal: Deno.PointerValue | Uint8Array /* ptr */,
  plsnEnd: Deno.PointerValue | Uint8Array /* ptr */,
  lpOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.TruncateLog(util.toPointer(pvMarshal), util.toPointer(plsnEnd), util.toPointer(lpOverlapped)));
}

export function CreateLogContainerScanContext(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  cFromContainer: number /* u32 */,
  cContainers: number /* u32 */,
  eScanMode: number /* u8 */,
  pcxScan: Deno.PointerValue | Uint8Array /* ptr */,
  pOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.CreateLogContainerScanContext(util.toPointer(hLog), cFromContainer, cContainers, eScanMode, util.toPointer(pcxScan), util.toPointer(pOverlapped)));
}

export function ScanLogContainers(
  pcxScan: Deno.PointerValue | Uint8Array /* ptr */,
  eScanMode: number /* u8 */,
  pReserved: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.ScanLogContainers(util.toPointer(pcxScan), eScanMode, util.toPointer(pReserved)));
}

export function AlignReservedLog(
  pvMarshal: Deno.PointerValue | Uint8Array /* ptr */,
  cReservedRecords: number /* u32 */,
  rgcbReservation: Deno.PointerValue | Uint8Array /* ptr */,
  pcbAlignReservation: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.AlignReservedLog(util.toPointer(pvMarshal), cReservedRecords, util.toPointer(rgcbReservation), util.toPointer(pcbAlignReservation)));
}

export function AllocReservedLog(
  pvMarshal: Deno.PointerValue | Uint8Array /* ptr */,
  cReservedRecords: number /* u32 */,
  pcbAdjustment: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.AllocReservedLog(util.toPointer(pvMarshal), cReservedRecords, util.toPointer(pcbAdjustment)));
}

export function FreeReservedLog(
  pvMarshal: Deno.PointerValue | Uint8Array /* ptr */,
  cReservedRecords: number /* u32 */,
  pcbAdjustment: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.FreeReservedLog(util.toPointer(pvMarshal), cReservedRecords, util.toPointer(pcbAdjustment)));
}

export function GetLogFileInformation(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  pinfoBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  cbBuffer: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.GetLogFileInformation(util.toPointer(hLog), util.toPointer(pinfoBuffer), util.toPointer(cbBuffer)));
}

export function SetLogArchiveMode(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  eMode: CLFS_LOG_ARCHIVE_MODE /* Windows.Win32.Storage.FileSystem.CLFS_LOG_ARCHIVE_MODE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.SetLogArchiveMode(util.toPointer(hLog), eMode));
}

export function ReadLogRestartArea(
  pvMarshal: Deno.PointerValue | Uint8Array /* ptr */,
  ppvRestartBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  pcbRestartBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  plsn: Deno.PointerValue | Uint8Array /* ptr */,
  ppvContext: Deno.PointerValue | Uint8Array /* ptr */,
  pOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.ReadLogRestartArea(util.toPointer(pvMarshal), util.toPointer(ppvRestartBuffer), util.toPointer(pcbRestartBuffer), util.toPointer(plsn), util.toPointer(ppvContext), util.toPointer(pOverlapped)));
}

export function ReadPreviousLogRestartArea(
  pvReadContext: Deno.PointerValue | Uint8Array /* ptr */,
  ppvRestartBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  pcbRestartBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  plsnRestart: Deno.PointerValue | Uint8Array /* ptr */,
  pOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.ReadPreviousLogRestartArea(util.toPointer(pvReadContext), util.toPointer(ppvRestartBuffer), util.toPointer(pcbRestartBuffer), util.toPointer(plsnRestart), util.toPointer(pOverlapped)));
}

export function WriteLogRestartArea(
  pvMarshal: Deno.PointerValue | Uint8Array /* ptr */,
  pvRestartBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  cbRestartBuffer: number /* u32 */,
  plsnBase: Deno.PointerValue | Uint8Array /* ptr */,
  fFlags: CLFS_FLAG /* Windows.Win32.Storage.FileSystem.CLFS_FLAG */,
  pcbWritten: Deno.PointerValue | Uint8Array /* ptr */,
  plsnNext: Deno.PointerValue | Uint8Array /* ptr */,
  pOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.WriteLogRestartArea(util.toPointer(pvMarshal), util.toPointer(pvRestartBuffer), cbRestartBuffer, util.toPointer(plsnBase), fFlags, util.toPointer(pcbWritten), util.toPointer(plsnNext), util.toPointer(pOverlapped)));
}

export function GetLogReservationInfo(
  pvMarshal: Deno.PointerValue | Uint8Array /* ptr */,
  pcbRecordNumber: Deno.PointerValue | Uint8Array /* ptr */,
  pcbUserReservation: Deno.PointerValue | Uint8Array /* ptr */,
  pcbCommitReservation: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.GetLogReservationInfo(util.toPointer(pvMarshal), util.toPointer(pcbRecordNumber), util.toPointer(pcbUserReservation), util.toPointer(pcbCommitReservation)));
}

export function AdvanceLogBase(
  pvMarshal: Deno.PointerValue | Uint8Array /* ptr */,
  plsnBase: Deno.PointerValue | Uint8Array /* ptr */,
  fFlags: number /* u32 */,
  pOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.AdvanceLogBase(util.toPointer(pvMarshal), util.toPointer(plsnBase), fFlags, util.toPointer(pOverlapped)));
}

export function CloseAndResetLogFile(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.CloseAndResetLogFile(util.toPointer(hLog)));
}

export function CreateLogMarshallingArea(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  pfnAllocBuffer: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.CLFS_BLOCK_ALLOCATION */,
  pfnFreeBuffer: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.CLFS_BLOCK_DEALLOCATION */,
  pvBlockAllocContext: Deno.PointerValue | Uint8Array /* ptr */,
  cbMarshallingBuffer: number /* u32 */,
  cMaxWriteBuffers: number /* u32 */,
  cMaxReadBuffers: number /* u32 */,
  ppvMarshal: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.CreateLogMarshallingArea(util.toPointer(hLog), util.toPointer(pfnAllocBuffer), util.toPointer(pfnFreeBuffer), util.toPointer(pvBlockAllocContext), cbMarshallingBuffer, cMaxWriteBuffers, cMaxReadBuffers, util.toPointer(ppvMarshal)));
}

export function DeleteLogMarshallingArea(
  pvMarshal: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.DeleteLogMarshallingArea(util.toPointer(pvMarshal)));
}

export function ReserveAndAppendLog(
  pvMarshal: Deno.PointerValue | Uint8Array /* ptr */,
  rgWriteEntries: Deno.PointerValue | Uint8Array /* ptr */,
  cWriteEntries: number /* u32 */,
  plsnUndoNext: Deno.PointerValue | Uint8Array /* ptr */,
  plsnPrevious: Deno.PointerValue | Uint8Array /* ptr */,
  cReserveRecords: number /* u32 */,
  rgcbReservation: Deno.PointerValue | Uint8Array /* ptr */,
  fFlags: CLFS_FLAG /* Windows.Win32.Storage.FileSystem.CLFS_FLAG */,
  plsn: Deno.PointerValue | Uint8Array /* ptr */,
  pOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.ReserveAndAppendLog(util.toPointer(pvMarshal), util.toPointer(rgWriteEntries), cWriteEntries, util.toPointer(plsnUndoNext), util.toPointer(plsnPrevious), cReserveRecords, util.toPointer(rgcbReservation), fFlags, util.toPointer(plsn), util.toPointer(pOverlapped)));
}

export function ReserveAndAppendLogAligned(
  pvMarshal: Deno.PointerValue | Uint8Array /* ptr */,
  rgWriteEntries: Deno.PointerValue | Uint8Array /* ptr */,
  cWriteEntries: number /* u32 */,
  cbEntryAlignment: number /* u32 */,
  plsnUndoNext: Deno.PointerValue | Uint8Array /* ptr */,
  plsnPrevious: Deno.PointerValue | Uint8Array /* ptr */,
  cReserveRecords: number /* u32 */,
  rgcbReservation: Deno.PointerValue | Uint8Array /* ptr */,
  fFlags: CLFS_FLAG /* Windows.Win32.Storage.FileSystem.CLFS_FLAG */,
  plsn: Deno.PointerValue | Uint8Array /* ptr */,
  pOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.ReserveAndAppendLogAligned(util.toPointer(pvMarshal), util.toPointer(rgWriteEntries), cWriteEntries, cbEntryAlignment, util.toPointer(plsnUndoNext), util.toPointer(plsnPrevious), cReserveRecords, util.toPointer(rgcbReservation), fFlags, util.toPointer(plsn), util.toPointer(pOverlapped)));
}

export function FlushLogBuffers(
  pvMarshal: Deno.PointerValue | Uint8Array /* ptr */,
  pOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.FlushLogBuffers(util.toPointer(pvMarshal), util.toPointer(pOverlapped)));
}

export function FlushLogToLsn(
  pvMarshalContext: Deno.PointerValue | Uint8Array /* ptr */,
  plsnFlush: Deno.PointerValue | Uint8Array /* ptr */,
  plsnLastFlushed: Deno.PointerValue | Uint8Array /* ptr */,
  pOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.FlushLogToLsn(util.toPointer(pvMarshalContext), util.toPointer(plsnFlush), util.toPointer(plsnLastFlushed), util.toPointer(pOverlapped)));
}

export function ReadLogRecord(
  pvMarshal: Deno.PointerValue | Uint8Array /* ptr */,
  plsnFirst: Deno.PointerValue | Uint8Array /* ptr */,
  eContextMode: CLFS_CONTEXT_MODE /* Windows.Win32.Storage.FileSystem.CLFS_CONTEXT_MODE */,
  ppvReadBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  pcbReadBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  peRecordType: Deno.PointerValue | Uint8Array /* ptr */,
  plsnUndoNext: Deno.PointerValue | Uint8Array /* ptr */,
  plsnPrevious: Deno.PointerValue | Uint8Array /* ptr */,
  ppvReadContext: Deno.PointerValue | Uint8Array /* ptr */,
  pOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.ReadLogRecord(util.toPointer(pvMarshal), util.toPointer(plsnFirst), eContextMode, util.toPointer(ppvReadBuffer), util.toPointer(pcbReadBuffer), util.toPointer(peRecordType), util.toPointer(plsnUndoNext), util.toPointer(plsnPrevious), util.toPointer(ppvReadContext), util.toPointer(pOverlapped)));
}

export function ReadNextLogRecord(
  pvReadContext: Deno.PointerValue | Uint8Array /* ptr */,
  ppvBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  pcbBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  peRecordType: Deno.PointerValue | Uint8Array /* ptr */,
  plsnUser: Deno.PointerValue | Uint8Array /* ptr */,
  plsnUndoNext: Deno.PointerValue | Uint8Array /* ptr */,
  plsnPrevious: Deno.PointerValue | Uint8Array /* ptr */,
  plsnRecord: Deno.PointerValue | Uint8Array /* ptr */,
  pOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.ReadNextLogRecord(util.toPointer(pvReadContext), util.toPointer(ppvBuffer), util.toPointer(pcbBuffer), util.toPointer(peRecordType), util.toPointer(plsnUser), util.toPointer(plsnUndoNext), util.toPointer(plsnPrevious), util.toPointer(plsnRecord), util.toPointer(pOverlapped)));
}

export function TerminateReadLog(
  pvCursorContext: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.TerminateReadLog(util.toPointer(pvCursorContext)));
}

export function PrepareLogArchive(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  pszBaseLogFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cLen: number /* u32 */,
  plsnLow: Deno.PointerValue | Uint8Array /* ptr */,
  plsnHigh: Deno.PointerValue | Uint8Array /* ptr */,
  pcActualLength: Deno.PointerValue | Uint8Array /* ptr */,
  poffBaseLogFileData: Deno.PointerValue | Uint8Array /* ptr */,
  pcbBaseLogFileLength: Deno.PointerValue | Uint8Array /* ptr */,
  plsnBase: Deno.PointerValue | Uint8Array /* ptr */,
  plsnLast: Deno.PointerValue | Uint8Array /* ptr */,
  plsnCurrentArchiveTail: Deno.PointerValue | Uint8Array /* ptr */,
  ppvArchiveContext: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.PrepareLogArchive(util.toPointer(hLog), util.pwstrToFfi(pszBaseLogFileName), cLen, util.toPointer(plsnLow), util.toPointer(plsnHigh), util.toPointer(pcActualLength), util.toPointer(poffBaseLogFileData), util.toPointer(pcbBaseLogFileLength), util.toPointer(plsnBase), util.toPointer(plsnLast), util.toPointer(plsnCurrentArchiveTail), util.toPointer(ppvArchiveContext)));
}

export function ReadLogArchiveMetadata(
  pvArchiveContext: Deno.PointerValue | Uint8Array /* ptr */,
  cbOffset: number /* u32 */,
  cbBytesToRead: number /* u32 */,
  pbReadBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  pcbBytesRead: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.ReadLogArchiveMetadata(util.toPointer(pvArchiveContext), cbOffset, cbBytesToRead, util.toPointer(pbReadBuffer), util.toPointer(pcbBytesRead)));
}

export function GetNextLogArchiveExtent(
  pvArchiveContext: Deno.PointerValue | Uint8Array /* ptr */,
  rgadExtent: Deno.PointerValue | Uint8Array /* ptr */,
  cDescriptors: number /* u32 */,
  pcDescriptorsReturned: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.GetNextLogArchiveExtent(util.toPointer(pvArchiveContext), util.toPointer(rgadExtent), cDescriptors, util.toPointer(pcDescriptorsReturned)));
}

export function TerminateLogArchive(
  pvArchiveContext: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.TerminateLogArchive(util.toPointer(pvArchiveContext)));
}

export function ValidateLog(
  pszLogFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  psaLogFile: Deno.PointerValue | Uint8Array /* ptr */,
  pinfoBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  pcbBuffer: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.ValidateLog(util.pwstrToFfi(pszLogFileName), util.toPointer(psaLogFile), util.toPointer(pinfoBuffer), util.toPointer(pcbBuffer)));
}

export function GetLogContainerName(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  cidLogicalContainer: number /* u32 */,
  pwstrContainerName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cLenContainerName: number /* u32 */,
  pcActualLenContainerName: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.GetLogContainerName(util.toPointer(hLog), cidLogicalContainer, util.pwstrToFfi(pwstrContainerName), cLenContainerName, util.toPointer(pcActualLenContainerName)));
}

export function GetLogIoStatistics(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  pvStatsBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  cbStatsBuffer: number /* u32 */,
  eStatsClass: CLFS_IOSTATS_CLASS /* Windows.Win32.Storage.FileSystem.CLFS_IOSTATS_CLASS */,
  pcbStatsWritten: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.GetLogIoStatistics(util.toPointer(hLog), util.toPointer(pvStatsBuffer), cbStatsBuffer, eStatsClass, util.toPointer(pcbStatsWritten)));
}

export function RegisterManageableLogClient(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  pCallbacks: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.RegisterManageableLogClient(util.toPointer(hLog), util.toPointer(pCallbacks)));
}

export function DeregisterManageableLogClient(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.DeregisterManageableLogClient(util.toPointer(hLog)));
}

export function ReadLogNotification(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  pNotification: Deno.PointerValue | Uint8Array /* ptr */,
  lpOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.ReadLogNotification(util.toPointer(hLog), util.toPointer(pNotification), util.toPointer(lpOverlapped)));
}

export function InstallLogPolicy(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  pPolicy: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.InstallLogPolicy(util.toPointer(hLog), util.toPointer(pPolicy)));
}

export function RemoveLogPolicy(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  ePolicyType: CLFS_MGMT_POLICY_TYPE /* Windows.Win32.Storage.FileSystem.CLFS_MGMT_POLICY_TYPE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.RemoveLogPolicy(util.toPointer(hLog), ePolicyType));
}

export function QueryLogPolicy(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  ePolicyType: CLFS_MGMT_POLICY_TYPE /* Windows.Win32.Storage.FileSystem.CLFS_MGMT_POLICY_TYPE */,
  pPolicyBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  pcbPolicyBuffer: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.QueryLogPolicy(util.toPointer(hLog), ePolicyType, util.toPointer(pPolicyBuffer), util.toPointer(pcbPolicyBuffer)));
}

export function SetLogFileSizeWithPolicy(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  pDesiredSize: Deno.PointerValue | Uint8Array /* ptr */,
  pResultingSize: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.SetLogFileSizeWithPolicy(util.toPointer(hLog), util.toPointer(pDesiredSize), util.toPointer(pResultingSize)));
}

export function HandleLogFull(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.HandleLogFull(util.toPointer(hLog)));
}

export function LogTailAdvanceFailure(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  dwReason: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.LogTailAdvanceFailure(util.toPointer(hLog), dwReason));
}

export function RegisterForLogWriteNotification(
  hLog: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  cbThreshold: number /* u32 */,
  fEnable: boolean /* Windows.Win32.Foundation.BOOL */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libclfsw32_dll.RegisterForLogWriteNotification(util.toPointer(hLog), cbThreshold, util.boolToFfi(fEnable)));
}

export function QueryUsersOnEncryptedFile(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  pUsers: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libADVAPI32_dll.QueryUsersOnEncryptedFile(util.pwstrToFfi(lpFileName), util.toPointer(pUsers));
}

export function QueryRecoveryAgentsOnEncryptedFile(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  pRecoveryAgents: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libADVAPI32_dll.QueryRecoveryAgentsOnEncryptedFile(util.pwstrToFfi(lpFileName), util.toPointer(pRecoveryAgents));
}

export function RemoveUsersFromEncryptedFile(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  pHashes: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libADVAPI32_dll.RemoveUsersFromEncryptedFile(util.pwstrToFfi(lpFileName), util.toPointer(pHashes));
}

export function AddUsersToEncryptedFile(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  pEncryptionCertificates: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libADVAPI32_dll.AddUsersToEncryptedFile(util.pwstrToFfi(lpFileName), util.toPointer(pEncryptionCertificates));
}

export function SetUserFileEncryptionKey(
  pEncryptionCertificate: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libADVAPI32_dll.SetUserFileEncryptionKey(util.toPointer(pEncryptionCertificate));
}

export function SetUserFileEncryptionKeyEx(
  pEncryptionCertificate: Deno.PointerValue | Uint8Array /* ptr */,
  dwCapabilities: number /* u32 */,
  dwFlags: number /* u32 */,
  pvReserved: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libADVAPI32_dll.SetUserFileEncryptionKeyEx(util.toPointer(pEncryptionCertificate), dwCapabilities, dwFlags, util.toPointer(pvReserved));
}

export function FreeEncryptionCertificateHashList(
  pUsers: Deno.PointerValue | Uint8Array /* ptr */,
): void /* void */ {
  return libADVAPI32_dll.FreeEncryptionCertificateHashList(util.toPointer(pUsers));
}

export function EncryptionDisable(
  DirPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  Disable: boolean /* Windows.Win32.Foundation.BOOL */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libADVAPI32_dll.EncryptionDisable(util.pwstrToFfi(DirPath), util.boolToFfi(Disable)));
}

export function DuplicateEncryptionInfoFile(
  SrcFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  DstFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwCreationDistribution: number /* u32 */,
  dwAttributes: number /* u32 */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libADVAPI32_dll.DuplicateEncryptionInfoFile(util.pwstrToFfi(SrcFileName), util.pwstrToFfi(DstFileName), dwCreationDistribution, dwAttributes, util.toPointer(lpSecurityAttributes));
}

export function GetEncryptedFileMetadata(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  pcbMetadata: Deno.PointerValue | Uint8Array /* ptr */,
  ppbMetadata: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libADVAPI32_dll.GetEncryptedFileMetadata(util.pwstrToFfi(lpFileName), util.toPointer(pcbMetadata), util.toPointer(ppbMetadata));
}

export function SetEncryptedFileMetadata(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  pbOldMetadata: Deno.PointerValue | Uint8Array /* ptr */,
  pbNewMetadata: Deno.PointerValue | Uint8Array /* ptr */,
  pOwnerHash: Deno.PointerValue | Uint8Array /* ptr */,
  dwOperation: number /* u32 */,
  pCertificatesAdded: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libADVAPI32_dll.SetEncryptedFileMetadata(util.pwstrToFfi(lpFileName), util.toPointer(pbOldMetadata), util.toPointer(pbNewMetadata), util.toPointer(pOwnerHash), dwOperation, util.toPointer(pCertificatesAdded));
}

export function FreeEncryptedFileMetadata(
  pbMetadata: Deno.PointerValue | Uint8Array /* ptr */,
): void /* void */ {
  return libADVAPI32_dll.FreeEncryptedFileMetadata(util.toPointer(pbMetadata));
}

export function LZStart(): number /* i32 */ {
  return libKERNEL32_dll.LZStart();
}

export function LZDone(): void /* void */ {
  return libKERNEL32_dll.LZDone();
}

export function CopyLZFile(
  hfSource: number /* i32 */,
  hfDest: number /* i32 */,
): number /* i32 */ {
  return libKERNEL32_dll.CopyLZFile(hfSource, hfDest);
}

export function LZCopy(
  hfSource: number /* i32 */,
  hfDest: number /* i32 */,
): number /* i32 */ {
  return libKERNEL32_dll.LZCopy(hfSource, hfDest);
}

export function LZInit(
  hfSource: number /* i32 */,
): number /* i32 */ {
  return libKERNEL32_dll.LZInit(hfSource);
}

export function GetExpandedNameA(
  lpszSource: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpszBuffer: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): number /* i32 */ {
  return libKERNEL32_dll.GetExpandedNameA(util.pstrToFfi(lpszSource), util.pstrToFfi(lpszBuffer));
}

export function GetExpandedNameW(
  lpszSource: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpszBuffer: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): number /* i32 */ {
  return libKERNEL32_dll.GetExpandedNameW(util.pwstrToFfi(lpszSource), util.pwstrToFfi(lpszBuffer));
}

export function LZOpenFileA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpReOpenBuf: Deno.PointerValue | Uint8Array /* ptr */,
  wStyle: LZOPENFILE_STYLE /* Windows.Win32.Storage.FileSystem.LZOPENFILE_STYLE */,
): number /* i32 */ {
  return libKERNEL32_dll.LZOpenFileA(util.pstrToFfi(lpFileName), util.toPointer(lpReOpenBuf), wStyle);
}

export function LZOpenFileW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpReOpenBuf: Deno.PointerValue | Uint8Array /* ptr */,
  wStyle: LZOPENFILE_STYLE /* Windows.Win32.Storage.FileSystem.LZOPENFILE_STYLE */,
): number /* i32 */ {
  return libKERNEL32_dll.LZOpenFileW(util.pwstrToFfi(lpFileName), util.toPointer(lpReOpenBuf), wStyle);
}

export function LZSeek(
  hFile: number /* i32 */,
  lOffset: number /* i32 */,
  iOrigin: number /* i32 */,
): number /* i32 */ {
  return libKERNEL32_dll.LZSeek(hFile, lOffset, iOrigin);
}

export function LZRead(
  hFile: number /* i32 */,
  lpBuffer: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cbRead: number /* i32 */,
): number /* i32 */ {
  return libKERNEL32_dll.LZRead(hFile, util.pstrToFfi(lpBuffer), cbRead);
}

export function LZClose(
  hFile: number /* i32 */,
): void /* void */ {
  return libKERNEL32_dll.LZClose(hFile);
}

export function WofShouldCompressBinaries(
  Volume: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  Algorithm: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libWOFUTIL_dll.WofShouldCompressBinaries(util.pwstrToFfi(Volume), util.toPointer(Algorithm)));
}

export function WofGetDriverVersion(
  FileOrVolumeHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  Provider: number /* u32 */,
  WofVersion: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libWOFUTIL_dll.WofGetDriverVersion(util.toPointer(FileOrVolumeHandle), Provider, util.toPointer(WofVersion));
}

export function WofSetFileDataLocation(
  FileHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  Provider: number /* u32 */,
  ExternalFileInfo: Deno.PointerValue | Uint8Array /* ptr */,
  Length: number /* u32 */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libWOFUTIL_dll.WofSetFileDataLocation(util.toPointer(FileHandle), Provider, util.toPointer(ExternalFileInfo), Length);
}

export function WofIsExternalFile(
  FilePath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  IsExternalFile: Deno.PointerValue | Uint8Array /* ptr */,
  Provider: Deno.PointerValue | Uint8Array /* ptr */,
  ExternalFileInfo: Deno.PointerValue | Uint8Array /* ptr */,
  BufferLength: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libWOFUTIL_dll.WofIsExternalFile(util.pwstrToFfi(FilePath), util.toPointer(IsExternalFile), util.toPointer(Provider), util.toPointer(ExternalFileInfo), util.toPointer(BufferLength));
}

export function WofEnumEntries(
  VolumeName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  Provider: number /* u32 */,
  EnumProc: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.WofEnumEntryProc */,
  UserData: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libWOFUTIL_dll.WofEnumEntries(util.pwstrToFfi(VolumeName), Provider, util.toPointer(EnumProc), util.toPointer(UserData));
}

export function WofWimAddEntry(
  VolumeName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  WimPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  WimType: number /* u32 */,
  WimIndex: number /* u32 */,
  DataSourceId: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libWOFUTIL_dll.WofWimAddEntry(util.pwstrToFfi(VolumeName), util.pwstrToFfi(WimPath), WimType, WimIndex, util.toPointer(DataSourceId));
}

export function WofWimEnumFiles(
  VolumeName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  DataSourceId: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LARGE_INTEGER */,
  EnumProc: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.WofEnumFilesProc */,
  UserData: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libWOFUTIL_dll.WofWimEnumFiles(util.pwstrToFfi(VolumeName), util.toPointer(DataSourceId), util.toPointer(EnumProc), util.toPointer(UserData));
}

export function WofWimSuspendEntry(
  VolumeName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  DataSourceId: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LARGE_INTEGER */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libWOFUTIL_dll.WofWimSuspendEntry(util.pwstrToFfi(VolumeName), util.toPointer(DataSourceId));
}

export function WofWimRemoveEntry(
  VolumeName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  DataSourceId: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LARGE_INTEGER */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libWOFUTIL_dll.WofWimRemoveEntry(util.pwstrToFfi(VolumeName), util.toPointer(DataSourceId));
}

export function WofWimUpdateEntry(
  VolumeName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  DataSourceId: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.LARGE_INTEGER */,
  NewWimPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libWOFUTIL_dll.WofWimUpdateEntry(util.pwstrToFfi(VolumeName), util.toPointer(DataSourceId), util.pwstrToFfi(NewWimPath));
}

export function WofFileEnumFiles(
  VolumeName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  Algorithm: number /* u32 */,
  EnumProc: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.WofEnumFilesProc */,
  UserData: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libWOFUTIL_dll.WofFileEnumFiles(util.pwstrToFfi(VolumeName), Algorithm, util.toPointer(EnumProc), util.toPointer(UserData));
}

export function TxfLogCreateFileReadContext(
  LogPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  BeginningLsn: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.CLS_LSN */,
  EndingLsn: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.CLS_LSN */,
  TxfFileId: Deno.PointerValue | Uint8Array /* ptr */,
  TxfLogContext: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libtxfw32_dll.TxfLogCreateFileReadContext(util.pwstrToFfi(LogPath), util.toPointer(BeginningLsn), util.toPointer(EndingLsn), util.toPointer(TxfFileId), util.toPointer(TxfLogContext)));
}

export function TxfLogCreateRangeReadContext(
  LogPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  BeginningLsn: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.CLS_LSN */,
  EndingLsn: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.CLS_LSN */,
  BeginningVirtualClock: Deno.PointerValue | Uint8Array /* ptr */,
  EndingVirtualClock: Deno.PointerValue | Uint8Array /* ptr */,
  RecordTypeMask: number /* u32 */,
  TxfLogContext: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libtxfw32_dll.TxfLogCreateRangeReadContext(util.pwstrToFfi(LogPath), util.toPointer(BeginningLsn), util.toPointer(EndingLsn), util.toPointer(BeginningVirtualClock), util.toPointer(EndingVirtualClock), RecordTypeMask, util.toPointer(TxfLogContext)));
}

export function TxfLogDestroyReadContext(
  TxfLogContext: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libtxfw32_dll.TxfLogDestroyReadContext(util.toPointer(TxfLogContext)));
}

export function TxfLogReadRecords(
  TxfLogContext: Deno.PointerValue | Uint8Array /* ptr */,
  BufferLength: number /* u32 */,
  Buffer: Deno.PointerValue | Uint8Array /* ptr */,
  BytesUsed: Deno.PointerValue | Uint8Array /* ptr */,
  RecordCount: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libtxfw32_dll.TxfLogReadRecords(util.toPointer(TxfLogContext), BufferLength, util.toPointer(Buffer), util.toPointer(BytesUsed), util.toPointer(RecordCount)));
}

export function TxfReadMetadataInfo(
  FileHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TxfFileId: Deno.PointerValue | Uint8Array /* ptr */,
  LastLsn: Deno.PointerValue | Uint8Array /* ptr */,
  TransactionState: Deno.PointerValue | Uint8Array /* ptr */,
  LockingTransaction: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libtxfw32_dll.TxfReadMetadataInfo(util.toPointer(FileHandle), util.toPointer(TxfFileId), util.toPointer(LastLsn), util.toPointer(TransactionState), util.toPointer(LockingTransaction)));
}

export function TxfLogRecordGetFileName(
  RecordBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  RecordBufferLengthInBytes: number /* u32 */,
  NameBuffer: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  NameBufferLengthInBytes: Deno.PointerValue | Uint8Array /* ptr */,
  TxfId: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libtxfw32_dll.TxfLogRecordGetFileName(util.toPointer(RecordBuffer), RecordBufferLengthInBytes, util.pwstrToFfi(NameBuffer), util.toPointer(NameBufferLengthInBytes), util.toPointer(TxfId)));
}

export function TxfLogRecordGetGenericType(
  RecordBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  RecordBufferLengthInBytes: number /* u32 */,
  GenericType: Deno.PointerValue | Uint8Array /* ptr */,
  VirtualClock: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libtxfw32_dll.TxfLogRecordGetGenericType(util.toPointer(RecordBuffer), RecordBufferLengthInBytes, util.toPointer(GenericType), util.toPointer(VirtualClock)));
}

export function TxfSetThreadMiniVersionForCreate(
  MiniVersion: number /* u16 */,
): void /* void */ {
  return libtxfw32_dll.TxfSetThreadMiniVersionForCreate(MiniVersion);
}

export function TxfGetThreadMiniVersionForCreate(
  MiniVersion: Deno.PointerValue | Uint8Array /* ptr */,
): void /* void */ {
  return libtxfw32_dll.TxfGetThreadMiniVersionForCreate(util.toPointer(MiniVersion));
}

export function CreateTransaction(
  lpTransactionAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  UOW: Deno.PointerValue | Uint8Array /* ptr */,
  CreateOptions: number /* u32 */,
  IsolationLevel: number /* u32 */,
  IsolationFlags: number /* u32 */,
  Timeout: number /* u32 */,
  Description: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libktmw32_dll.CreateTransaction(util.toPointer(lpTransactionAttributes), util.toPointer(UOW), CreateOptions, IsolationLevel, IsolationFlags, Timeout, util.pwstrToFfi(Description));
}

export function OpenTransaction(
  dwDesiredAccess: number /* u32 */,
  TransactionId: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libktmw32_dll.OpenTransaction(dwDesiredAccess, util.toPointer(TransactionId));
}

export function CommitTransaction(
  TransactionHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.CommitTransaction(util.toPointer(TransactionHandle)));
}

export function CommitTransactionAsync(
  TransactionHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.CommitTransactionAsync(util.toPointer(TransactionHandle)));
}

export function RollbackTransaction(
  TransactionHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.RollbackTransaction(util.toPointer(TransactionHandle)));
}

export function RollbackTransactionAsync(
  TransactionHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.RollbackTransactionAsync(util.toPointer(TransactionHandle)));
}

export function GetTransactionId(
  TransactionHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TransactionId: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.GetTransactionId(util.toPointer(TransactionHandle), util.toPointer(TransactionId)));
}

export function GetTransactionInformation(
  TransactionHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  Outcome: Deno.PointerValue | Uint8Array /* ptr */,
  IsolationLevel: Deno.PointerValue | Uint8Array /* ptr */,
  IsolationFlags: Deno.PointerValue | Uint8Array /* ptr */,
  Timeout: Deno.PointerValue | Uint8Array /* ptr */,
  BufferLength: number /* u32 */,
  Description: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.GetTransactionInformation(util.toPointer(TransactionHandle), util.toPointer(Outcome), util.toPointer(IsolationLevel), util.toPointer(IsolationFlags), util.toPointer(Timeout), BufferLength, util.pwstrToFfi(Description)));
}

export function SetTransactionInformation(
  TransactionHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  IsolationLevel: number /* u32 */,
  IsolationFlags: number /* u32 */,
  Timeout: number /* u32 */,
  Description: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.SetTransactionInformation(util.toPointer(TransactionHandle), IsolationLevel, IsolationFlags, Timeout, util.pwstrToFfi(Description)));
}

export function CreateTransactionManager(
  lpTransactionAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  LogFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  CreateOptions: number /* u32 */,
  CommitStrength: number /* u32 */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libktmw32_dll.CreateTransactionManager(util.toPointer(lpTransactionAttributes), util.pwstrToFfi(LogFileName), CreateOptions, CommitStrength);
}

export function OpenTransactionManager(
  LogFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  DesiredAccess: number /* u32 */,
  OpenOptions: number /* u32 */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libktmw32_dll.OpenTransactionManager(util.pwstrToFfi(LogFileName), DesiredAccess, OpenOptions);
}

export function OpenTransactionManagerById(
  TransactionManagerId: Deno.PointerValue | Uint8Array /* ptr */,
  DesiredAccess: number /* u32 */,
  OpenOptions: number /* u32 */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libktmw32_dll.OpenTransactionManagerById(util.toPointer(TransactionManagerId), DesiredAccess, OpenOptions);
}

export function RenameTransactionManager(
  LogFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  ExistingTransactionManagerGuid: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.RenameTransactionManager(util.pwstrToFfi(LogFileName), util.toPointer(ExistingTransactionManagerGuid)));
}

export function RollforwardTransactionManager(
  TransactionManagerHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TmVirtualClock: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.RollforwardTransactionManager(util.toPointer(TransactionManagerHandle), util.toPointer(TmVirtualClock)));
}

export function RecoverTransactionManager(
  TransactionManagerHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.RecoverTransactionManager(util.toPointer(TransactionManagerHandle)));
}

export function GetCurrentClockTransactionManager(
  TransactionManagerHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TmVirtualClock: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.GetCurrentClockTransactionManager(util.toPointer(TransactionManagerHandle), util.toPointer(TmVirtualClock)));
}

export function GetTransactionManagerId(
  TransactionManagerHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TransactionManagerId: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.GetTransactionManagerId(util.toPointer(TransactionManagerHandle), util.toPointer(TransactionManagerId)));
}

export function CreateResourceManager(
  lpResourceManagerAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  ResourceManagerId: Deno.PointerValue | Uint8Array /* ptr */,
  CreateOptions: number /* u32 */,
  TmHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  Description: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libktmw32_dll.CreateResourceManager(util.toPointer(lpResourceManagerAttributes), util.toPointer(ResourceManagerId), CreateOptions, util.toPointer(TmHandle), util.pwstrToFfi(Description));
}

export function OpenResourceManager(
  dwDesiredAccess: number /* u32 */,
  TmHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  ResourceManagerId: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libktmw32_dll.OpenResourceManager(dwDesiredAccess, util.toPointer(TmHandle), util.toPointer(ResourceManagerId));
}

export function RecoverResourceManager(
  ResourceManagerHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.RecoverResourceManager(util.toPointer(ResourceManagerHandle)));
}

export function GetNotificationResourceManager(
  ResourceManagerHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TransactionNotification: Deno.PointerValue | Uint8Array /* ptr */,
  NotificationLength: number /* u32 */,
  dwMilliseconds: number /* u32 */,
  ReturnLength: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.GetNotificationResourceManager(util.toPointer(ResourceManagerHandle), util.toPointer(TransactionNotification), NotificationLength, dwMilliseconds, util.toPointer(ReturnLength)));
}

export function GetNotificationResourceManagerAsync(
  ResourceManagerHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TransactionNotification: Deno.PointerValue | Uint8Array /* ptr */,
  TransactionNotificationLength: number /* u32 */,
  ReturnLength: Deno.PointerValue | Uint8Array /* ptr */,
  lpOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.GetNotificationResourceManagerAsync(util.toPointer(ResourceManagerHandle), util.toPointer(TransactionNotification), TransactionNotificationLength, util.toPointer(ReturnLength), util.toPointer(lpOverlapped)));
}

export function SetResourceManagerCompletionPort(
  ResourceManagerHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  IoCompletionPortHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  CompletionKey: bigint | number /* usize */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.SetResourceManagerCompletionPort(util.toPointer(ResourceManagerHandle), util.toPointer(IoCompletionPortHandle), CompletionKey));
}

export function CreateEnlistment(
  lpEnlistmentAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  ResourceManagerHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TransactionHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  NotificationMask: number /* u32 */,
  CreateOptions: number /* u32 */,
  EnlistmentKey: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libktmw32_dll.CreateEnlistment(util.toPointer(lpEnlistmentAttributes), util.toPointer(ResourceManagerHandle), util.toPointer(TransactionHandle), NotificationMask, CreateOptions, util.toPointer(EnlistmentKey));
}

export function OpenEnlistment(
  dwDesiredAccess: number /* u32 */,
  ResourceManagerHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  EnlistmentId: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libktmw32_dll.OpenEnlistment(dwDesiredAccess, util.toPointer(ResourceManagerHandle), util.toPointer(EnlistmentId));
}

export function RecoverEnlistment(
  EnlistmentHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  EnlistmentKey: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.RecoverEnlistment(util.toPointer(EnlistmentHandle), util.toPointer(EnlistmentKey)));
}

export function GetEnlistmentRecoveryInformation(
  EnlistmentHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  BufferSize: number /* u32 */,
  Buffer: Deno.PointerValue | Uint8Array /* ptr */,
  BufferUsed: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.GetEnlistmentRecoveryInformation(util.toPointer(EnlistmentHandle), BufferSize, util.toPointer(Buffer), util.toPointer(BufferUsed)));
}

export function GetEnlistmentId(
  EnlistmentHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  EnlistmentId: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.GetEnlistmentId(util.toPointer(EnlistmentHandle), util.toPointer(EnlistmentId)));
}

export function SetEnlistmentRecoveryInformation(
  EnlistmentHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  BufferSize: number /* u32 */,
  Buffer: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.SetEnlistmentRecoveryInformation(util.toPointer(EnlistmentHandle), BufferSize, util.toPointer(Buffer)));
}

export function PrepareEnlistment(
  EnlistmentHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TmVirtualClock: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.PrepareEnlistment(util.toPointer(EnlistmentHandle), util.toPointer(TmVirtualClock)));
}

export function PrePrepareEnlistment(
  EnlistmentHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TmVirtualClock: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.PrePrepareEnlistment(util.toPointer(EnlistmentHandle), util.toPointer(TmVirtualClock)));
}

export function CommitEnlistment(
  EnlistmentHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TmVirtualClock: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.CommitEnlistment(util.toPointer(EnlistmentHandle), util.toPointer(TmVirtualClock)));
}

export function RollbackEnlistment(
  EnlistmentHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TmVirtualClock: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.RollbackEnlistment(util.toPointer(EnlistmentHandle), util.toPointer(TmVirtualClock)));
}

export function PrePrepareComplete(
  EnlistmentHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TmVirtualClock: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.PrePrepareComplete(util.toPointer(EnlistmentHandle), util.toPointer(TmVirtualClock)));
}

export function PrepareComplete(
  EnlistmentHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TmVirtualClock: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.PrepareComplete(util.toPointer(EnlistmentHandle), util.toPointer(TmVirtualClock)));
}

export function ReadOnlyEnlistment(
  EnlistmentHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TmVirtualClock: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.ReadOnlyEnlistment(util.toPointer(EnlistmentHandle), util.toPointer(TmVirtualClock)));
}

export function CommitComplete(
  EnlistmentHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TmVirtualClock: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.CommitComplete(util.toPointer(EnlistmentHandle), util.toPointer(TmVirtualClock)));
}

export function RollbackComplete(
  EnlistmentHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TmVirtualClock: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.RollbackComplete(util.toPointer(EnlistmentHandle), util.toPointer(TmVirtualClock)));
}

export function SinglePhaseReject(
  EnlistmentHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  TmVirtualClock: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libktmw32_dll.SinglePhaseReject(util.toPointer(EnlistmentHandle), util.toPointer(TmVirtualClock)));
}

export function NetShareAdd(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  level: number /* u32 */,
  buf: Deno.PointerValue | Uint8Array /* ptr */,
  parm_err: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetShareAdd(util.pwstrToFfi(servername), level, util.toPointer(buf), util.toPointer(parm_err));
}

export function NetShareEnum(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  level: number /* u32 */,
  bufptr: Deno.PointerValue | Uint8Array /* ptr */,
  prefmaxlen: number /* u32 */,
  entriesread: Deno.PointerValue | Uint8Array /* ptr */,
  totalentries: Deno.PointerValue | Uint8Array /* ptr */,
  resume_handle: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetShareEnum(util.pwstrToFfi(servername), level, util.toPointer(bufptr), prefmaxlen, util.toPointer(entriesread), util.toPointer(totalentries), util.toPointer(resume_handle));
}

export function NetShareEnumSticky(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  level: number /* u32 */,
  bufptr: Deno.PointerValue | Uint8Array /* ptr */,
  prefmaxlen: number /* u32 */,
  entriesread: Deno.PointerValue | Uint8Array /* ptr */,
  totalentries: Deno.PointerValue | Uint8Array /* ptr */,
  resume_handle: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetShareEnumSticky(util.pwstrToFfi(servername), level, util.toPointer(bufptr), prefmaxlen, util.toPointer(entriesread), util.toPointer(totalentries), util.toPointer(resume_handle));
}

export function NetShareGetInfo(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  netname: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  level: number /* u32 */,
  bufptr: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetShareGetInfo(util.pwstrToFfi(servername), util.pwstrToFfi(netname), level, util.toPointer(bufptr));
}

export function NetShareSetInfo(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  netname: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  level: number /* u32 */,
  buf: Deno.PointerValue | Uint8Array /* ptr */,
  parm_err: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetShareSetInfo(util.pwstrToFfi(servername), util.pwstrToFfi(netname), level, util.toPointer(buf), util.toPointer(parm_err));
}

export function NetShareDel(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  netname: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  reserved: number /* u32 */,
): number /* u32 */ {
  return libNETAPI32_dll.NetShareDel(util.pwstrToFfi(servername), util.pwstrToFfi(netname), reserved);
}

export function NetShareDelSticky(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  netname: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  reserved: number /* u32 */,
): number /* u32 */ {
  return libNETAPI32_dll.NetShareDelSticky(util.pwstrToFfi(servername), util.pwstrToFfi(netname), reserved);
}

export function NetShareCheck(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  device: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  type: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetShareCheck(util.pwstrToFfi(servername), util.pwstrToFfi(device), util.toPointer(type));
}

export function NetShareDelEx(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  level: number /* u32 */,
  buf: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetShareDelEx(util.pwstrToFfi(servername), level, util.toPointer(buf));
}

export function NetServerAliasAdd(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  level: number /* u32 */,
  buf: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetServerAliasAdd(util.pwstrToFfi(servername), level, util.toPointer(buf));
}

export function NetServerAliasDel(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  level: number /* u32 */,
  buf: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetServerAliasDel(util.pwstrToFfi(servername), level, util.toPointer(buf));
}

export function NetServerAliasEnum(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  level: number /* u32 */,
  bufptr: Deno.PointerValue | Uint8Array /* ptr */,
  prefmaxlen: number /* u32 */,
  entriesread: Deno.PointerValue | Uint8Array /* ptr */,
  totalentries: Deno.PointerValue | Uint8Array /* ptr */,
  resumehandle: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetServerAliasEnum(util.pwstrToFfi(servername), level, util.toPointer(bufptr), prefmaxlen, util.toPointer(entriesread), util.toPointer(totalentries), util.toPointer(resumehandle));
}

export function NetSessionEnum(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  UncClientName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  username: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  level: number /* u32 */,
  bufptr: Deno.PointerValue | Uint8Array /* ptr */,
  prefmaxlen: number /* u32 */,
  entriesread: Deno.PointerValue | Uint8Array /* ptr */,
  totalentries: Deno.PointerValue | Uint8Array /* ptr */,
  resume_handle: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetSessionEnum(util.pwstrToFfi(servername), util.pwstrToFfi(UncClientName), util.pwstrToFfi(username), level, util.toPointer(bufptr), prefmaxlen, util.toPointer(entriesread), util.toPointer(totalentries), util.toPointer(resume_handle));
}

export function NetSessionDel(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  UncClientName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  username: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): number /* u32 */ {
  return libNETAPI32_dll.NetSessionDel(util.pwstrToFfi(servername), util.pwstrToFfi(UncClientName), util.pwstrToFfi(username));
}

export function NetSessionGetInfo(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  UncClientName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  username: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  level: number /* u32 */,
  bufptr: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetSessionGetInfo(util.pwstrToFfi(servername), util.pwstrToFfi(UncClientName), util.pwstrToFfi(username), level, util.toPointer(bufptr));
}

export function NetConnectionEnum(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  qualifier: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  level: number /* u32 */,
  bufptr: Deno.PointerValue | Uint8Array /* ptr */,
  prefmaxlen: number /* u32 */,
  entriesread: Deno.PointerValue | Uint8Array /* ptr */,
  totalentries: Deno.PointerValue | Uint8Array /* ptr */,
  resume_handle: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetConnectionEnum(util.pwstrToFfi(servername), util.pwstrToFfi(qualifier), level, util.toPointer(bufptr), prefmaxlen, util.toPointer(entriesread), util.toPointer(totalentries), util.toPointer(resume_handle));
}

export function NetFileClose(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  fileid: number /* u32 */,
): number /* u32 */ {
  return libNETAPI32_dll.NetFileClose(util.pwstrToFfi(servername), fileid);
}

export function NetFileEnum(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  basepath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  username: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  level: number /* u32 */,
  bufptr: Deno.PointerValue | Uint8Array /* ptr */,
  prefmaxlen: number /* u32 */,
  entriesread: Deno.PointerValue | Uint8Array /* ptr */,
  totalentries: Deno.PointerValue | Uint8Array /* ptr */,
  resume_handle: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetFileEnum(util.pwstrToFfi(servername), util.pwstrToFfi(basepath), util.pwstrToFfi(username), level, util.toPointer(bufptr), prefmaxlen, util.toPointer(entriesread), util.toPointer(totalentries), util.toPointer(resume_handle));
}

export function NetFileGetInfo(
  servername: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  fileid: number /* u32 */,
  level: number /* u32 */,
  bufptr: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetFileGetInfo(util.pwstrToFfi(servername), fileid, level, util.toPointer(bufptr));
}

export function NetStatisticsGet(
  ServerName: Deno.PointerValue | Uint8Array /* ptr */,
  Service: Deno.PointerValue | Uint8Array /* ptr */,
  Level: number /* u32 */,
  Options: number /* u32 */,
  Buffer: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libNETAPI32_dll.NetStatisticsGet(util.toPointer(ServerName), util.toPointer(Service), Level, Options, util.toPointer(Buffer));
}

export function QueryIoRingCapabilities(
  capabilities: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libapi_ms_win_core_ioring_l1_1_0_dll.QueryIoRingCapabilities(util.toPointer(capabilities));
}

export function IsIoRingOpSupported(
  ioRing: Deno.PointerValue | Uint8Array /* ptr */,
  op: IORING_OP_CODE /* Windows.Win32.Storage.FileSystem.IORING_OP_CODE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libapi_ms_win_core_ioring_l1_1_0_dll.IsIoRingOpSupported(util.toPointer(ioRing), op));
}

export function CreateIoRing(
  ioringVersion: IORING_VERSION /* Windows.Win32.Storage.FileSystem.IORING_VERSION */,
  flags: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.IORING_CREATE_FLAGS */,
  submissionQueueSize: number /* u32 */,
  completionQueueSize: number /* u32 */,
  h: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libapi_ms_win_core_ioring_l1_1_0_dll.CreateIoRing(ioringVersion, util.toPointer(flags), submissionQueueSize, completionQueueSize, util.toPointer(h));
}

export function GetIoRingInfo(
  ioRing: Deno.PointerValue | Uint8Array /* ptr */,
  info: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libapi_ms_win_core_ioring_l1_1_0_dll.GetIoRingInfo(util.toPointer(ioRing), util.toPointer(info));
}

export function SubmitIoRing(
  ioRing: Deno.PointerValue | Uint8Array /* ptr */,
  waitOperations: number /* u32 */,
  milliseconds: number /* u32 */,
  submittedEntries: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libapi_ms_win_core_ioring_l1_1_0_dll.SubmitIoRing(util.toPointer(ioRing), waitOperations, milliseconds, util.toPointer(submittedEntries));
}

export function CloseIoRing(
  ioRing: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libapi_ms_win_core_ioring_l1_1_0_dll.CloseIoRing(util.toPointer(ioRing));
}

export function PopIoRingCompletion(
  ioRing: Deno.PointerValue | Uint8Array /* ptr */,
  cqe: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libapi_ms_win_core_ioring_l1_1_0_dll.PopIoRingCompletion(util.toPointer(ioRing), util.toPointer(cqe));
}

export function SetIoRingCompletionEvent(
  ioRing: Deno.PointerValue | Uint8Array /* ptr */,
  hEvent: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libapi_ms_win_core_ioring_l1_1_0_dll.SetIoRingCompletionEvent(util.toPointer(ioRing), util.toPointer(hEvent));
}

export function BuildIoRingCancelRequest(
  ioRing: Deno.PointerValue | Uint8Array /* ptr */,
  file: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.IORING_HANDLE_REF */,
  opToCancel: bigint | number /* usize */,
  userData: bigint | number /* usize */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libapi_ms_win_core_ioring_l1_1_0_dll.BuildIoRingCancelRequest(util.toPointer(ioRing), util.toPointer(file), opToCancel, userData);
}

export function BuildIoRingReadFile(
  ioRing: Deno.PointerValue | Uint8Array /* ptr */,
  fileRef: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.IORING_HANDLE_REF */,
  dataRef: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.IORING_BUFFER_REF */,
  numberOfBytesToRead: number /* u32 */,
  fileOffset: bigint | number /* u64 */,
  userData: bigint | number /* usize */,
  flags: IORING_SQE_FLAGS /* Windows.Win32.Storage.FileSystem.IORING_SQE_FLAGS */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libapi_ms_win_core_ioring_l1_1_0_dll.BuildIoRingReadFile(util.toPointer(ioRing), util.toPointer(fileRef), util.toPointer(dataRef), numberOfBytesToRead, fileOffset, userData, flags);
}

export function BuildIoRingRegisterFileHandles(
  ioRing: Deno.PointerValue | Uint8Array /* ptr */,
  count: number /* u32 */,
  handles: Deno.PointerValue | Uint8Array /* ptr */,
  userData: bigint | number /* usize */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libapi_ms_win_core_ioring_l1_1_0_dll.BuildIoRingRegisterFileHandles(util.toPointer(ioRing), count, util.toPointer(handles), userData);
}

export function BuildIoRingRegisterBuffers(
  ioRing: Deno.PointerValue | Uint8Array /* ptr */,
  count: number /* u32 */,
  buffers: Deno.PointerValue | Uint8Array /* ptr */,
  userData: bigint | number /* usize */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libapi_ms_win_core_ioring_l1_1_0_dll.BuildIoRingRegisterBuffers(util.toPointer(ioRing), count, util.toPointer(buffers), userData);
}

export function Wow64EnableWow64FsRedirection(
  Wow64FsEnableRedirection: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.BOOLEAN */,
): Deno.PointerValue /* Windows.Win32.Foundation.BOOLEAN */ {
  return libKERNEL32_dll.Wow64EnableWow64FsRedirection(util.toPointer(Wow64FsEnableRedirection));
}

export function Wow64DisableWow64FsRedirection(
  OldValue: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.Wow64DisableWow64FsRedirection(util.toPointer(OldValue)));
}

export function Wow64RevertWow64FsRedirection(
  OlValue: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.Wow64RevertWow64FsRedirection(util.toPointer(OlValue)));
}

export function GetBinaryTypeA(
  lpApplicationName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpBinaryType: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetBinaryTypeA(util.pstrToFfi(lpApplicationName), util.toPointer(lpBinaryType)));
}

export function GetBinaryTypeW(
  lpApplicationName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpBinaryType: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetBinaryTypeW(util.pwstrToFfi(lpApplicationName), util.toPointer(lpBinaryType)));
}

export function GetShortPathNameA(
  lpszLongPath: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpszShortPath: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchBuffer: number /* u32 */,
): number /* u32 */ {
  return libKERNEL32_dll.GetShortPathNameA(util.pstrToFfi(lpszLongPath), util.pstrToFfi(lpszShortPath), cchBuffer);
}

export function GetLongPathNameTransactedA(
  lpszShortPath: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpszLongPath: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchBuffer: number /* u32 */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): number /* u32 */ {
  return libKERNEL32_dll.GetLongPathNameTransactedA(util.pstrToFfi(lpszShortPath), util.pstrToFfi(lpszLongPath), cchBuffer, util.toPointer(hTransaction));
}

export function GetLongPathNameTransactedW(
  lpszShortPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpszLongPath: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchBuffer: number /* u32 */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): number /* u32 */ {
  return libKERNEL32_dll.GetLongPathNameTransactedW(util.pwstrToFfi(lpszShortPath), util.pwstrToFfi(lpszLongPath), cchBuffer, util.toPointer(hTransaction));
}

export function SetFileCompletionNotificationModes(
  FileHandle: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  Flags: number /* u8 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetFileCompletionNotificationModes(util.toPointer(FileHandle), Flags));
}

export function SetFileShortNameA(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpShortName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetFileShortNameA(util.toPointer(hFile), util.pstrToFfi(lpShortName)));
}

export function SetFileShortNameW(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpShortName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetFileShortNameW(util.toPointer(hFile), util.pwstrToFfi(lpShortName)));
}

export function SetTapePosition(
  hDevice: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  dwPositionMethod: TAPE_POSITION_METHOD /* Windows.Win32.Storage.FileSystem.TAPE_POSITION_METHOD */,
  dwPartition: number /* u32 */,
  dwOffsetLow: number /* u32 */,
  dwOffsetHigh: number /* u32 */,
  bImmediate: boolean /* Windows.Win32.Foundation.BOOL */,
): number /* u32 */ {
  return libKERNEL32_dll.SetTapePosition(util.toPointer(hDevice), dwPositionMethod, dwPartition, dwOffsetLow, dwOffsetHigh, util.boolToFfi(bImmediate));
}

export function GetTapePosition(
  hDevice: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  dwPositionType: TAPE_POSITION_TYPE /* Windows.Win32.Storage.FileSystem.TAPE_POSITION_TYPE */,
  lpdwPartition: Deno.PointerValue | Uint8Array /* ptr */,
  lpdwOffsetLow: Deno.PointerValue | Uint8Array /* ptr */,
  lpdwOffsetHigh: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libKERNEL32_dll.GetTapePosition(util.toPointer(hDevice), dwPositionType, util.toPointer(lpdwPartition), util.toPointer(lpdwOffsetLow), util.toPointer(lpdwOffsetHigh));
}

export function PrepareTape(
  hDevice: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  dwOperation: PREPARE_TAPE_OPERATION /* Windows.Win32.Storage.FileSystem.PREPARE_TAPE_OPERATION */,
  bImmediate: boolean /* Windows.Win32.Foundation.BOOL */,
): number /* u32 */ {
  return libKERNEL32_dll.PrepareTape(util.toPointer(hDevice), dwOperation, util.boolToFfi(bImmediate));
}

export function EraseTape(
  hDevice: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  dwEraseType: ERASE_TAPE_TYPE /* Windows.Win32.Storage.FileSystem.ERASE_TAPE_TYPE */,
  bImmediate: boolean /* Windows.Win32.Foundation.BOOL */,
): number /* u32 */ {
  return libKERNEL32_dll.EraseTape(util.toPointer(hDevice), dwEraseType, util.boolToFfi(bImmediate));
}

export function CreateTapePartition(
  hDevice: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  dwPartitionMethod: CREATE_TAPE_PARTITION_METHOD /* Windows.Win32.Storage.FileSystem.CREATE_TAPE_PARTITION_METHOD */,
  dwCount: number /* u32 */,
  dwSize: number /* u32 */,
): number /* u32 */ {
  return libKERNEL32_dll.CreateTapePartition(util.toPointer(hDevice), dwPartitionMethod, dwCount, dwSize);
}

export function WriteTapemark(
  hDevice: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  dwTapemarkType: TAPEMARK_TYPE /* Windows.Win32.Storage.FileSystem.TAPEMARK_TYPE */,
  dwTapemarkCount: number /* u32 */,
  bImmediate: boolean /* Windows.Win32.Foundation.BOOL */,
): number /* u32 */ {
  return libKERNEL32_dll.WriteTapemark(util.toPointer(hDevice), dwTapemarkType, dwTapemarkCount, util.boolToFfi(bImmediate));
}

export function GetTapeStatus(
  hDevice: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): number /* u32 */ {
  return libKERNEL32_dll.GetTapeStatus(util.toPointer(hDevice));
}

export function GetTapeParameters(
  hDevice: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  dwOperation: GET_TAPE_DRIVE_PARAMETERS_OPERATION /* Windows.Win32.Storage.FileSystem.GET_TAPE_DRIVE_PARAMETERS_OPERATION */,
  lpdwSize: Deno.PointerValue | Uint8Array /* ptr */,
  lpTapeInformation: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libKERNEL32_dll.GetTapeParameters(util.toPointer(hDevice), dwOperation, util.toPointer(lpdwSize), util.toPointer(lpTapeInformation));
}

export function SetTapeParameters(
  hDevice: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  dwOperation: TAPE_INFORMATION_TYPE /* Windows.Win32.Storage.FileSystem.TAPE_INFORMATION_TYPE */,
  lpTapeInformation: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libKERNEL32_dll.SetTapeParameters(util.toPointer(hDevice), dwOperation, util.toPointer(lpTapeInformation));
}

export function EncryptFileA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libADVAPI32_dll.EncryptFileA(util.pstrToFfi(lpFileName)));
}

export function EncryptFileW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libADVAPI32_dll.EncryptFileW(util.pwstrToFfi(lpFileName)));
}

export function DecryptFileA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwReserved: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libADVAPI32_dll.DecryptFileA(util.pstrToFfi(lpFileName), dwReserved));
}

export function DecryptFileW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwReserved: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libADVAPI32_dll.DecryptFileW(util.pwstrToFfi(lpFileName), dwReserved));
}

export function FileEncryptionStatusA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpStatus: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libADVAPI32_dll.FileEncryptionStatusA(util.pstrToFfi(lpFileName), util.toPointer(lpStatus)));
}

export function FileEncryptionStatusW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpStatus: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libADVAPI32_dll.FileEncryptionStatusW(util.pwstrToFfi(lpFileName), util.toPointer(lpStatus)));
}

export function OpenEncryptedFileRawA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  ulFlags: number /* u32 */,
  pvContext: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libADVAPI32_dll.OpenEncryptedFileRawA(util.pstrToFfi(lpFileName), ulFlags, util.toPointer(pvContext));
}

export function OpenEncryptedFileRawW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  ulFlags: number /* u32 */,
  pvContext: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libADVAPI32_dll.OpenEncryptedFileRawW(util.pwstrToFfi(lpFileName), ulFlags, util.toPointer(pvContext));
}

export function ReadEncryptedFileRaw(
  pfExportCallback: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.PFE_EXPORT_FUNC */,
  pvCallbackContext: Deno.PointerValue | Uint8Array /* ptr */,
  pvContext: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libADVAPI32_dll.ReadEncryptedFileRaw(util.toPointer(pfExportCallback), util.toPointer(pvCallbackContext), util.toPointer(pvContext));
}

export function WriteEncryptedFileRaw(
  pfImportCallback: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.PFE_IMPORT_FUNC */,
  pvCallbackContext: Deno.PointerValue | Uint8Array /* ptr */,
  pvContext: Deno.PointerValue | Uint8Array /* ptr */,
): number /* u32 */ {
  return libADVAPI32_dll.WriteEncryptedFileRaw(util.toPointer(pfImportCallback), util.toPointer(pvCallbackContext), util.toPointer(pvContext));
}

export function CloseEncryptedFileRaw(
  pvContext: Deno.PointerValue | Uint8Array /* ptr */,
): void /* void */ {
  return libADVAPI32_dll.CloseEncryptedFileRaw(util.toPointer(pvContext));
}

export function OpenFile(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpReOpenBuff: Deno.PointerValue | Uint8Array /* ptr */,
  uStyle: number /* u32 */,
): number /* i32 */ {
  return libKERNEL32_dll.OpenFile(util.pstrToFfi(lpFileName), util.toPointer(lpReOpenBuff), uStyle);
}

export function BackupRead(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  nNumberOfBytesToRead: number /* u32 */,
  lpNumberOfBytesRead: Deno.PointerValue | Uint8Array /* ptr */,
  bAbort: boolean /* Windows.Win32.Foundation.BOOL */,
  bProcessSecurity: boolean /* Windows.Win32.Foundation.BOOL */,
  lpContext: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.BackupRead(util.toPointer(hFile), util.toPointer(lpBuffer), nNumberOfBytesToRead, util.toPointer(lpNumberOfBytesRead), util.boolToFfi(bAbort), util.boolToFfi(bProcessSecurity), util.toPointer(lpContext)));
}

export function BackupSeek(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  dwLowBytesToSeek: number /* u32 */,
  dwHighBytesToSeek: number /* u32 */,
  lpdwLowByteSeeked: Deno.PointerValue | Uint8Array /* ptr */,
  lpdwHighByteSeeked: Deno.PointerValue | Uint8Array /* ptr */,
  lpContext: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.BackupSeek(util.toPointer(hFile), dwLowBytesToSeek, dwHighBytesToSeek, util.toPointer(lpdwLowByteSeeked), util.toPointer(lpdwHighByteSeeked), util.toPointer(lpContext)));
}

export function BackupWrite(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  nNumberOfBytesToWrite: number /* u32 */,
  lpNumberOfBytesWritten: Deno.PointerValue | Uint8Array /* ptr */,
  bAbort: boolean /* Windows.Win32.Foundation.BOOL */,
  bProcessSecurity: boolean /* Windows.Win32.Foundation.BOOL */,
  lpContext: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.BackupWrite(util.toPointer(hFile), util.toPointer(lpBuffer), nNumberOfBytesToWrite, util.toPointer(lpNumberOfBytesWritten), util.boolToFfi(bAbort), util.boolToFfi(bProcessSecurity), util.toPointer(lpContext)));
}

export function GetLogicalDriveStringsA(
  nBufferLength: number /* u32 */,
  lpBuffer: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): number /* u32 */ {
  return libKERNEL32_dll.GetLogicalDriveStringsA(nBufferLength, util.pstrToFfi(lpBuffer));
}

export function SetSearchPathMode(
  Flags: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetSearchPathMode(Flags));
}

export function CreateDirectoryExA(
  lpTemplateDirectory: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpNewDirectory: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CreateDirectoryExA(util.pstrToFfi(lpTemplateDirectory), util.pstrToFfi(lpNewDirectory), util.toPointer(lpSecurityAttributes)));
}

export function CreateDirectoryExW(
  lpTemplateDirectory: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpNewDirectory: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CreateDirectoryExW(util.pwstrToFfi(lpTemplateDirectory), util.pwstrToFfi(lpNewDirectory), util.toPointer(lpSecurityAttributes)));
}

export function CreateDirectoryTransactedA(
  lpTemplateDirectory: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpNewDirectory: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CreateDirectoryTransactedA(util.pstrToFfi(lpTemplateDirectory), util.pstrToFfi(lpNewDirectory), util.toPointer(lpSecurityAttributes), util.toPointer(hTransaction)));
}

export function CreateDirectoryTransactedW(
  lpTemplateDirectory: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpNewDirectory: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CreateDirectoryTransactedW(util.pwstrToFfi(lpTemplateDirectory), util.pwstrToFfi(lpNewDirectory), util.toPointer(lpSecurityAttributes), util.toPointer(hTransaction)));
}

export function RemoveDirectoryTransactedA(
  lpPathName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.RemoveDirectoryTransactedA(util.pstrToFfi(lpPathName), util.toPointer(hTransaction)));
}

export function RemoveDirectoryTransactedW(
  lpPathName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.RemoveDirectoryTransactedW(util.pwstrToFfi(lpPathName), util.toPointer(hTransaction)));
}

export function GetFullPathNameTransactedA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  nBufferLength: number /* u32 */,
  lpBuffer: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpFilePart: Deno.PointerValue | Uint8Array /* ptr */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): number /* u32 */ {
  return libKERNEL32_dll.GetFullPathNameTransactedA(util.pstrToFfi(lpFileName), nBufferLength, util.pstrToFfi(lpBuffer), util.toPointer(lpFilePart), util.toPointer(hTransaction));
}

export function GetFullPathNameTransactedW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  nBufferLength: number /* u32 */,
  lpBuffer: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpFilePart: Deno.PointerValue | Uint8Array /* ptr */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): number /* u32 */ {
  return libKERNEL32_dll.GetFullPathNameTransactedW(util.pwstrToFfi(lpFileName), nBufferLength, util.pwstrToFfi(lpBuffer), util.toPointer(lpFilePart), util.toPointer(hTransaction));
}

export function DefineDosDeviceA(
  dwFlags: DEFINE_DOS_DEVICE_FLAGS /* Windows.Win32.Storage.FileSystem.DEFINE_DOS_DEVICE_FLAGS */,
  lpDeviceName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpTargetPath: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.DefineDosDeviceA(dwFlags, util.pstrToFfi(lpDeviceName), util.pstrToFfi(lpTargetPath)));
}

export function QueryDosDeviceA(
  lpDeviceName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpTargetPath: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  ucchMax: number /* u32 */,
): number /* u32 */ {
  return libKERNEL32_dll.QueryDosDeviceA(util.pstrToFfi(lpDeviceName), util.pstrToFfi(lpTargetPath), ucchMax);
}

export function CreateFileTransactedA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwDesiredAccess: number /* u32 */,
  dwShareMode: FILE_SHARE_MODE /* Windows.Win32.Storage.FileSystem.FILE_SHARE_MODE */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  dwCreationDisposition: FILE_CREATION_DISPOSITION /* Windows.Win32.Storage.FileSystem.FILE_CREATION_DISPOSITION */,
  dwFlagsAndAttributes: FILE_FLAGS_AND_ATTRIBUTES /* Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES */,
  hTemplateFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  pusMiniVersion: Deno.PointerValue | Uint8Array /* ptr */,
  lpExtendedParameter: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libKERNEL32_dll.CreateFileTransactedA(util.pstrToFfi(lpFileName), dwDesiredAccess, dwShareMode, util.toPointer(lpSecurityAttributes), dwCreationDisposition, dwFlagsAndAttributes, util.toPointer(hTemplateFile), util.toPointer(hTransaction), util.toPointer(pusMiniVersion), util.toPointer(lpExtendedParameter));
}

export function CreateFileTransactedW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwDesiredAccess: number /* u32 */,
  dwShareMode: FILE_SHARE_MODE /* Windows.Win32.Storage.FileSystem.FILE_SHARE_MODE */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  dwCreationDisposition: FILE_CREATION_DISPOSITION /* Windows.Win32.Storage.FileSystem.FILE_CREATION_DISPOSITION */,
  dwFlagsAndAttributes: FILE_FLAGS_AND_ATTRIBUTES /* Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES */,
  hTemplateFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  pusMiniVersion: Deno.PointerValue | Uint8Array /* ptr */,
  lpExtendedParameter: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libKERNEL32_dll.CreateFileTransactedW(util.pwstrToFfi(lpFileName), dwDesiredAccess, dwShareMode, util.toPointer(lpSecurityAttributes), dwCreationDisposition, dwFlagsAndAttributes, util.toPointer(hTemplateFile), util.toPointer(hTransaction), util.toPointer(pusMiniVersion), util.toPointer(lpExtendedParameter));
}

export function ReOpenFile(
  hOriginalFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  dwDesiredAccess: FILE_ACCESS_FLAGS /* Windows.Win32.Storage.FileSystem.FILE_ACCESS_FLAGS */,
  dwShareMode: FILE_SHARE_MODE /* Windows.Win32.Storage.FileSystem.FILE_SHARE_MODE */,
  dwFlagsAndAttributes: FILE_FLAGS_AND_ATTRIBUTES /* Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libKERNEL32_dll.ReOpenFile(util.toPointer(hOriginalFile), dwDesiredAccess, dwShareMode, dwFlagsAndAttributes);
}

export function SetFileAttributesTransactedA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwFileAttributes: number /* u32 */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetFileAttributesTransactedA(util.pstrToFfi(lpFileName), dwFileAttributes, util.toPointer(hTransaction)));
}

export function SetFileAttributesTransactedW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwFileAttributes: number /* u32 */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetFileAttributesTransactedW(util.pwstrToFfi(lpFileName), dwFileAttributes, util.toPointer(hTransaction)));
}

export function GetFileAttributesTransactedA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  fInfoLevelId: GET_FILEEX_INFO_LEVELS /* Windows.Win32.Storage.FileSystem.GET_FILEEX_INFO_LEVELS */,
  lpFileInformation: Deno.PointerValue | Uint8Array /* ptr */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetFileAttributesTransactedA(util.pstrToFfi(lpFileName), fInfoLevelId, util.toPointer(lpFileInformation), util.toPointer(hTransaction)));
}

export function GetFileAttributesTransactedW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  fInfoLevelId: GET_FILEEX_INFO_LEVELS /* Windows.Win32.Storage.FileSystem.GET_FILEEX_INFO_LEVELS */,
  lpFileInformation: Deno.PointerValue | Uint8Array /* ptr */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetFileAttributesTransactedW(util.pwstrToFfi(lpFileName), fInfoLevelId, util.toPointer(lpFileInformation), util.toPointer(hTransaction)));
}

export function GetCompressedFileSizeTransactedA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpFileSizeHigh: Deno.PointerValue | Uint8Array /* ptr */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): number /* u32 */ {
  return libKERNEL32_dll.GetCompressedFileSizeTransactedA(util.pstrToFfi(lpFileName), util.toPointer(lpFileSizeHigh), util.toPointer(hTransaction));
}

export function GetCompressedFileSizeTransactedW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpFileSizeHigh: Deno.PointerValue | Uint8Array /* ptr */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): number /* u32 */ {
  return libKERNEL32_dll.GetCompressedFileSizeTransactedW(util.pwstrToFfi(lpFileName), util.toPointer(lpFileSizeHigh), util.toPointer(hTransaction));
}

export function DeleteFileTransactedA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.DeleteFileTransactedA(util.pstrToFfi(lpFileName), util.toPointer(hTransaction)));
}

export function DeleteFileTransactedW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.DeleteFileTransactedW(util.pwstrToFfi(lpFileName), util.toPointer(hTransaction)));
}

export function CheckNameLegalDOS8Dot3A(
  lpName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpOemName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  OemNameSize: number /* u32 */,
  pbNameContainsSpaces: Deno.PointerValue | Uint8Array /* ptr */,
  pbNameLegal: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CheckNameLegalDOS8Dot3A(util.pstrToFfi(lpName), util.pstrToFfi(lpOemName), OemNameSize, util.toPointer(pbNameContainsSpaces), util.toPointer(pbNameLegal)));
}

export function CheckNameLegalDOS8Dot3W(
  lpName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpOemName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  OemNameSize: number /* u32 */,
  pbNameContainsSpaces: Deno.PointerValue | Uint8Array /* ptr */,
  pbNameLegal: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CheckNameLegalDOS8Dot3W(util.pwstrToFfi(lpName), util.pstrToFfi(lpOemName), OemNameSize, util.toPointer(pbNameContainsSpaces), util.toPointer(pbNameLegal)));
}

export function FindFirstFileTransactedA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  fInfoLevelId: FINDEX_INFO_LEVELS /* Windows.Win32.Storage.FileSystem.FINDEX_INFO_LEVELS */,
  lpFindFileData: Deno.PointerValue | Uint8Array /* ptr */,
  fSearchOp: FINDEX_SEARCH_OPS /* Windows.Win32.Storage.FileSystem.FINDEX_SEARCH_OPS */,
  lpSearchFilter: Deno.PointerValue | Uint8Array /* ptr */,
  dwAdditionalFlags: number /* u32 */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindFileHandle */ {
  return libKERNEL32_dll.FindFirstFileTransactedA(util.pstrToFfi(lpFileName), fInfoLevelId, util.toPointer(lpFindFileData), fSearchOp, util.toPointer(lpSearchFilter), dwAdditionalFlags, util.toPointer(hTransaction));
}

export function FindFirstFileTransactedW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  fInfoLevelId: FINDEX_INFO_LEVELS /* Windows.Win32.Storage.FileSystem.FINDEX_INFO_LEVELS */,
  lpFindFileData: Deno.PointerValue | Uint8Array /* ptr */,
  fSearchOp: FINDEX_SEARCH_OPS /* Windows.Win32.Storage.FileSystem.FINDEX_SEARCH_OPS */,
  lpSearchFilter: Deno.PointerValue | Uint8Array /* ptr */,
  dwAdditionalFlags: number /* u32 */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindFileHandle */ {
  return libKERNEL32_dll.FindFirstFileTransactedW(util.pwstrToFfi(lpFileName), fInfoLevelId, util.toPointer(lpFindFileData), fSearchOp, util.toPointer(lpSearchFilter), dwAdditionalFlags, util.toPointer(hTransaction));
}

export function CopyFileA(
  lpExistingFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpNewFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  bFailIfExists: boolean /* Windows.Win32.Foundation.BOOL */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CopyFileA(util.pstrToFfi(lpExistingFileName), util.pstrToFfi(lpNewFileName), util.boolToFfi(bFailIfExists)));
}

export function CopyFileW(
  lpExistingFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpNewFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  bFailIfExists: boolean /* Windows.Win32.Foundation.BOOL */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CopyFileW(util.pwstrToFfi(lpExistingFileName), util.pwstrToFfi(lpNewFileName), util.boolToFfi(bFailIfExists)));
}

export function CopyFileExA(
  lpExistingFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpNewFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpProgressRoutine: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.LPPROGRESS_ROUTINE */,
  lpData: Deno.PointerValue | Uint8Array /* ptr */,
  pbCancel: Deno.PointerValue | Uint8Array /* ptr */,
  dwCopyFlags: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CopyFileExA(util.pstrToFfi(lpExistingFileName), util.pstrToFfi(lpNewFileName), util.toPointer(lpProgressRoutine), util.toPointer(lpData), util.toPointer(pbCancel), dwCopyFlags));
}

export function CopyFileExW(
  lpExistingFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpNewFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpProgressRoutine: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.LPPROGRESS_ROUTINE */,
  lpData: Deno.PointerValue | Uint8Array /* ptr */,
  pbCancel: Deno.PointerValue | Uint8Array /* ptr */,
  dwCopyFlags: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CopyFileExW(util.pwstrToFfi(lpExistingFileName), util.pwstrToFfi(lpNewFileName), util.toPointer(lpProgressRoutine), util.toPointer(lpData), util.toPointer(pbCancel), dwCopyFlags));
}

export function CopyFileTransactedA(
  lpExistingFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpNewFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpProgressRoutine: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.LPPROGRESS_ROUTINE */,
  lpData: Deno.PointerValue | Uint8Array /* ptr */,
  pbCancel: Deno.PointerValue | Uint8Array /* ptr */,
  dwCopyFlags: number /* u32 */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CopyFileTransactedA(util.pstrToFfi(lpExistingFileName), util.pstrToFfi(lpNewFileName), util.toPointer(lpProgressRoutine), util.toPointer(lpData), util.toPointer(pbCancel), dwCopyFlags, util.toPointer(hTransaction)));
}

export function CopyFileTransactedW(
  lpExistingFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpNewFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpProgressRoutine: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.LPPROGRESS_ROUTINE */,
  lpData: Deno.PointerValue | Uint8Array /* ptr */,
  pbCancel: Deno.PointerValue | Uint8Array /* ptr */,
  dwCopyFlags: number /* u32 */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CopyFileTransactedW(util.pwstrToFfi(lpExistingFileName), util.pwstrToFfi(lpNewFileName), util.toPointer(lpProgressRoutine), util.toPointer(lpData), util.toPointer(pbCancel), dwCopyFlags, util.toPointer(hTransaction)));
}

export function CopyFile2(
  pwszExistingFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  pwszNewFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  pExtendedParameters: Deno.PointerValue | Uint8Array /* ptr */,
): Deno.PointerValue /* Windows.Win32.Foundation.HRESULT */ {
  return libKERNEL32_dll.CopyFile2(util.pwstrToFfi(pwszExistingFileName), util.pwstrToFfi(pwszNewFileName), util.toPointer(pExtendedParameters));
}

export function MoveFileA(
  lpExistingFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpNewFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.MoveFileA(util.pstrToFfi(lpExistingFileName), util.pstrToFfi(lpNewFileName)));
}

export function MoveFileW(
  lpExistingFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpNewFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.MoveFileW(util.pwstrToFfi(lpExistingFileName), util.pwstrToFfi(lpNewFileName)));
}

export function MoveFileExA(
  lpExistingFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpNewFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwFlags: MOVE_FILE_FLAGS /* Windows.Win32.Storage.FileSystem.MOVE_FILE_FLAGS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.MoveFileExA(util.pstrToFfi(lpExistingFileName), util.pstrToFfi(lpNewFileName), dwFlags));
}

export function MoveFileExW(
  lpExistingFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpNewFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwFlags: MOVE_FILE_FLAGS /* Windows.Win32.Storage.FileSystem.MOVE_FILE_FLAGS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.MoveFileExW(util.pwstrToFfi(lpExistingFileName), util.pwstrToFfi(lpNewFileName), dwFlags));
}

export function MoveFileWithProgressA(
  lpExistingFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpNewFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpProgressRoutine: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.LPPROGRESS_ROUTINE */,
  lpData: Deno.PointerValue | Uint8Array /* ptr */,
  dwFlags: MOVE_FILE_FLAGS /* Windows.Win32.Storage.FileSystem.MOVE_FILE_FLAGS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.MoveFileWithProgressA(util.pstrToFfi(lpExistingFileName), util.pstrToFfi(lpNewFileName), util.toPointer(lpProgressRoutine), util.toPointer(lpData), dwFlags));
}

export function MoveFileWithProgressW(
  lpExistingFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpNewFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpProgressRoutine: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.LPPROGRESS_ROUTINE */,
  lpData: Deno.PointerValue | Uint8Array /* ptr */,
  dwFlags: MOVE_FILE_FLAGS /* Windows.Win32.Storage.FileSystem.MOVE_FILE_FLAGS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.MoveFileWithProgressW(util.pwstrToFfi(lpExistingFileName), util.pwstrToFfi(lpNewFileName), util.toPointer(lpProgressRoutine), util.toPointer(lpData), dwFlags));
}

export function MoveFileTransactedA(
  lpExistingFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpNewFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpProgressRoutine: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.LPPROGRESS_ROUTINE */,
  lpData: Deno.PointerValue | Uint8Array /* ptr */,
  dwFlags: MOVE_FILE_FLAGS /* Windows.Win32.Storage.FileSystem.MOVE_FILE_FLAGS */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.MoveFileTransactedA(util.pstrToFfi(lpExistingFileName), util.pstrToFfi(lpNewFileName), util.toPointer(lpProgressRoutine), util.toPointer(lpData), dwFlags, util.toPointer(hTransaction)));
}

export function MoveFileTransactedW(
  lpExistingFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpNewFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpProgressRoutine: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.LPPROGRESS_ROUTINE */,
  lpData: Deno.PointerValue | Uint8Array /* ptr */,
  dwFlags: MOVE_FILE_FLAGS /* Windows.Win32.Storage.FileSystem.MOVE_FILE_FLAGS */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.MoveFileTransactedW(util.pwstrToFfi(lpExistingFileName), util.pwstrToFfi(lpNewFileName), util.toPointer(lpProgressRoutine), util.toPointer(lpData), dwFlags, util.toPointer(hTransaction)));
}

export function ReplaceFileA(
  lpReplacedFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpReplacementFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpBackupFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwReplaceFlags: REPLACE_FILE_FLAGS /* Windows.Win32.Storage.FileSystem.REPLACE_FILE_FLAGS */,
  lpExclude: Deno.PointerValue | Uint8Array /* ptr */,
  lpReserved: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.ReplaceFileA(util.pstrToFfi(lpReplacedFileName), util.pstrToFfi(lpReplacementFileName), util.pstrToFfi(lpBackupFileName), dwReplaceFlags, util.toPointer(lpExclude), util.toPointer(lpReserved)));
}

export function ReplaceFileW(
  lpReplacedFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpReplacementFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpBackupFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwReplaceFlags: REPLACE_FILE_FLAGS /* Windows.Win32.Storage.FileSystem.REPLACE_FILE_FLAGS */,
  lpExclude: Deno.PointerValue | Uint8Array /* ptr */,
  lpReserved: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.ReplaceFileW(util.pwstrToFfi(lpReplacedFileName), util.pwstrToFfi(lpReplacementFileName), util.pwstrToFfi(lpBackupFileName), dwReplaceFlags, util.toPointer(lpExclude), util.toPointer(lpReserved)));
}

export function CreateHardLinkA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpExistingFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CreateHardLinkA(util.pstrToFfi(lpFileName), util.pstrToFfi(lpExistingFileName), util.toPointer(lpSecurityAttributes)));
}

export function CreateHardLinkW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpExistingFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CreateHardLinkW(util.pwstrToFfi(lpFileName), util.pwstrToFfi(lpExistingFileName), util.toPointer(lpSecurityAttributes)));
}

export function CreateHardLinkTransactedA(
  lpFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpExistingFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CreateHardLinkTransactedA(util.pstrToFfi(lpFileName), util.pstrToFfi(lpExistingFileName), util.toPointer(lpSecurityAttributes), util.toPointer(hTransaction)));
}

export function CreateHardLinkTransactedW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpExistingFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.CreateHardLinkTransactedW(util.pwstrToFfi(lpFileName), util.pwstrToFfi(lpExistingFileName), util.toPointer(lpSecurityAttributes), util.toPointer(hTransaction)));
}

export function FindFirstStreamTransactedW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  InfoLevel: STREAM_INFO_LEVELS /* Windows.Win32.Storage.FileSystem.STREAM_INFO_LEVELS */,
  lpFindStreamData: Deno.PointerValue | Uint8Array /* ptr */,
  dwFlags: number /* u32 */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindStreamHandle */ {
  return libKERNEL32_dll.FindFirstStreamTransactedW(util.pwstrToFfi(lpFileName), InfoLevel, util.toPointer(lpFindStreamData), dwFlags, util.toPointer(hTransaction));
}

export function FindFirstFileNameTransactedW(
  lpFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwFlags: number /* u32 */,
  StringLength: Deno.PointerValue | Uint8Array /* ptr */,
  LinkName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindFileNameHandle */ {
  return libKERNEL32_dll.FindFirstFileNameTransactedW(util.pwstrToFfi(lpFileName), dwFlags, util.toPointer(StringLength), util.pwstrToFfi(LinkName), util.toPointer(hTransaction));
}

export function SetVolumeLabelA(
  lpRootPathName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpVolumeName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetVolumeLabelA(util.pstrToFfi(lpRootPathName), util.pstrToFfi(lpVolumeName)));
}

export function SetVolumeLabelW(
  lpRootPathName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpVolumeName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetVolumeLabelW(util.pwstrToFfi(lpRootPathName), util.pwstrToFfi(lpVolumeName)));
}

export function SetFileBandwidthReservation(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  nPeriodMilliseconds: number /* u32 */,
  nBytesPerPeriod: number /* u32 */,
  bDiscardable: boolean /* Windows.Win32.Foundation.BOOL */,
  lpTransferSize: Deno.PointerValue | Uint8Array /* ptr */,
  lpNumOutstandingRequests: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetFileBandwidthReservation(util.toPointer(hFile), nPeriodMilliseconds, nBytesPerPeriod, util.boolToFfi(bDiscardable), util.toPointer(lpTransferSize), util.toPointer(lpNumOutstandingRequests)));
}

export function GetFileBandwidthReservation(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpPeriodMilliseconds: Deno.PointerValue | Uint8Array /* ptr */,
  lpBytesPerPeriod: Deno.PointerValue | Uint8Array /* ptr */,
  pDiscardable: Deno.PointerValue | Uint8Array /* ptr */,
  lpTransferSize: Deno.PointerValue | Uint8Array /* ptr */,
  lpNumOutstandingRequests: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetFileBandwidthReservation(util.toPointer(hFile), util.toPointer(lpPeriodMilliseconds), util.toPointer(lpBytesPerPeriod), util.toPointer(pDiscardable), util.toPointer(lpTransferSize), util.toPointer(lpNumOutstandingRequests)));
}

export function ReadDirectoryChangesW(
  hDirectory: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  nBufferLength: number /* u32 */,
  bWatchSubtree: boolean /* Windows.Win32.Foundation.BOOL */,
  dwNotifyFilter: FILE_NOTIFY_CHANGE /* Windows.Win32.Storage.FileSystem.FILE_NOTIFY_CHANGE */,
  lpBytesReturned: Deno.PointerValue | Uint8Array /* ptr */,
  lpOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
  lpCompletionRoutine: Uint8Array | Deno.PointerValue /* Windows.Win32.System.IO.LPOVERLAPPED_COMPLETION_ROUTINE */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.ReadDirectoryChangesW(util.toPointer(hDirectory), util.toPointer(lpBuffer), nBufferLength, util.boolToFfi(bWatchSubtree), dwNotifyFilter, util.toPointer(lpBytesReturned), util.toPointer(lpOverlapped), util.toPointer(lpCompletionRoutine)));
}

export function ReadDirectoryChangesExW(
  hDirectory: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  nBufferLength: number /* u32 */,
  bWatchSubtree: boolean /* Windows.Win32.Foundation.BOOL */,
  dwNotifyFilter: FILE_NOTIFY_CHANGE /* Windows.Win32.Storage.FileSystem.FILE_NOTIFY_CHANGE */,
  lpBytesReturned: Deno.PointerValue | Uint8Array /* ptr */,
  lpOverlapped: Deno.PointerValue | Uint8Array /* ptr */,
  lpCompletionRoutine: Uint8Array | Deno.PointerValue /* Windows.Win32.System.IO.LPOVERLAPPED_COMPLETION_ROUTINE */,
  ReadDirectoryNotifyInformationClass: READ_DIRECTORY_NOTIFY_INFORMATION_CLASS /* Windows.Win32.Storage.FileSystem.READ_DIRECTORY_NOTIFY_INFORMATION_CLASS */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.ReadDirectoryChangesExW(util.toPointer(hDirectory), util.toPointer(lpBuffer), nBufferLength, util.boolToFfi(bWatchSubtree), dwNotifyFilter, util.toPointer(lpBytesReturned), util.toPointer(lpOverlapped), util.toPointer(lpCompletionRoutine), ReadDirectoryNotifyInformationClass));
}

export function FindFirstVolumeA(
  lpszVolumeName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchBufferLength: number /* u32 */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindVolumeHandle */ {
  return libKERNEL32_dll.FindFirstVolumeA(util.pstrToFfi(lpszVolumeName), cchBufferLength);
}

export function FindNextVolumeA(
  hFindVolume: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindVolumeHandle */,
  lpszVolumeName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchBufferLength: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.FindNextVolumeA(util.toPointer(hFindVolume), util.pstrToFfi(lpszVolumeName), cchBufferLength));
}

export function FindFirstVolumeMountPointA(
  lpszRootPathName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpszVolumeMountPoint: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchBufferLength: number /* u32 */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindVolumeMointPointHandle */ {
  return libKERNEL32_dll.FindFirstVolumeMountPointA(util.pstrToFfi(lpszRootPathName), util.pstrToFfi(lpszVolumeMountPoint), cchBufferLength);
}

export function FindFirstVolumeMountPointW(
  lpszRootPathName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpszVolumeMountPoint: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchBufferLength: number /* u32 */,
): Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindVolumeMointPointHandle */ {
  return libKERNEL32_dll.FindFirstVolumeMountPointW(util.pwstrToFfi(lpszRootPathName), util.pwstrToFfi(lpszVolumeMountPoint), cchBufferLength);
}

export function FindNextVolumeMountPointA(
  hFindVolumeMountPoint: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindVolumeMointPointHandle */,
  lpszVolumeMountPoint: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchBufferLength: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.FindNextVolumeMountPointA(util.toPointer(hFindVolumeMountPoint), util.pstrToFfi(lpszVolumeMountPoint), cchBufferLength));
}

export function FindNextVolumeMountPointW(
  hFindVolumeMountPoint: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindVolumeMointPointHandle */,
  lpszVolumeMountPoint: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  cchBufferLength: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.FindNextVolumeMountPointW(util.toPointer(hFindVolumeMountPoint), util.pwstrToFfi(lpszVolumeMountPoint), cchBufferLength));
}

export function FindVolumeMountPointClose(
  hFindVolumeMountPoint: Uint8Array | Deno.PointerValue /* Windows.Win32.Storage.FileSystem.FindVolumeMointPointHandle */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.FindVolumeMountPointClose(util.toPointer(hFindVolumeMountPoint)));
}

export function SetVolumeMountPointA(
  lpszVolumeMountPoint: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpszVolumeName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetVolumeMountPointA(util.pstrToFfi(lpszVolumeMountPoint), util.pstrToFfi(lpszVolumeName)));
}

export function SetVolumeMountPointW(
  lpszVolumeMountPoint: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpszVolumeName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.SetVolumeMountPointW(util.pwstrToFfi(lpszVolumeMountPoint), util.pwstrToFfi(lpszVolumeName)));
}

export function DeleteVolumeMountPointA(
  lpszVolumeMountPoint: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.DeleteVolumeMountPointA(util.pstrToFfi(lpszVolumeMountPoint)));
}

export function GetVolumeNameForVolumeMountPointA(
  lpszVolumeMountPoint: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpszVolumeName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchBufferLength: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetVolumeNameForVolumeMountPointA(util.pstrToFfi(lpszVolumeMountPoint), util.pstrToFfi(lpszVolumeName), cchBufferLength));
}

export function GetVolumePathNameA(
  lpszFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpszVolumePathName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchBufferLength: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetVolumePathNameA(util.pstrToFfi(lpszFileName), util.pstrToFfi(lpszVolumePathName), cchBufferLength));
}

export function GetVolumePathNamesForVolumeNameA(
  lpszVolumeName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpszVolumePathNames: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  cchBufferLength: number /* u32 */,
  lpcchReturnLength: Deno.PointerValue | Uint8Array /* ptr */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetVolumePathNamesForVolumeNameA(util.pstrToFfi(lpszVolumeName), util.pstrToFfi(lpszVolumePathNames), cchBufferLength, util.toPointer(lpcchReturnLength)));
}

export function GetFileInformationByHandleEx(
  hFile: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  FileInformationClass: FILE_INFO_BY_HANDLE_CLASS /* Windows.Win32.Storage.FileSystem.FILE_INFO_BY_HANDLE_CLASS */,
  lpFileInformation: Deno.PointerValue | Uint8Array /* ptr */,
  dwBufferSize: number /* u32 */,
): boolean /* Windows.Win32.Foundation.BOOL */ {
  return util.boolFromFfi(libKERNEL32_dll.GetFileInformationByHandleEx(util.toPointer(hFile), FileInformationClass, util.toPointer(lpFileInformation), dwBufferSize));
}

export function OpenFileById(
  hVolumeHint: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
  lpFileId: Deno.PointerValue | Uint8Array /* ptr */,
  dwDesiredAccess: FILE_ACCESS_FLAGS /* Windows.Win32.Storage.FileSystem.FILE_ACCESS_FLAGS */,
  dwShareMode: FILE_SHARE_MODE /* Windows.Win32.Storage.FileSystem.FILE_SHARE_MODE */,
  lpSecurityAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  dwFlagsAndAttributes: FILE_FLAGS_AND_ATTRIBUTES /* Windows.Win32.Storage.FileSystem.FILE_FLAGS_AND_ATTRIBUTES */,
): Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */ {
  return libKERNEL32_dll.OpenFileById(util.toPointer(hVolumeHint), util.toPointer(lpFileId), dwDesiredAccess, dwShareMode, util.toPointer(lpSecurityAttributes), dwFlagsAndAttributes);
}

export function CreateSymbolicLinkA(
  lpSymlinkFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpTargetFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwFlags: SYMBOLIC_LINK_FLAGS /* Windows.Win32.Storage.FileSystem.SYMBOLIC_LINK_FLAGS */,
): Deno.PointerValue /* Windows.Win32.Foundation.BOOLEAN */ {
  return libKERNEL32_dll.CreateSymbolicLinkA(util.pstrToFfi(lpSymlinkFileName), util.pstrToFfi(lpTargetFileName), dwFlags);
}

export function CreateSymbolicLinkW(
  lpSymlinkFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpTargetFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwFlags: SYMBOLIC_LINK_FLAGS /* Windows.Win32.Storage.FileSystem.SYMBOLIC_LINK_FLAGS */,
): Deno.PointerValue /* Windows.Win32.Foundation.BOOLEAN */ {
  return libKERNEL32_dll.CreateSymbolicLinkW(util.pwstrToFfi(lpSymlinkFileName), util.pwstrToFfi(lpTargetFileName), dwFlags);
}

export function CreateSymbolicLinkTransactedA(
  lpSymlinkFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  lpTargetFileName: string | null | Uint8Array /* Windows.Win32.Foundation.PSTR */,
  dwFlags: SYMBOLIC_LINK_FLAGS /* Windows.Win32.Storage.FileSystem.SYMBOLIC_LINK_FLAGS */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): Deno.PointerValue /* Windows.Win32.Foundation.BOOLEAN */ {
  return libKERNEL32_dll.CreateSymbolicLinkTransactedA(util.pstrToFfi(lpSymlinkFileName), util.pstrToFfi(lpTargetFileName), dwFlags, util.toPointer(hTransaction));
}

export function CreateSymbolicLinkTransactedW(
  lpSymlinkFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  lpTargetFileName: string | null | Uint8Array | Uint16Array /* Windows.Win32.Foundation.PWSTR */,
  dwFlags: SYMBOLIC_LINK_FLAGS /* Windows.Win32.Storage.FileSystem.SYMBOLIC_LINK_FLAGS */,
  hTransaction: Uint8Array | Deno.PointerValue /* Windows.Win32.Foundation.HANDLE */,
): Deno.PointerValue /* Windows.Win32.Foundation.BOOLEAN */ {
  return libKERNEL32_dll.CreateSymbolicLinkTransactedW(util.pwstrToFfi(lpSymlinkFileName), util.pwstrToFfi(lpTargetFileName), dwFlags, util.toPointer(hTransaction));
}

export function NtCreateFile(
  FileHandle: Deno.PointerValue | Uint8Array /* ptr */,
  DesiredAccess: number /* u32 */,
  ObjectAttributes: Deno.PointerValue | Uint8Array /* ptr */,
  IoStatusBlock: Deno.PointerValue | Uint8Array /* ptr */,
  AllocationSize: Deno.PointerValue | Uint8Array /* ptr */,
  FileAttributes: number /* u32 */,
  ShareAccess: FILE_SHARE_MODE /* Windows.Win32.Storage.FileSystem.FILE_SHARE_MODE */,
  CreateDisposition: NT_CREATE_FILE_DISPOSITION /* Windows.Win32.Storage.FileSystem.NT_CREATE_FILE_DISPOSITION */,
  CreateOptions: number /* u32 */,
  EaBuffer: Deno.PointerValue | Uint8Array /* ptr */,
  EaLength: number /* u32 */,
): Deno.PointerValue /* Windows.Win32.Foundation.NTSTATUS */ {
  return libntdll_dll.NtCreateFile(util.toPointer(FileHandle), DesiredAccess, util.toPointer(ObjectAttributes), util.toPointer(IoStatusBlock), util.toPointer(AllocationSize), FileAttributes, ShareAccess, CreateDisposition, CreateOptions, util.toPointer(EaBuffer), EaLength);
}

