CARDINAL32 Feature_ID; // The feature ID of the feature to use.
LVM_Classes Actual_Class; // The LVM Class (supported by the specified feature) to use.
ADDRESS Init_Data; /* The address of a buffer containing initialization data for this feature.
NULL if there is no initialization data being provided for this feature. */
} LVM_Feature_Specification_Record;
// The following structure is used with the Get_Child_Handles function.
typedef struct {
CARDINAL32 Count;
ADDRESS * Handles;
} LVM_Handle_Array_Record;
/* The following preprocessor directives define the operations that can be performed on a partition, volume, or a block of free space.
These definitions represent bits in a 32 bit value returned by the Get_Valid_Options function. */
#define CREATE_PRIMARY_PARTITION 1
#define CREATE_LOGICAL_DRIVE 2
#define DELETE_PARTITION 4
#define SET_ACTIVE_PRIMARY 8
#define SET_PARTITION_ACTIVE 0x10
#define SET_PARTITION_INACTIVE 0x20
#define SET_STARTABLE 0x40
#define INSTALL_BOOT_MANAGER 0x80
#define REMOVE_BOOT_MANAGER 0x100
#define SET_BOOT_MANAGER_DEFAULTS 0x200
#define ADD_TO_BOOT_MANAGER_MENU 0x400
#define REMOVE_FROM_BOOT_MANAGER_MENU 0x800
#define DELETE_VOLUME 0x1000
#define HIDE_VOLUME 0x2000
#define EXPAND_VOLUME 0x4000
#define SET_VOLUME_INSTALLABLE 0x8000
#define ASSIGN_DRIVE_LETTER 0x10000
#define CAN_BOOT_PRIMARY 0x20000 // If a primary is created from this block of free space, then it can be made bootable.
#define CAN_BOOT_LOGICAL 0x40000 // If a logical drive is created from this block of free space, then OS/2 can boot from it by adding it to the boot manager menu.
#define CAN_SET_NAME 0x80000
#define SET_BOOT_MANAGER_STARTABLE 0x100000
// The following enumeration defines the allocation strategies used by the Create_Partition function.
typedef enum _Allocation_Algorithm {
Automatic, // Let LVM decide which block of free space to use to create the partition.
Best_Fit, // Use the block of free space which is closest in size to the partition being created.
First_Fit, // Use the first block of free space on the disk which is large enough to hold a partition of the specified size.
Last_Fit, // Use the last block of free space on the disk which is large enough to hold a partition of the specified size.
From_Largest, // Find the largest block of free space and allocate the partition from that block of free space.
From_Smallest, // Find the smallest block of free space that can accommodate a partition of the size specified.
All // Turn the specified drive or block of free space into a single partition.