📄 jwawinioctl.pas
字号:
PartitionLength: LARGE_INTEGER;
HiddenSectors: DWORD;
PartitionNumber: DWORD;
PartitionType: BYTE;
BootIndicator: ByteBool;
RecognizedPartition: ByteBool;
RewritePartition: ByteBool;
end;
{$EXTERNALSYM _PARTITION_INFORMATION}
PARTITION_INFORMATION = _PARTITION_INFORMATION;
{$EXTERNALSYM PARTITION_INFORMATION}
TPartitionInformation = PARTITION_INFORMATION;
PPartitionInformation = PPARTITION_INFORMATION;
//
// The following structure is used to change the partition type of a
// specified disk partition using an IOCTL_DISK_SET_PARTITION_INFO
// request.
//
PSET_PARTITION_INFORMATION = ^SET_PARTITION_INFORMATION;
{$EXTERNALSYM PSET_PARTITION_INFORMATION}
_SET_PARTITION_INFORMATION = record
PartitionType: BYTE;
end;
{$EXTERNALSYM _SET_PARTITION_INFORMATION}
SET_PARTITION_INFORMATION = _SET_PARTITION_INFORMATION;
{$EXTERNALSYM SET_PARTITION_INFORMATION}
TSetPartitionInformation = _SET_PARTITION_INFORMATION;
PSetPartitionInformation = PSET_PARTITION_INFORMATION;
//
// The following structures is returned on an IOCTL_DISK_GET_DRIVE_LAYOUT
// request and given as input to an IOCTL_DISK_SET_DRIVE_LAYOUT request.
//
PDRIVE_LAYOUT_INFORMATION = ^DRIVE_LAYOUT_INFORMATION;
{$EXTERNALSYM PDRIVE_LAYOUT_INFORMATION}
_DRIVE_LAYOUT_INFORMATION = record
PartitionCount: DWORD;
Signature: DWORD;
PartitionEntry: array [0..0] of PARTITION_INFORMATION;
end;
{$EXTERNALSYM _DRIVE_LAYOUT_INFORMATION}
DRIVE_LAYOUT_INFORMATION = _DRIVE_LAYOUT_INFORMATION;
{$EXTERNALSYM DRIVE_LAYOUT_INFORMATION}
TDriveLayoutInformation = DRIVE_LAYOUT_INFORMATION;
PDriveLayoutInformation = PDRIVE_LAYOUT_INFORMATION;
//
// The following structure is passed in on an IOCTL_DISK_VERIFY request.
// The offset and length parameters are both given in bytes.
//
PVERIFY_INFORMATION = ^VERIFY_INFORMATION;
{$EXTERNALSYM PVERIFY_INFORMATION}
_VERIFY_INFORMATION = record
StartingOffset: LARGE_INTEGER;
Length: DWORD;
end;
{$EXTERNALSYM _VERIFY_INFORMATION}
VERIFY_INFORMATION = _VERIFY_INFORMATION;
{$EXTERNALSYM VERIFY_INFORMATION}
TVerifyInformation = VERIFY_INFORMATION;
PVerifyInformation = PVERIFY_INFORMATION;
//
// The following structure is passed in on an IOCTL_DISK_REASSIGN_BLOCKS
// request.
//
PREASSIGN_BLOCKS = ^REASSIGN_BLOCKS;
{$EXTERNALSYM PREASSIGN_BLOCKS}
_REASSIGN_BLOCKS = record
Reserved: WORD;
Count: WORD;
BlockNumber: array [0..0] of DWORD;
end;
{$EXTERNALSYM _REASSIGN_BLOCKS}
REASSIGN_BLOCKS = _REASSIGN_BLOCKS;
{$EXTERNALSYM REASSIGN_BLOCKS}
TReassignBlocks = REASSIGN_BLOCKS;
PReassignBlocks = PREASSIGN_BLOCKS;
//
// Support for GUID Partition Table (GPT) disks.
//
//
// There are currently two ways a disk can be partitioned. With a traditional
// AT-style master boot record (PARTITION_STYLE_MBR) and with a new, GPT
// partition table (PARTITION_STYLE_GPT). RAW is for an unrecognizable
// partition style. There are a very limited number of things you can
// do with a RAW partititon.
//
type
_PARTITION_STYLE = (
PARTITION_STYLE_MBR,
PARTITION_STYLE_GPT,
PARTITION_STYLE_RAW);
{$EXTERNALSYM _PARTITION_STYLE}
PARTITION_STYLE = _PARTITION_STYLE;
{$EXTERNALSYM PARTITION_STYLE}
TPartitionStyle = PARTITION_STYLE;
//
// The following structure defines information in a GPT partition that is
// not common to both GPT and MBR partitions.
//
PPARTITION_INFORMATION_GPT = ^PARTITION_INFORMATION_GPT;
{$EXTERNALSYM PPARTITION_INFORMATION_GPT}
_PARTITION_INFORMATION_GPT = record
PartitionType: GUID; // Partition type. See table 16-3.
PartitionId: GUID; // Unique GUID for this partition.
Attributes: DWORD64; // See table 16-4.
Name: array [0..35] of WCHAR; // Partition Name in Unicode.
end;
{$EXTERNALSYM _PARTITION_INFORMATION_GPT}
PARTITION_INFORMATION_GPT = _PARTITION_INFORMATION_GPT;
{$EXTERNALSYM PARTITION_INFORMATION_GPT}
TPartitionInformationGpt = PARTITION_INFORMATION_GPT;
PPartitionInformationGpt = PPARTITION_INFORMATION_GPT;
//
// The following are GPT partition attributes applicable for any
// partition type. These attributes are not OS-specific
//
const
GPT_ATTRIBUTE_PLATFORM_REQUIRED = ($0000000000000001);
{$EXTERNALSYM GPT_ATTRIBUTE_PLATFORM_REQUIRED}
//
// The following are GPT partition attributes applicable when the
// PartitionType is PARTITION_BASIC_DATA_GUID.
//
GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER = DWORD($8000000000000000);
{$EXTERNALSYM GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER}
GPT_BASIC_DATA_ATTRIBUTE_HIDDEN = ($4000000000000000);
{$EXTERNALSYM GPT_BASIC_DATA_ATTRIBUTE_HIDDEN}
GPT_BASIC_DATA_ATTRIBUTE_READ_ONLY = ($1000000000000000);
{$EXTERNALSYM GPT_BASIC_DATA_ATTRIBUTE_READ_ONLY}
//
// The following structure defines information in an MBR partition that is not
// common to both GPT and MBR partitions.
//
type
PPARTITION_INFORMATION_MBR = ^PARTITION_INFORMATION_MBR;
{$EXTERNALSYM PPARTITION_INFORMATION_MBR}
_PARTITION_INFORMATION_MBR = record
PartitionType: BYTE;
BootIndicator: BOOLEAN;
RecognizedPartition: BOOLEAN;
HiddenSectors: DWORD;
end;
{$EXTERNALSYM _PARTITION_INFORMATION_MBR}
PARTITION_INFORMATION_MBR = _PARTITION_INFORMATION_MBR;
{$EXTERNALSYM PARTITION_INFORMATION_MBR}
TPartitionInformationMbr = PARTITION_INFORMATION_MBR;
PPartitionInformationMbr = PPARTITION_INFORMATION_MBR;
//
// The structure SET_PARTITION_INFO_EX is used with the ioctl
// IOCTL_SET_PARTITION_INFO_EX to set information about a specific
// partition. Note that for MBR partitions, you can only set the partition
// signature, whereas GPT partitions allow setting of all fields that
// you can get.
//
SET_PARTITION_INFORMATION_MBR = SET_PARTITION_INFORMATION;
{$EXTERNALSYM SET_PARTITION_INFORMATION_MBR}
TSetPartitionInformationMbr = SET_PARTITION_INFORMATION_MBR;
SET_PARTITION_INFORMATION_GPT = PARTITION_INFORMATION_GPT;
{$EXTERNALSYM SET_PARTITION_INFORMATION_GPT}
TSetPartitionInformationGpt = SET_PARTITION_INFORMATION_GPT;
PSET_PARTITION_INFORMATION_EX = ^SET_PARTITION_INFORMATION_EX;
{$EXTERNALSYM PSET_PARTITION_INFORMATION_EX}
_SET_PARTITION_INFORMATION_EX = record
PartitionStyle: PARTITION_STYLE;
case Integer of
0: (Mbr: SET_PARTITION_INFORMATION_MBR);
1: (Gpt: SET_PARTITION_INFORMATION_GPT);
end;
{$EXTERNALSYM _SET_PARTITION_INFORMATION_EX}
SET_PARTITION_INFORMATION_EX = _SET_PARTITION_INFORMATION_EX;
{$EXTERNALSYM SET_PARTITION_INFORMATION_EX}
TSetPartitionInformationEx = SET_PARTITION_INFORMATION_EX;
PSetPartitionInformationEx = PSET_PARTITION_INFORMATION_EX;
//
// The structure CREATE_DISK_GPT with the ioctl IOCTL_DISK_CREATE_DISK
// to initialize an virgin disk with an empty GPT partition table.
//
PCREATE_DISK_GPT = ^CREATE_DISK_GPT;
{$EXTERNALSYM PCREATE_DISK_GPT}
_CREATE_DISK_GPT = record
DiskId: GUID; // Unique disk id for the disk.
MaxPartitionCount: DWORD; // Maximim number of partitions allowable.
end;
{$EXTERNALSYM _CREATE_DISK_GPT}
CREATE_DISK_GPT = _CREATE_DISK_GPT;
{$EXTERNALSYM CREATE_DISK_GPT}
TCreateDiskGpt = CREATE_DISK_GPT;
PCreateDiskGpt = PCREATE_DISK_GPT;
//
// The structure CREATE_DISK_MBR with the ioctl IOCTL_DISK_CREATE_DISK
// to initialize an virgin disk with an empty MBR partition table.
//
PCREATE_DISK_MBR = ^CREATE_DISK_MBR;
{$EXTERNALSYM PCREATE_DISK_MBR}
_CREATE_DISK_MBR = record
Signature: DWORD;
end;
{$EXTERNALSYM _CREATE_DISK_MBR}
CREATE_DISK_MBR = _CREATE_DISK_MBR;
{$EXTERNALSYM CREATE_DISK_MBR}
TCreateDiskMbr = CREATE_DISK_MBR;
PCreateDiskMbr = PCREATE_DISK_MBR;
PCREATE_DISK = ^CREATE_DISK;
{$EXTERNALSYM PCREATE_DISK}
_CREATE_DISK = record
PartitionStyle: PARTITION_STYLE;
case Integer of
0: (Mbr: CREATE_DISK_MBR);
1: (Gpt: CREATE_DISK_GPT);
end;
{$EXTERNALSYM _CREATE_DISK}
CREATE_DISK = _CREATE_DISK;
{$EXTERNALSYM CREATE_DISK}
TCreateDisk = CREATE_DISK;
PCreateDisk = PCREATE_DISK;
//
// The structure GET_LENGTH_INFORMATION is used with the ioctl
// IOCTL_DISK_GET_LENGTH_INFO to obtain the length, in bytes, of the
// disk, partition, or volume.
//
PGET_LENGTH_INFORMATION = ^GET_LENGTH_INFORMATION;
{$EXTERNALSYM PGET_LENGTH_INFORMATION}
_GET_LENGTH_INFORMATION = record
Length: LARGE_INTEGER;
end;
{$EXTERNALSYM _GET_LENGTH_INFORMATION}
GET_LENGTH_INFORMATION = _GET_LENGTH_INFORMATION;
{$EXTERNALSYM GET_LENGTH_INFORMATION}
TGetLengthInformation = GET_LENGTH_INFORMATION;
PGetLengthInformation = PGET_LENGTH_INFORMATION;
//
// The PARTITION_INFORMATION_EX structure is used with the
// IOCTL_DISK_GET_DRIVE_LAYOUT_EX, IOCTL_DISK_SET_DRIVE_LAYOUT_EX,
// IOCTL_DISK_GET_PARTITION_INFO_EX and IOCTL_DISK_GET_PARTITION_INFO_EX calls.
//
PPARTITION_INFORMATION_EX = ^PARTITION_INFORMATION_EX;
{$EXTERNALSYM PPARTITION_INFORMATION_EX}
_PARTITION_INFORMATION_EX = record
PartitionStyle: PARTITION_STYLE;
StartingOffset: LARGE_INTEGER;
PartitionLength: LARGE_INTEGER;
PartitionNumber: DWORD;
RewritePartition: BOOLEAN;
case Integer of
0: (Mbr: PARTITION_INFORMATION_MBR);
1: (Gpt: PARTITION_INFORMATION_GPT);
end;
{$EXTERNALSYM _PARTITION_INFORMATION_EX}
PARTITION_INFORMATION_EX = _PARTITION_INFORMATION_EX;
{$EXTERNALSYM PARTITION_INFORMATION_EX}
TPartitionInformationEx = PARTITION_INFORMATION_EX;
PPartitionInformationEx = PPARTITION_INFORMATION_EX;
//
// GPT specific drive layout information.
//
PDRIVE_LAYOUT_INFORMATION_GPT = ^DRIVE_LAYOUT_INFORMATION_GPT;
{$EXTERNALSYM PDRIVE_LAYOUT_INFORMATION_GPT}
_DRIVE_LAYOUT_INFORMATION_GPT = record
DiskId: GUID;
StartingUsableOffset: LARGE_INTEGER;
UsableLength: LARGE_INTEGER;
MaxPartitionCount: DWORD;
end;
{$EXTERNALSYM _DRIVE_LAYOUT_INFORMATION_GPT}
DRIVE_LAYOUT_INFORMATION_GPT = _DRIVE_LAYOUT_INFORMATION_GPT;
{$EXTERNALSYM DRIVE_LAYOUT_INFORMATION_GPT}
TDriveLayoutInformationGpt = DRIVE_LAYOUT_INFORMATION_GPT;
PDriveLayoutInformationGpt = PDRIVE_LAYOUT_INFORMATION_GPT;
//
// MBR specific drive layout information.
//
PDRIVE_LAYOUT_INFORMATION_MBR = ^DRIVE_LAYOUT_INFORMATION_MBR;
{$EXTERNALSYM PDRIVE_LAYOUT_INFORMATION_MBR}
_DRIVE_LAYOUT_INFORMATION_MBR = record
Signature: DWORD;
end;
{$EXTERNALSYM _DRIVE_LAYOUT_INFORMATION_MBR}
DRIVE_LAYOUT_INFORMATION_MBR = _DRIVE_LAYOUT_INFORMATION_MBR;
{$EXTERNALSYM DRIVE_LAYOUT_INFORMATION_MBR}
TDriveLayoutInformationMbr = DRIVE_LAYOUT_INFORMATION_MBR;
PDriveLayoutInformationMbr = PDRIVE_LAYOUT_INFORMATION_MBR;
//
// The structure DRIVE_LAYOUT_INFORMATION_EX is used with the
// IOCTL_SET_DRIVE_LAYOUT_EX and IOCTL_GET_DRIVE_LAYOUT_EX calls.
//
PDRIVE_LAYOUT_INFORMATION_EX = ^DRIVE_LAYOUT_INFORMATION_EX;
{$EXTERNALSYM PDRIVE_LAYOUT_INFORMATION_EX}
_DRIVE_LAYOUT_INFORMATION_EX = record
PartitionStyle: DWORD;
PartitionCount: DWORD;
Union: record
case Integer of
0: (Mbr: DRIVE_LAYOUT_INFORMATION_MBR);
1: (Gpt: DRIVE_LAYOUT_INFORMATION_GPT);
end;
PartitionEntry: array [0..0] of PARTITION_INFORMATION_EX;
end;
{$EXTERNALSYM _DRIVE_LAYOUT_INFORMATION_EX}
DRIVE_LAYOUT_INFORMATION_EX = _DRIVE_LAYOUT_INFORMATION_EX;
{$EXTERNALSYM DRIVE_LAYOUT_INFORMATION_EX}
TDriveLayoutInformationEx = DRIVE_LAYOUT_INFORMATION_EX;
PDriveLayoutInformationEx = PDRIVE_LAYOUT_INFORMATION_EX;
//
// The DISK_GEOMETRY_EX structure is returned on issuing an
// IOCTL_DISK_GET_DRIVE_GEOMETRY_EX ioctl.
//
_DETECTION_TYPE = (
DetectNone,
DetectIn
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -