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. */