Win32 API 日本語リファレンス
ホームSystem.Ioctl › PARTITION_INFORMATION_GPT

PARTITION_INFORMATION_GPT

構造体
サイズx64: 112 バイト / x86: 112 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
PartitionTypeGUID16+0+0

パーティションの種類を識別する GUID です。

EFI 仕様がサポートする各パーティションの種類は、そのパーティションの開発者が公開する固有の GUID によって識別されます。

このメンバーには次のいずれかの値を指定できます。

意味
PARTITION_BASIC_DATA_GUID
ebd0a0a2-b9e5-4433-87c0-68b6b72699c7
Windows によって作成され、認識されるデータ パーティションの種類です。

ドライブ文字を割り当てられ、ボリューム GUID パスを受け取り、マウントされたフォルダー (ボリューム マウント ポイントとも呼ばれます) をホストでき、 FindFirstVolume および FindNextVolume の呼び出しによって列挙されるのは、この種類のパーティションだけです。

この値は、1 つの例外を除いてベーシック ディスクに対してのみ設定できます。ベーシック ディスク上のパーティションに PARTITION_BASIC_DATA_GUIDGPT_ATTRIBUTE_PLATFORM_REQUIRED の両方が設定されており、そのディスクが後からダイナミック ディスクに変換された場合、 ディスクの残りの部分がダイナミック ディスクであっても、そのパーティションはベーシック パーティションのままになります。これは、そのパーティションが GPT ディスク上の OEM パーティションと見なされるためです。

PARTITION_ENTRY_UNUSED_GUID
00000000-0000-0000-0000-000000000000
パーティションはありません。

この値はベーシック ディスクとダイナミック ディスクの両方に設定できます。

PARTITION_SYSTEM_GUID
c12a7328-f81f-11d2-ba4b-00a0c93ec93b
パーティションは EFI システム パーティションです。

この値はベーシック ディスクとダイナミック ディスクの両方に設定できます。

PARTITION_MSFT_RESERVED_GUID
e3c9e316-0b5c-4db8-817d-f92df00215ae
パーティションは Microsoft 予約パーティションです。

この値はベーシック ディスクとダイナミック ディスクの両方に設定できます。

PARTITION_LDM_METADATA_GUID
5808c8aa-7e8f-42e0-85d2-e1e90434cfb3
パーティションは、ダイナミック ディスク上の論理ディスク マネージャー (LDM) メタデータ パーティションです。

この値はダイナミック ディスクに対してのみ設定できます。

PARTITION_LDM_DATA_GUID
af9b60a0-1431-4f62-bc68-3311714a69ad
パーティションは、ダイナミック ディスク上の LDM データ パーティションです。

この値はダイナミック ディスクに対してのみ設定できます。

PARTITION_MSFT_RECOVERY_GUID
de94bba4-06d1-4d40-a16a-bfd50179d6ac
パーティションは Microsoft 回復パーティションです。

この値はベーシック ディスクとダイナミック ディスクの両方に設定できます。

PartitionIdGUID16+16+16パーティションの GUID です。
AttributesGPT_ATTRIBUTES8+32+32

パーティションの Extensible Firmware Interface (EFI) 属性です。

このメンバーには次の値の 1 つ以上を指定できます。

意味
GPT_ATTRIBUTE_PLATFORM_REQUIRED
0x0000000000000001
この属性が設定されている場合、そのパーティションはコンピューターが正常に動作するために必要です。

たとえば、OEM パーティションではこの属性を設定する必要があります。この属性が設定されている場合、 DiskPart.exe ユーティリティを使用して、 パーティションの削除などのパーティション操作を実行できることに注意してください。ただし、そのパーティションはボリュームではないため、 DiskPart.exe ユーティリティを使用して そのパーティションに対するボリューム操作を実行することはできません。

この属性はベーシック ディスクとダイナミック ディスクの両方に設定できます。ベーシック ディスク上のパーティションに設定されており、 そのディスクがダイナミック ディスクに変換された場合、ディスクの残りの部分がダイナミック ディスクであっても、そのパーティションはベーシック パーティションのままになります。これは、そのパーティションが GPT ディスク上の OEM パーティションと見なされるためです。

GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER
0x8000000000000000
この属性が設定されている場合、ディスクが別のコンピューターに移動されたとき、またはコンピューターがそのディスクを初めて認識したときに、 そのパーティションには既定でドライブ文字が割り当てられません。

この属性はストレージ エリア ネットワーク (SAN) 環境で役立ちます。

名前に反して、この属性はベーシック ディスクとダイナミック ディスクの両方に設定できます。

GPT_BASIC_DATA_ATTRIBUTE_HIDDEN
0x4000000000000000
この属性が設定されている場合、そのパーティションはマウント マネージャーによって検出されません。

その結果、そのパーティションはドライブ文字を受け取らず、ボリューム GUID パスも受け取らず、マウントされたフォルダー (ボリューム マウント ポイントとも呼ばれます) をホストせず、 FindFirstVolume および FindNextVolume の呼び出しによって列挙されません。これにより、 ディスク デフラグ ツールなどのアプリケーションがそのパーティションにアクセスしないようになります。ボリューム シャドウ コピー サービス (VSS) はこの 属性を使用します。

名前に反して、この属性はベーシック ディスクとダイナミック ディスクの両方に設定できます。

GPT_BASIC_DATA_ATTRIBUTE_SHADOW_COPY
0x2000000000000000
この属性が設定されている場合、そのパーティションは別のパーティションのシャドウ コピーです。

VSS はこの属性を使用します。この属性は、ファイル システム フィルター ドライバーに基づくソフトウェア (ウイルス対策プログラムなど) に対して、 そのボリュームへのアタッチを回避するよう示すものです。

アプリケーションはこの属性を使用して、シャドウ コピー ボリュームと運用ボリュームを区別できます。たとえば高速復旧を行うアプリケーションは、 シャドウ コピー LUN を分離し、読み取り専用属性と非表示属性、およびこの属性をクリアします。この属性はシャドウ コピーの作成時に設定され、 シャドウ コピーが分離されるときにクリアされます。

名前に反して、この属性はベーシック ディスクとダイナミック ディスクの両方に設定できます。

Windows Server 2003: この属性は Windows Server 2003 with SP1 より前ではサポートされていません。

GPT_BASIC_DATA_ATTRIBUTE_READ_ONLY
0x1000000000000000
この属性が設定されている場合、そのパーティションは読み取り専用です。

パーティションへの書き込みは失敗します。 IOCTL_DISK_IS_WRITABLE は Win32 エラー コード ERROR_WRITE_PROTECT で失敗し、ファイル システムが存在する場合は読み取り専用でマウントされます。

VSS はこの属性を使用します。

ダイナミック ディスクに対してこの属性を設定しないでください。設定すると I/O エラーが発生し、ファイル システムが正しくマウントされなくなる ことがあります。

NameWCHAR72+40+40パーティションを説明するワイド文字列です。

公式ドキュメント

GUID パーティション テーブル (GPT) のパーティション情報を格納します。

解説(Remarks)

GPT パーティション形式は、Extended Firmware Interface (EFI) ファームウェアを使用するコンピューターの起動に使用される ディスクで必須です。GPT データ ディスクは、x86、x64、および Itanium ベースの アーキテクチャに配置できます。

Windows Server 2003 with SP1 以降、GPT は EFI を使用するプラットフォームだけでなく、 すべての Windows プラットフォームでサポートされています。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// PARTITION_INFORMATION_GPT  (x64 112 / x86 112 バイト)
typedef struct PARTITION_INFORMATION_GPT {
    GUID PartitionType;
    GUID PartitionId;
    GPT_ATTRIBUTES Attributes;
    WCHAR Name[36];
} PARTITION_INFORMATION_GPT;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct PARTITION_INFORMATION_GPT
{
    public Guid PartitionType;
    public Guid PartitionId;
    public ulong Attributes;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)] public string Name;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure PARTITION_INFORMATION_GPT
    Public PartitionType As Guid
    Public PartitionId As Guid
    Public Attributes As ULong
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=36)> Public Name As String
End Structure
import ctypes
from ctypes import wintypes

class PARTITION_INFORMATION_GPT(ctypes.Structure):
    _fields_ = [
        ("PartitionType", GUID),
        ("PartitionId", GUID),
        ("Attributes", ctypes.c_ulonglong),
        ("Name", ctypes.c_wchar * 36),
    ]
#[repr(C)]
pub struct PARTITION_INFORMATION_GPT {
    pub PartitionType: GUID,
    pub PartitionId: GUID,
    pub Attributes: u64,
    pub Name: [u16; 36],
}
import "golang.org/x/sys/windows"

type PARTITION_INFORMATION_GPT struct {
	PartitionType windows.GUID
	PartitionId windows.GUID
	Attributes uint64
	Name [36]uint16
}
type
  PARTITION_INFORMATION_GPT = record
    PartitionType: TGUID;
    PartitionId: TGUID;
    Attributes: UInt64;
    Name: array[0..35] of WideChar;
  end;
const PARTITION_INFORMATION_GPT = extern struct {
    PartitionType: GUID,
    PartitionId: GUID,
    Attributes: u64,
    Name: [36]u16,
};
type
  PARTITION_INFORMATION_GPT {.bycopy.} = object
    PartitionType: GUID
    PartitionId: GUID
    Attributes: uint64
    Name: array[36, uint16]
struct PARTITION_INFORMATION_GPT
{
    GUID PartitionType;
    GUID PartitionId;
    ulong Attributes;
    wchar[36] Name;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; PARTITION_INFORMATION_GPT サイズ: 112 バイト(x64)
dim st, 28    ; 4byte整数×28(構造体サイズ 112 / 4 切り上げ)
; PartitionType : GUID (+0, 16byte)  varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; PartitionId : GUID (+16, 16byte)  varptr(st)+16 を基点に操作(16byte:入れ子/配列)
; Attributes : GPT_ATTRIBUTES (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; Name : WCHAR (+40, 72byte)  varptr(st)+40 を基点に操作(72byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
    #field int Data1
    #field short Data2
    #field short Data3
    #field byte Data4 8
#endstruct

#defstruct global PARTITION_INFORMATION_GPT
    #field GUID PartitionType
    #field GUID PartitionId
    #field int64 Attributes
    #field wchar Name 36
#endstruct

stdim st, PARTITION_INFORMATION_GPT        ; NSTRUCT 変数を確保
st->Attributes = 100
mes "Attributes=" + st->Attributes