Mini Kabibi Habibi
#pragma namespace("\\\\.\\root\\wmi")
instance of __Win32Provider as $BcdProv {
Name = "BcdProv";
CLSID = "{f8a56d3e-e304-4a9f-a916-5187019d7759}";
};
instance of __MethodProviderRegistration {
Provider = $BcdProv;
};
instance of __InstanceProviderRegistration {
Provider = $BcdProv;
SupportsGet = TRUE;
};
[
Dynamic,
Provider("BcdProv"),
Description("This class represents a BCD store which holds a collection of BCD objects.") : Amended
]
class BcdStore {
[
Key,
Read,
Description("A BcdStore is uniquely identified by its file path. The system store is denoted via an empty file path.") : Amended
]
string FilePath;
[implemented, static]
boolean OpenStore([in] string File, [out] BcdStore Store);
[implemented, static]
boolean ImportStore([in] string File);
[implemented, static]
boolean ImportStoreWithFlags([in] string File, [in, BitMap{"0"}, BitValues{"Clean"}] uint32 Flags);
[implemented, static]
boolean ExportStore([in] string File);
[implemented, static]
boolean CreateStore([in] string File, [out] BcdStore Store);
[implemented, static]
boolean DeleteSystemStore();
[implemented, static]
boolean GetSystemDisk([out] string Disk);
[implemented, static]
boolean GetSystemPartition([out] string Partition);
[implemented, static]
boolean SetSystemStoreDevice([in] string Partition);
[implemented]
boolean EnumerateObjects([in] uint32 Type, [out] BcdObject Objects[]);
[implemented]
boolean OpenObject([in] string Id, [out] BcdObject Object);
[implemented]
boolean CreateObject([in] string Id, [in] uint32 Type, [out] BcdObject Object);
[implemented]
boolean DeleteObject([in] string Id);
[implemented]
boolean CopyObject([in] string SourceStoreFile, [in] string SourceId, [in, BitMap{"0", "1"}, BitValues{"CreateNewId", "DeleteExistingObject"}] uint32 Flags, [out] BcdObject Object);
[implemented]
boolean CopyObjects([in] string SourceStoreFile, [in] uint32 Type, [in, BitMap{"0", "1"}, BitValues{"CreateNewId", "DeleteExistingObject"}] uint32 Flags);
};
[
Dynamic,
Provider("BcdProv"),
Description("This class represents a BCD object which holds a collection of BCD elements. Each BCD object is is identified by a guid.") : Amended
]
class BcdObject {
[
Key,
Read,
Description("This is the file path of the store that this object belongs to.") : Amended
]
string StoreFilePath;
[
Key,
Read,
Description("This is the guid id of this object, unique to this store.") : Amended
]
string Id;
[
Read,
Description("The upper 4 bits (28-31) represent the object type. The meaning of the lower 28 bits (0-27) is dependent on the object type.") : Amended
]
uint32 Type;
[implemented]
boolean EnumerateElementTypes([out] uint32 Types[]);
[implemented]
boolean EnumerateElements([out] BcdElement Elements[]);
[implemented]
boolean GetElement([in] uint32 Type, [out] BcdElement Element);
[implemented]
boolean GetElementWithFlags([in] uint32 Type, [in, BitMap{"0"}, BitValues{"Qualified"}] uint32 Flags, [out] BcdElement Element);
[implemented]
boolean SetDeviceElement([in] uint32 Type, [in, ValueMap{"1", "2", "3", "4", "5"}, Values{"BootDevice", "PartitionDevice", "FileDevice", "RamdiskDevice", "UnknownDevice"}] uint32 DeviceType, [in] string AdditionalOptions);
[implemented]
boolean SetPartitionDeviceElement([in] uint32 Type, [in, ValueMap{"1", "2", "3", "4", "5"}, Values{"BootDevice", "PartitionDevice", "FileDevice", "RamdiskDevice", "UnknownDevice"}] uint32 DeviceType, [in] string AdditionalOptions, [in] string Path);
[implemented]
boolean SetPartitionDeviceElementWithFlags([in] uint32 Type, [in, ValueMap{"1", "2", "3", "4", "5"}, Values{"BootDevice", "PartitionDevice", "FileDevice", "RamdiskDevice", "UnknownDevice"}] uint32 DeviceType, [in] string AdditionalOptions, [in] string Path, [in, BitMap{"6"}, BitValues{"DisableVhdDeviceDetection"}] uint32 Flags);
[implemented]
boolean SetFileDeviceElement([in] uint32 Type, [in, ValueMap{"1", "2", "3", "4", "5"}, Values{"BootDevice", "PartitionDevice", "FileDevice", "RamdiskDevice", "UnknownDevice"}] uint32 DeviceType, [in] string AdditionalOptions, [in] string Path, [in] uint32 ParentDeviceType, [in] string ParentAdditionalOptions, [in] string ParentPath);
[implemented]
boolean SetQualifiedPartitionDeviceElement([in] uint32 Type, [in, ValueMap{"0", "1"}, Values{"MBR", "GPT"}] uint32 PartitionStyle, [in] string DiskSignature, [in] string PartitionIdentifier);
[implemented]
boolean SetVhdDeviceElement([in] uint32 Type, [in] string Path, [in] uint32 ParentDeviceType, [in] string ParentAdditionalOptions, [in] string ParentPath, [in] uint32 CustomLocate);
[implemented]
boolean SetStringElement([in] uint32 Type, [in] string String);
[implemented]
boolean SetObjectElement([in] uint32 Type, [in] string Id);
[implemented]
boolean SetObjectListElement([in] uint32 Type, [in] string Ids[]);
[implemented]
boolean SetIntegerElement([in] uint32 Type, [in] uint64 Integer);
[implemented]
boolean SetIntegerListElement([in] uint32 Type, [in] uint64 Integers[]);
[implemented]
boolean SetBooleanElement([in] uint32 Type, [in] boolean Boolean);
[implemented]
boolean DeleteElement([in] uint32 Type);
};
[
Description("This is the base class for all BCD elements. The Type field identifies the specific sub-type of element.") : Amended
]
class BcdElement {
[
Read,
Description("This is the file path of the store that this element is a part of.") : Amended
]
string StoreFilePath;
[
Read,
Description("This is the id of the object that this element belongs to.") : Amended
]
string ObjectId;
[
Read,
Description("The upper 4 bits (28-31) determine the class of the element. The next 4 bits (24-27) determine the format of the element data. The lower 24 bits (0-23) determine the sub-type of the element.") : Amended
]
uint32 Type;
};
[
Description("This is the root class of all device data types.") : Amended
]
class BcdDeviceData {
[
Read,
Description("This identifies the type of device element. This value dictates whether this is a file device element or a partition device element.") : Amended,
ValueMap{"1", "2", "3", "4", "5", "6", "7", "8"},
Values{"BootDevice", "PartitionDevice", "FileDevice", "RamdiskDevice", "UnknownDevice", "QualifiedPartition", "LocateDevice", "LocateExDevice"}
]
uint32 DeviceType;
[
Read,
Description("This represents the additional options for the element.") : Amended
]
string AdditionalOptions;
};
[
Description("This is the base device element class. Device elements come in two flavors, File and Partition, and can be distinguished by the DeviceType field.") : Amended
]
class BcdDeviceElement : BcdElement {
[
Read,
Description("This field contains information about the device.") : Amended
]
BcdDeviceData Device;
};
[
Description("This class represents unknown device data and exposes the data as a binary blob.") : Amended
]
class BcdDeviceUnknownData : BcdDeviceData {
[
Read,
Description("This is the binary data of the unknown device element.") : Amended
]
uint8 Data[];
};
[
Description("This represents a file device element.") : Amended
]
class BcdDeviceFileData : BcdDeviceData {
[
Read,
Description("This is the parent device of this file device.") : Amended
]
BcdDeviceData Parent;
[
Read,
Description("This is the device path.") : Amended
]
string Path;
};
[
Description("This represents a locate device element.") : Amended
]
class BcdDeviceLocateData : BcdDeviceData {
[
Read,
Description("This provides the locate device type.") : Amended,
ValueMap{"0", "1", "2"},
Values{"Element", "String", "ElementChild"}
]
uint32 Type;
};
[
Description("This represents a locate element device element.") : Amended
]
class BcdDeviceLocateElementData : BcdDevicelocateData {
[
Read,
Description("This provides the locate device element.") : Amended
]
uint32 Element;
};
[
Description("This represents a child locate element device element.") : Amended
]
class BcdDeviceLocateElementChildData : BcdDevicelocateData {
[
Read,
Description("This provides the locate device element.") : Amended
]
uint32 Element;
[
Read,
Description("This is the parent device of this locate device.") : Amended
]
BcdDeviceData Parent;
};
[
Description("This represents a string locate device element.") : Amended
]
class BcdDeviceLocateStringData : BcdDevicelocateData {
[
Read,
Description("This provides the locate device element.") : Amended
]
string Path;
};
[
Description("This represents a partition device element.") : Amended
]
class BcdDevicePartitionData : BcdDeviceData {
[
Read,
Description("This is the device path.") : Amended
]
string Path;
};
[
Description("This represents a qualified partition device element.") : Amended
]
class BcdDeviceQualifiedPartitionData : BcdDeviceData {
[
Read,
Description("This is the type of partition, MBR or GPT..") : Amended,
ValueMap{"0", "1"},
Values{"MBR", "GPT"}
]
uint32 PartitionStyle;
[
Read,
Description("This is the disk signature.") : Amended
]
string DiskSignature;
[
Read,
Description("This is the partition identifier.") : Amended
]
string PartitionIdentifier;
};
[
Description("This represents a string element.") : Amended
]
class BcdStringElement : BcdElement {
[
Read,
Description("This is the string value of the element.") : Amended
]
string String;
};
[
Description("This represents an object element. The Id field specifies a BcdObject in the same store.") : Amended
]
class BcdObjectElement : BcdElement {
[
Read,
Description("This is the guid id of the object this element refers to.") : Amended
]
string Id;
};
[
Description("This represents a list of objects. Each element in the Ids array specifies the guid id of an object in the same store.") : Amended
]
class BcdObjectListElement : BcdElement {
[
Read,
Description("This is the array of object ids this element refers to.") : Amended
]
string Ids[];
};
[
Description("This represents an integer element. Note that although Integer is a 64bit number, it must be passed as a string since Automation has no native 64bit type.") : Amended
]
class BcdIntegerElement : BcdElement {
[
Read,
Description("This is the integer value of the element.") : Amended
]
uint64 Integer;
};
[
Description("This represents an integer list element. Note that although Integers are 64bit numbers, they must be passed as strings since Automation has no native 64bit type.") : Amended
]
class BcdIntegerListElement : BcdElement {
[
Read,
Description("This is the array of integer values of the element.") : Amended
]
uint64 Integers[];
};
[
Description("This represents a boolean element.") : Amended
]
class BcdBooleanElement : BcdElement {
[
Read,
Description("This is the boolean value of the element.") : Amended
]
boolean Boolean;
};
[
Description("This represents an unknown element.") : Amended
]
class BcdUnknownElement : BcdElement {
[
Read,
Description("This is the actual value of the element inside the BCD store.") : Amended
]
uint32 ActualType;
};