Constants

All constants are accessible through the cbsConstants namespace declared in the cbfsstorage.h file.

Error Codes

CBFSSTORAGE_ERR_INVALID_VAULT_FILE -1 The specified file is not a CBFS Storage vault.

CBFSSTORAGE_ERR_INVALID_PAGE_SIZE -2 The specified page size is not valid.

CBFSSTORAGE_ERR_VAULT_CORRUPTED -3 The vault is corrupted.

CBFSSTORAGE_ERR_TOO_MANY_TRANSACTIONS -4 Too many transactions active.

CBFSSTORAGE_ERR_FILE_ALREADY_EXISTS -5 A file, directory, symbolic link, or alternate stream with the specified name already exists.

CBFSSTORAGE_ERR_TRANSACTIONS_STILL_ACTIVE -6 One or more transactions are still active.

CBFSSTORAGE_ERR_TAG_ALREADY_EXISTS -7 The specified file tag already exists.

CBFSSTORAGE_ERR_FILE_NOT_FOUND -8 The specified file, directory, symbolic link, or alternate stream was not found.

CBFSSTORAGE_ERR_PATH_NOT_FOUND -9 The specified path was not found.

CBFSSTORAGE_ERR_SHARING_VIOLATION -10 The specified file or alternate stream is already open in an exclusive access mode.

CBFSSTORAGE_ERR_SEEK_BEYOND_EOF -11 Cannot seek beyond the end of a file or alternate stream.

CBFSSTORAGE_ERR_NO_MORE_FILES -12 There are no other files, directories, symbolic links, or alternate streams that match the search criteria.

CBFSSTORAGE_ERR_INVALID_FILE_NAME -13 The specified name is not valid.

CBFSSTORAGE_ERR_VAULT_ACTIVE -14 The requested operation cannot be performed while a vault is open.

CBFSSTORAGE_ERR_VAULT_NOT_ACTIVE -15 A vault must be open before the requested operation can be performed.

CBFSSTORAGE_ERR_INVALID_PASSWORD -16 The specified password is incorrect.

CBFSSTORAGE_ERR_VAULT_READ_ONLY -17 The requested operation cannot be performed; the vault is open in read-only mode.

CBFSSTORAGE_ERR_NO_ENCRYPTION_HANDLERS -18 Can't use custom encryption; no custom encryption event handlers provided.

CBFSSTORAGE_ERR_OUT_OF_MEMORY -19 Out of memory.

CBFSSTORAGE_ERR_SYMLINK_DESTINATION_NOT_FOUND -20 A symbolic link's destination file could not be found.

CBFSSTORAGE_ERR_FILE_IS_NOT_SYMLINK -21 The specified file is not a symbolic link.

CBFSSTORAGE_ERR_BUFFER_TOO_SMALL -22 The specified buffer is too small to hold the requested value.

CBFSSTORAGE_ERR_BAD_COMPRESSED_DATA -23 Decompression failed (possible due to corruption).

CBFSSTORAGE_ERR_INVALID_PARAMETER -24 Invalid parameter.

CBFSSTORAGE_ERR_VAULT_FULL -25 The vault is full (and cannot be automatically resized).

CBFSSTORAGE_ERR_INTERRUPTED_BY_USER -26 Operation interrupted by user.

CBFSSTORAGE_ERR_TAG_NOT_FOUND -27 The specified file tag was not found.

CBFSSTORAGE_ERR_DIRECTORY_NOT_EMPTY -28 The specified directory is not empty.

CBFSSTORAGE_ERR_HANDLE_CLOSED -29 The file or alternate stream was closed unexpectedly; the handle is no longer valid.

CBFSSTORAGE_ERR_INVALID_STREAM_HANDLE -30 Invalid file or alternate stream handle.

CBFSSTORAGE_ERR_FILE_ACCESS_DENIED -31 Access denied.

CBFSSTORAGE_ERR_NO_COMPRESSION_HANDLERS -32 Can't use custom compression; no custom compression event handlers provided.

CBFSSTORAGE_ERR_NOT_IMPLEMENTED -33 Not implemented in this version of CBFS Storage.

CBFSSTORAGE_ERR_DRIVER_NOT_INSTALLED -35 The CBFS Storage system driver has not been installed.

CBFSSTORAGE_ERR_NEW_VAULT_VERSION -37 The specified vault cannot be opened, it was created using a newer version of CBFS Storage.

CBFSSTORAGE_ERR_FILE_IS_NOT_DIRECTORY -38 The specified file is not a directory.

CBFSSTORAGE_ERR_INVALID_TAG_DATA_TYPE -39 The specified file tag data type is not valid.

CBFSSTORAGE_ERR_VAULT_FILE_DOES_NOT_EXIST -40 The specified vault storage file does not exist.

CBFSSTORAGE_ERR_VAULT_FILE_ALREADY_EXISTS -41 The specified vault storage file already exists.

CBFSSTORAGE_ERR_CALLBACK_MODE_FAILURE -42 Some callback mode event handler has returned an unidentified error.

CBFSSTORAGE_ERR_EXTERNAL_ERROR -43 External library could not be initialized or used.

File Attributes

CBFSSTORAGE_FATTR_FILE 0x00000001 The entry is a file.

CBFSSTORAGE_FATTR_DIRECTORY 0x00000002 The entry is a directory.

CBFSSTORAGE_FATTR_DATA_STREAM 0x00000004 The entry is an alternate data stream.

CBFSSTORAGE_FATTR_COMPRESSED 0x00000008 The file or stream is compressed.

CBFSSTORAGE_FATTR_ENCRYPTED 0x00000010 The file or stream is encrypted.

CBFSSTORAGE_FATTR_SYMLINK 0x00000020 The entry is a symbolic link.

CBFSSTORAGE_FATTR_READONLY 0x00000040 The file is read-only.

This attribute is not used by CBFS Storage, but it can be set and retrieved.

CBFSSTORAGE_FATTR_ARCHIVE 0x00000080 The file requires archiving.

This attribute is not used by CBFS Storage, but it can be set and retrieved.

CBFSSTORAGE_FATTR_HIDDEN 0x00000100 The file is hidden.

This attribute is not used by CBFS Storage, but it can be set and retrieved.

CBFSSTORAGE_FATTR_SYSTEM 0x00000200 The file is a system file.

This attribute is not used by CBFS Storage, but it can be set and retrieved.

CBFSSTORAGE_FATTR_TEMPORARY 0x00000400 The file is temporary.

This attribute is not used by CBFS Storage, but it can be set and retrieved.

CBFSSTORAGE_FATTR_DELETE_ON_CLOSE 0x00000800 The file should be deleted when the last handle to the file is closed.

This attribute is currently not supported by CBFS Storage.

CBFSSTORAGE_FATTR_RESERVED_0 0x00001000 Reserved.

CBFSSTORAGE_FATTR_RESERVED_1 0x00002000 Reserved.

CBFSSTORAGE_FATTR_RESERVED_2 0x00004000 Reserved.

CBFSSTORAGE_FATTR_RESERVED_3 0x00008000 Reserved.

CBFSSTORAGE_FATTR_NO_USER_CHANGE 0x0000F03F A mask which includes all attributes that cannot be changed.

Applications cannot use the SetFileAttributes method to directly change any of the following attributes: FILE, DIRECTORY, DATA_STREAM, COMPRESSED, ENCRYPTED, SYMLINK, RESERVED_0, RESERVED_1, RESERVED_2, RESERVED_3.

CBFSSTORAGE_FATTR_USER_DEFINED 0x7FF00000 A mask for application-defined attributes.

Applications can use the SetFileAttributes method to set custom attributes, so long as their values are covered by this mask.

CBFSSTORAGE_FATTR_ANY_FILE 0x7FFFFFFF A mask which includes any and all attributes.

Check and Repair Flags

CBFSSTORAGE_CR_CHECK_ONLY 0x00000001 Check only, don't attempt any repairs.

CBFSSTORAGE_CR_CHECK_ALL_PAGES 0x00000002 Check all vault pages, including empty ones.

(When this flag is not present, only the vault pages which are marked as occupied are checked.)

Format Flags

CBFSSTORAGE_FMF_FAST_FORMAT 0x00000001 Perform a fast format; only initialize the pages necessary for storing the filesystem structure.

When this flag is not set, all pages of the new vault are initialized.

Search Flags

CBFSSTORAGE_FF_NEED_NAME 0x00000001 Include entry names (without paths) when returning search results.

CBFSSTORAGE_FF_NEED_FULL_NAME 0x00000002 Include fully-qualified entry names when returning search results.

CBFSSTORAGE_FF_NEED_ATTRIBUTES 0x00000004 Include entry attributes when returning search results.

CBFSSTORAGE_FF_NEED_SIZE 0x00000008 Include entry sizes when returning search results.

CBFSSTORAGE_FF_NEED_METADATA_SIZE 0x00000010 Include entry metadata sizes when returning search results.

CBFSSTORAGE_FF_NEED_TIMES 0x00000020 Include entry times when returning search results.

CBFSSTORAGE_FF_NEED_LINK_DEST 0x00000040 Include symbolic link destinations when returning search results.

CBFSSTORAGE_FF_EMULATE_FAT 0x00001000 Inserts . and .. pseudo-entries into search results for all directories except the root one.

CBFSSTORAGE_FF_RECURSIVE 0x00002000 Search recursively in all subdirectories.

CBFSSTORAGE_FF_CASE_INSENSITIVE 0x00004000 Forces case-insensitive search, even if the vault is case-sensitive.

Vault Open Modes

CBFSSTORAGE_OM_CREATE_NEW 0 Creates a new vault if possible, failing if one already exists.

CBFSSTORAGE_OM_CREATE_ALWAYS 1 Creates a new vault, overwriting an existing one if necessary.

CBFSSTORAGE_OM_OPEN_EXISTING 2 Opens a vault if it exists; fails otherwise.

CBFSSTORAGE_OM_OPEN_ALWAYS 3 Opens a vault if it exists; creates a new one otherwise.

Vault State Flags

CBFSSTORAGE_ST_FIXED_SIZE 0x00000001 The vault is fixed-size.

CBFSSTORAGE_ST_READ_ONLY 0x00000002 The vault was opened in read-only mode.

Please refer to the ReadOnly property for more information.

CBFSSTORAGE_ST_CORRUPTED 0x00000004 The vault is corrupted.

Applications can use the CheckAndRepair method to try to repair vault corruption. Please refer to the Vault Corruption topic for more information.

CBFSSTORAGE_ST_TRANSACTIONS_USED 0x00000008 The vault was opened in journaling mode.

Please refer to the UseJournaling property for more information.

CBFSSTORAGE_ST_ACCESS_TIME_USED 0x00000010 Last access times are being tracked.

Please refer to the UseAccessTime property for more information.

CBFSSTORAGE_ST_ENCRYPTED 0x00000020 The vault is encrypted with whole-vault encryption.

Please refer to the Encryption topic for more information.

CBFSSTORAGE_ST_VALID_PASSWORD_SET 0x00000040 The correct whole-vault encryption password has been provided.

Please refer to the Encryption topic for more information.

CBFSSTORAGE_ST_PHYSICAL_VOLUME 0x00000080 The vault is backed by a storage volume or partition formatted with the CBFS Storage filesystem.

This flag only applies when using the CBDrive class.

CBFSSTORAGE_ST_PARTED 0x00000100 The vault's contents are split across multiple files on disk.

Please refer to the Multipart Vaults topic for more information.

Tag Data Types

CBFSSTORAGE_TDT_RAWDATA 0x0 The tag is untyped and must be addressed by Id.

CBFSSTORAGE_TDT_BOOLEAN 0x1 The tag contains Boolean data and must be addressed by name.

CBFSSTORAGE_TDT_STRING 0x2 The tag contains String (UTF-16LE) data and must be addressed by name.

CBFSSTORAGE_TDT_DATETIME 0x3 The tag contains DateTime data and must be addressed by name.

CBFSSTORAGE_TDT_NUMBER 0x4 The tag contains numeric (signed 64-bit) data and must be addressed by name.

CBFSSTORAGE_TDT_ANSISTRING 0x5 The tag contains AnsiString (8-bit string) data and must be addressed by name.

Path Separator Characters

CBFSSTORAGE_PSC_BACKSLASH 92 Backslash ('\\').

Windows path separator.

CBFSSTORAGE_PSC_SLASH 47 Forward slash ('/').

Unix-style path separator.

Compression Modes

CBFSSTORAGE_CM_NONE 0 Don't use compression.

CBFSSTORAGE_CM_DEFAULT 1 Use default compression (zlib).

CBFSSTORAGE_CM_CUSTOM 2 Use event-based custom compression.

Compression level is not used.

CBFSSTORAGE_CM_ZLIB 3 Use zlib compression.

Valid compression levels are 1-9.

CBFSSTORAGE_CM_RLE 4 Use RLE compression.

Compression level is not used.

Encryption Modes

CBFSSTORAGE_EM_NONE 0x0 Don't use encryption.

CBFSSTORAGE_EM_DEFAULT 0x1 Use default encryption (CBFSSTORAGE_EM_XTS_AES256_PBKDF2_HMAC_SHA256).

CBFSSTORAGE_EM_XTS_AES256_PBKDF2_HMAC_SHA256 0x2 Use AES256 encryption with PBKDF2 key derivation based on a HMAC_SHA256 key hash.

CBFSSTORAGE_EM_CUSTOM256_PBKDF2_HMAC_SHA256 0x3 Use event-based custom 256-bit encryption with PBKDF2 key derivation based on a HMAC_SHA256 key hash.

256-bit (32-byte) block size.

CBFSSTORAGE_EM_CUSTOM512_PBKDF2_HMAC_SHA256 0x4 Use event-based custom 512-bit encryption with PBKDF2 key derivation based on a HMAC_SHA256 key hash.

512-bit (64-byte) block size.

CBFSSTORAGE_EM_CUSTOM1024_PBKDF2_HMAC_SHA256 0x5 Use event-based custom 1024-bit encryption with PBKDF2 key derivation based on a HMAC_SHA256 key hash.

1024-bit (128-byte) block size.

CBFSSTORAGE_EM_CUSTOM256_CUSTOM_KEY_DERIVE 0x23 Use event-based custom 256-bit encryption with custom key derivation.

256-bit (32-byte) block size.

CBFSSTORAGE_EM_CUSTOM512_CUSTOM_KEY_DERIVE 0x24 Use event-based custom 512-bit encryption with custom key derivation.

512-bit (64-byte) block size.

CBFSSTORAGE_EM_CUSTOM1024_CUSTOM_KEY_DERIVE 0x25 Use event-based custom 1024-bit encryption with custom key derivation.

1024-bit (128-byte) block size.

CBFSSTORAGE_EM_CUSTOM256_DIRECT_KEY 0x43 Use event-based custom 256-bit encryption with no key derivation.

256-bit (32-byte) block size. Useful for cases where the password is an identifier for an external key and should not be used for key derivation.

CBFSSTORAGE_EM_CUSTOM512_DIRECT_KEY 0x44 Use event-based custom 512-bit encryption with no key derivation.

512-bit (64-byte) block size. Useful for cases where the password is an identifier for an external key and should not be used for key derivation.

CBFSSTORAGE_EM_CUSTOM1024_DIRECT_KEY 0x45 Use event-based custom 1024-bit encryption with no key derivation.

1024-bit (128-byte) block size. Useful for cases where the password is an identifier for an external key and should not be used for key derivation.

CBFSSTORAGE_EM_UNKNOWN 0xFF Unidentified or unknown encryption.

File Open Modes

CBFSSTORAGE_FOM_CREATE_NEW 0 Creates a new file or alternate stream if possible, failing if one already exists.

CBFSSTORAGE_FOM_CREATE_ALWAYS 1 Creates a new file or stream, overwriting an existing one if necessary.

CBFSSTORAGE_FOM_OPEN_EXISTING 2 Opens a file or stream if it exists; fails otherwise.

CBFSSTORAGE_FOM_OPEN_ALWAYS 3 Opens a file or stream if it exists; creates a new one otherwise.

Progress Operations

CBFSSTORAGE_PO_FORMATTING 0 Formatting a vault.

CBFSSTORAGE_PO_CHECKING_1 1 Checking a vault (stage 1).

CBFSSTORAGE_PO_CHECKING_2 2 Checking a vault (stage 2).

CBFSSTORAGE_PO_CHECKING_3 3 Checking a vault (stage 3).

CBFSSTORAGE_PO_CHECKING_4 4 Checking a vault (stage 4).

CBFSSTORAGE_PO_CHECKING_5 5 Checking a vault (stage 5).

CBFSSTORAGE_PO_PAGE_CORRUPTED 8 Processing a corrupted vault page.

CBFSSTORAGE_PO_PAGE_ORPHANED 9 Processing an orphaned vault page.

CBFSSTORAGE_PO_COMPRESSING 10 Compressing a file or alternate stream.

CBFSSTORAGE_PO_DECOMPRESSING 11 Decompressing a file or alternate stream.

CBFSSTORAGE_PO_ENCRYPTING 12 Encrypting a vault, file, or alternate stream.

CBFSSTORAGE_PO_DECRYPTING 13 Decrypting a vault, file, or alternate stream

CBFSSTORAGE_PO_COMPACTING 14 Compacting a vault.

CBFSSTORAGE_PO_RESIZING 15 Resizing a vault.

CBFSSTORAGE_PO_CALCULATING_SIZE 16 Calculating a vault's size.

CBFSSTORAGE_PO_COPYING_FILES_TO_VAULT 17 Copying files to a vault.

CBFSSTORAGE_PO_COPYING_FILES_FROM_VAULT 18 Copying files from a vault.

Copy Flags

CBFSSTORAGE_CFF_OVERWRITE_NONE 0x00000000 Never overwrite destination files.

CBFSSTORAGE_CFF_OVERWRITE_IF_NEWER 0x00000001 Overwrite a destination file only if the source file is newer.

CBFSSTORAGE_CFF_OVERWRITE_ALL 0x00000002 Always overwrite destination files.

CBFSSTORAGE_CFF_INCLUDE_SUBDIRS_WITH_CONTENTS 0x00010000 Include all subdirectories in source directory, and their contents, recursively.

CBFSSTORAGE_CFF_INCLUDE_SUBDIRS_NO_CONTENTS 0x00020000 Include all subdirectories in the source directory, without their contents.

Module Flags

MODULE_DRIVER_PNP_BUS 0x00000001 PnP Bus Driver (.sys file).

This module must be installed if the application wishes to make use of Plug-and-Play (PnP) storage features in the CBDisk, CBDrive, and CBMemDrive class. PnP storage devices are those visible as disks in the Device Manager, and the system treats such storage devices differently from other purely virtual devices.

The virtual disk driver must be re-installed anytime this module is added or removed.

MODULE_DRIVER_BLOCK 0x00000002 Virtual disk driver (.sys file).

The product's virtual disk driver module, which provides core functionality; it must be installed for the CBDisk, CBDrive, or CBMemDrive class to function correctly.

MODULE_DRIVER_FS 0x00000004 Filesystem driver (.sys file).

The product's filesystem driver module, which provides core functionality; it must be installed for the CBDrive or CBMemDrive class to function correctly.

MODULE_HELPER_DLL 0x00010000 Shell Helper DLL (CBDriveShellHelper2020.dll)

This module provides supplementary functionality for the CBDisk, CBDrive, and CBMemDrive class; please refer to the Helper DLL topic for more information.

Note: Not applicable when calling the GetDriverStatus method.

Desired Access Flags

STG_DACCESS_READ 0x00000001 Grant/deny read access.

STG_DACCESS_WRITE 0x00000002 Grant/deny write access.

STG_DACCESS_READWRITE 0x00000003 Grant/deny read and write access.

Install Flags

INSTALL_REMOVE_OLD_VERSIONS 0x00000001 Uninstall drivers and helper DLLs from previous component versions (e.g., 2017).

INSTALL_KEEP_START_TYPE 0x00000002 Keep the driver's current start type setting in the registry.

If this flag is not set (default), the installation logic will reset the driver's start type setting in the Windows registry to the default value. Setting this flag causes the installation logic to preserve the current value, which may be necessary if the user (or the application itself) set it previously.

INSTALL_OVERWRITE_SAME_VERSION 0x00000004 Install files when their version is the same as the version of already installed files.

If this flag is not set (default), the installation logic will overwrite the existing file only if the version number of the file being installed is larger than the version of the file being overwritten. Setting this flag causes the installation logic to overwrite the file even when it has the same version.

Uninstall Version Flags

UNINSTALL_VERSION_PREVIOUS 0x00000001 Uninstall modules from previous product versions.

UNINSTALL_VERSION_CURRENT 0x00000002 Uninstall modules from the current product version.

UNINSTALL_VERSION_ALL 0x00000003 Uninstall modules from all product versions.

Module Status Flags

MODULE_STATUS_NOT_PRESENT 0x00000000 The specified module is not present on the system.

MODULE_STATUS_STOPPED 0x00000001 The specified module is in the Stopped state.

MODULE_STATUS_RUNNING 0x00000004 The specified module is loaded and running.

Mounting Point Flags

STGMP_SIMPLE 0x00010000 Create a simple mounting point.

Simple mounting points may be local or global; and when local, can be made visible in either the current user session or another one.

This flag cannot be combined with STGMP_MOUNT_MANAGER or STGMP_NETWORK, and is implied if neither of those flags are present.

STGMP_MOUNT_MANAGER 0x00020000 Create a mounting point that appears to the system as a physical device.

When the StorageType property is set to STGT_DISK_PNP, mounting points created using the system mount manager appear as physical devices in the Disk Management snap-in of the Microsoft Management Console (mmc.exe).

This flag is a necessary prerequisite for creating a folder mounting point, which makes a drive accessible via an otherwise empty directory on another NTFS volume.

This flag cannot be combined with STGMP_SIMPLE, STGMP_NETWORK, or STGMP_LOCAL.

Only one mounting point of this type can be added to a virtual drive.

STGMP_NETWORK 0x00040000 Create a network mounting point.

Network mounting points can be further configured using the various STGMP_NETWORK_* flags described below. Applications that plan to make use of network mounting points must be sure to install the Helper DLL before doing so, otherwise Windows Explorer will not correctly recognize the "network" drive.

This flag cannot be combined with STGMP_SIMPLE or STGMP_MOUNT_MANAGER.

STGMP_LOCAL 0x10000000 Specifies that a local mounting point should be created.

This flag specifies that a local mounting point should be created rather than a global one. When this flag is set, applications must also pass an appropriate value for the AddMountingPoint method's AuthenticationId parameter.

Passing 0 for AuthenticationId will make the mounting point visible in the current user session. To make the mounting point visible in a different user session instead, pass the target session's Authentication ID.

This flag is valid when combined with STGMP_SIMPLE or STGMP_NETWORK; it cannot be combined with STGMP_MOUNT_MANAGER. Please note that a mounting point can be made available to other computers as a network share, and network shares are always globally visible on the local machine, even if this flag is set.

STGMP_NETWORK_ALLOW_MAP_AS_DRIVE 0x00000001 Indicates that users may assign a drive letter to the share (e.g., using the 'Map network drive...' context menu item in Windows Explorer).

STGMP_NETWORK_HIDDEN_SHARE 0x00000002 Indicates that the share should be skipped during enumeration.

Such shares are only accessible when their name is already known to the accessor.

STGMP_NETWORK_READ_ACCESS 0x00000004 Makes a read-only share available for the mounting point.

When this flag is specified, the <Server Name> part of the MountingPoint parameter value must be empty. Please refer to the Mounting Points topic for more information. This flag makes the class use the Windows API's NetShareAdd function. As per MSDN, "Only members of the Administrators, System Operators, or Power Users local group can add file shares with a call to the NetShareAdd function."

STGMP_NETWORK_WRITE_ACCESS 0x00000008 Makes a read/write share available for the mounting point.

When this flag is specified, the <Server Name> part of the MountingPoint parameter value must be empty. Please refer to the Mounting Points topic for more information. This flag makes the class use the Windows API's NetShareAdd function. As per MSDN, "Only members of the Administrators, System Operators, or Power Users local group can add file shares with a call to the NetShareAdd function."

STGMP_NETWORK_CLAIM_SERVER_NAME 0x00000010 Specifies that the server name is unique.

When this flag is specified, the driver handles IOCTL_REDIR_QUERY_PATH[_EX] requests by instructing the OS to direct all requests going to the <Server Name> part of the MountingPoint parameter's value to the driver instead.

This flag should be used when the <Server Name> is unique within the local system (e.g., when the application's name is used). Using this flag allows the system to avoid delays caused by certain network requests made by various processes.

This flag is also required for "net view" command to be able to show the share in the list.
STGMP_DRIVE_LETTER_NOTIFY_ASYNC 0x20000000 Causes the method to return immediately without waiting for mounting notifications to be sent to the system.

STGMP_AUTOCREATE_DRIVE_LETTER 0x40000000 Tells the component that it should assign the drive letter automatically.

When this flag is specified, the class will automatically assign a drive letter from the list of available letters. The assigned letter is added to the end of the list of mounting points, and can be retrieved from there.

Do not include a drive letter in the MountingPoint parameter's value when specifying this flag.

Storage Type Values

STGT_DISK 0x00000000 Create a regular disk device.

STGT_CDROM 0x00000001 Create a CD-ROM or DVD device.

STGT_DISK_PNP 0x00000003 Create a plug-and-play storage device.

Important: The CBFS Storage system driver must be installed in PnP mode for this option to function properly.

Storage Characteristics Flags

STGC_FLOPPY_DISKETTE 0x00000001 The storage is a floppy disk device.

This flag is not supported when StorageType is set to STGT_DISK_PNP.

STGC_READONLY_DEVICE 0x00000002 The storage is a read-only device.

STGC_WRITE_ONCE_MEDIA 0x00000008 The storage device's media can only be written to once.

This flag is not supported when StorageType is set to STGT_DISK_PNP.

STGC_REMOVABLE_MEDIA 0x00000010 The storage device's media is removable.

Users may remove the storage media from the virtual drive at any time. (Note that this flag does not indicate that the virtual drive itself is removable.)

STGC_AUTOCREATE_DRIVE_LETTER 0x00002000 The system should automatically create a drive letter for the storage device.

Deprecated: Include the STGMP_AUTOCREATE_DRIVE_LETTER flag in the value passed for the AddMountingPoint method's Flags parameter instead.

When this flag is present, the StorageGUID property must be set. This flag only works when StorageType is set to STGT_DISK_PNP.

STGC_SHOW_IN_EJECTION_TRAY 0x00004000 The storage device should be shown in the 'Safely Remove Hardware and Eject Media' menu in the system notification area (system tray).

This flag only works when StorageType is set to STGT_DISK_PNP.

STGC_ALLOW_EJECTION 0x00008000 The storage device can be ejected.

Users may eject the virtual drive at any time. When the virtual drive is ejected, it is destroyed.

This flag only works when StorageType is set to STGT_DISK_PNP.

Copyright (c) 2021 Callback Technologies, Inc. - All rights reserved.
CBFS Storage 2020 C++ Edition - Version 20.0 [Build 8031]