TRACE_QUERY_INFO_CLASS
列挙型メンバー 30
| 名前 | 10進 | 16進 | 説明 |
|---|---|---|---|
| TraceGuidQueryList | 0 | 0x0 | コンピューターに登録されているプロバイダーの GUID の配列を照会します。 |
| TraceGuidQueryInfo | 1 | 0x1 | 各セッションがプロバイダーを有効にするために使用した情報を照会します。 |
| TraceGuidQueryProcess | 2 | 0x2 | 呼び出し元プロセスと同じプロセス内で自身を登録したプロバイダーの GUID の配列を照会します。 |
| TraceStackTracingInfo | 3 | 0x3 | カーネルイベントに対するコールスタックトレースの設定を照会します。 CLASSIC_EVENT_ID 構造体の配列を返します。これらの構造体は、スタックトレースが有効になっているイベントの GUID を指定します。配列は 256 要素に制限されます。 この値は Windows 7、Windows Server 2008 R2 以降でサポートされます。 |
| TraceSystemTraceEnableFlagsInfo | 4 | 0x4 | システムトレースプロバイダーの EnableFlags の設定を照会します。詳細については、 EVENT_TRACE_PROPERTIES 構造体を参照してください。 この値は Windows 8、Windows Server 2012 以降でサポートされます。 |
| TraceSampledProfileIntervalInfo | 5 | 0x5 | 指定されたソースに対するサンプリングプロファイル間隔の設定を照会します。 この値は Windows 8、Windows Server 2012 以降でサポートされます。 |
| TraceProfileSourceConfigInfo | 6 | 0x6 | パフォーマンスモニタリングカウンターのプロファイルイベントが発生したときに収集される
プロファイリングソースの一覧を構成します。収集されたカウンターは この値は Windows 8、Windows Server 2012 以降でサポートされます。 |
| TraceProfileSourceListInfo | 7 | 0x7 | システムで利用可能なプロファイリングソースの一覧を照会します。 この値は Windows 8、Windows Server 2012 以降でサポートされます。 |
| TracePmcEventListInfo | 8 | 0x8 |
この値は Windows 8、Windows Server 2012 以降でサポートされます。 |
| TracePmcCounterListInfo | 9 | 0x9 |
この値は Windows 8、Windows Server 2012 以降でサポートされます。 |
| TraceSetDisallowList | 10 | 0xA | プロバイダーグループの有効化の一環として、このセッションに対しては有効化しない プロバイダーの一覧を設定します。詳細については、 Provider Traits を参照してください。 この値は Windows 10、Windows Server 2016 以降でサポートされます。 |
| TraceVersionInfo | 11 | 0xB | トレースファイルのバージョン情報を照会します。 この値は Windows 10、Windows Server 2016 以降でサポートされます。 |
| TraceGroupQueryList | 12 | 0xC | コンピューター上でアクティブなプロバイダーグループの GUID の配列を照会します。 |
| TraceGroupQueryInfo | 13 | 0xD | この値は Windows 10、Windows Server 2016 以降でサポートされます。 各セッションがプロバイダーグループを有効にするために使用した情報を照会します。 |
| TraceDisallowListQuery | 14 | 0xE | この値は Windows 10、Windows Server 2016 以降でサポートされます。 このセッションでグループの有効化が禁止されている GUID の配列を照会します。 この値は Windows 10、Windows Server 2016 以降でサポートされます。 |
| TraceInfoReserved15 | 15 | 0xF | 将来の使用のために予約済みです。使用しないでください。 |
| TracePeriodicCaptureStateListInfo | 16 | 0x10 | EnableTraceEx2 からの呼び出しと同様に、
詳細については、 TRACE_PERIODIC_CAPTURE_STATE_INFO を参照してください。 この値は Windows 10 バージョン 1709、Windows Server バージョン 1709 以降で サポートされます。 |
| TracePeriodicCaptureStateInfo | 17 | 0x11 | 最小の時間間隔や同時に構成できるプロバイダーの最大数など、システム上における定期的な キャプチャ状態設定の制限を照会します。 詳細については、 TRACE_PERIODIC_CAPTURE_STATE_INFO を参照してください。 この値は Windows 10 バージョン 1709、Windows Server バージョン 1709 以降で サポートされます。 |
| TraceProviderBinaryTracking | 18 | 0x12 | セッションに対して有効化されているすべてのプロバイダーについて、バイナリの追跡を開始する よう ETW に指示します。この追跡は、呼び出し時点でセッションに対して有効化されている プロバイダーだけでなく、以後セッションに対して有効化されるすべてのプロバイダーにも 適用されます。 ETW は、プロバイダー GUID と、追跡対象プロバイダーのコールバックを含むモジュールの パスとの対応付けを含む追跡イベントを生成します。リアルタイムセッションの場合、これらの イベントはリアルタイムバッファー内でライブに提供されます。ファイルベースのセッション (トレースが .etl ファイルに保存される場合)では、イベントは集約されてファイルヘッダーに 書き込まれ、.etl ファイルの再生時に ETW ランタイムが最初に提供するイベントの一部と なります。 バイナリ追跡イベントのプロバイダー ID は この値は Windows 10 バージョン 1709、Windows Server バージョン 1709 以降で サポートされます。 |
| TraceMaxLoggersQuery | 19 | 0x13 | オペレーティングシステムが許可する ETW ログセッションの最大数として現在構成されている値を 照会します。ULONG を返します。 EnumerateTraceGuidsEx と共に使用します。 この値は Windows 10 バージョン 1709、Windows Server バージョン 1709 以降で サポートされます。 |
| TraceLbrConfigurationInfo | 20 | 0x14 | 指定されたセッションに対して Last Branch Record トレースを有効にし、対応する LBR フィルターを構成します。 この値は Windows 10 バージョン 19H1、Windows Server バージョン 1903 以降で サポートされます。 |
| TraceLbrEventListInfo | 21 | 0x15 |
この値は Windows 10 バージョン 19H1、Windows Server バージョン 1903 以降で サポートされます。 |
| TraceMaxPmcCounterQuery | 22 | 0x16 | ETW で使用するために同時に構成できるプロファイリングソースの最大数を照会します。 この値は Windows 10 バージョン 19H1、Windows Server バージョン 1903 以降で サポートされます。 |
| TraceStreamCount | 23 | 0x17 | セッションに構成されているストリーム数を照会します。これは通常、システムのプロセッサ数と 等しくなりますが、常にそうとは限りません。セッションにプロセッサごとのバッファリングが 構成されていない場合は 1 になります。 この値は Windows 10 バージョン 21H2、Windows Server 2022 以降でサポートされます。 |
| TraceStackCachingInfo | 24 | 0x18 | このセッションにおいて、RegisterTraceGuids ベース(「クラシック」)のイベントの スタックトレースのキャッシュを開始するよう ETW に指示します。 この値は Windows 10 バージョン 21H2、Windows Server 2022 以降でサポートされます。 |
| TracePmcCounterOwners | 25 | 0x19 | 現在使用中のプロセッサのパフォーマンスモニタリングカウンターの一覧を ETW に照会します。 この一覧には、ETW 以外の機能が使用しているカウンターが含まれる場合があります。 この値は Windows 10 バージョン 21H2、Windows Server 2022 以降でサポートされます。 |
| TraceUnifiedStackCachingInfo | 26 | 0x1A | RegisterTraceGuids ベース(「クラシック」)のイベントと EventRegister ベースの イベントの両方について、スタックトレースのキャッシュを開始するよう ETW に指示します。 この値は Windows 10 バージョン 21H2、Windows Server 2022 以降でサポートされます。 |
| TracePmcSessionInformation | 27 | 0x1B |
この値は Windows 10 バージョン 22H2 以降でサポートされます。 |
| TraceContextRegisterInfo | 28 | 0x1C | コンテキストレジスターイベントを収集する対象となるシステムイベントの一覧を、セッションに 構成します。コンテキストレジスターイベントには、指定された関連イベントが発生した時点の CPU レジスターの内容が含まれます。 この値は Windows Server 23H2 以降でサポートされます。 |
| MaxTraceSetInfoClass | 29 | 0x1D | 列挙型の最後の値を示します。使用しないでください。 |
公式ドキュメント
EnumerateTraceGuidsEx、 TraceQueryInformation、または TraceSetInformation と共に使用して、 トレース情報の種類を指定します。
TRACE_INFO_CLASS と TRACE_QUERY_INFO_CLASS は、同じ列挙型に対する typedef であることに注意してください。
この列挙型の各値をどの API と共に使用すべきか、および対応するバッファーの入出力形式に
ついてのより包括的なドキュメントは、evntrace.h 内の TRACE_QUERY_INFO_CLASS
列挙型の定義にインラインで記載されています。
解説(Remarks)
TRACE_INFO_CLASS 列挙型と TRACE_QUERY_INFO_CLASS 列挙型は、どちらも同じ値を 定義します。いずれの列挙型も、 EnumerateTraceGuidsEx 関数または TraceSetInformation 関数と共に使用します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
列挙メンバーの定義。HSP タブは #define global(値は16進)。
typedef enum TRACE_QUERY_INFO_CLASS : int {
TraceGuidQueryList = 0,
TraceGuidQueryInfo = 1,
TraceGuidQueryProcess = 2,
TraceStackTracingInfo = 3,
TraceSystemTraceEnableFlagsInfo = 4,
TraceSampledProfileIntervalInfo = 5,
TraceProfileSourceConfigInfo = 6,
TraceProfileSourceListInfo = 7,
TracePmcEventListInfo = 8,
TracePmcCounterListInfo = 9,
TraceSetDisallowList = 10,
TraceVersionInfo = 11,
TraceGroupQueryList = 12,
TraceGroupQueryInfo = 13,
TraceDisallowListQuery = 14,
TraceInfoReserved15 = 15,
TracePeriodicCaptureStateListInfo = 16,
TracePeriodicCaptureStateInfo = 17,
TraceProviderBinaryTracking = 18,
TraceMaxLoggersQuery = 19,
TraceLbrConfigurationInfo = 20,
TraceLbrEventListInfo = 21,
TraceMaxPmcCounterQuery = 22,
TraceStreamCount = 23,
TraceStackCachingInfo = 24,
TracePmcCounterOwners = 25,
TraceUnifiedStackCachingInfo = 26,
TracePmcSessionInformation = 27,
TraceContextRegisterInfo = 28,
MaxTraceSetInfoClass = 29
} TRACE_QUERY_INFO_CLASS;public enum TRACE_QUERY_INFO_CLASS : int
{
TraceGuidQueryList = 0,
TraceGuidQueryInfo = 1,
TraceGuidQueryProcess = 2,
TraceStackTracingInfo = 3,
TraceSystemTraceEnableFlagsInfo = 4,
TraceSampledProfileIntervalInfo = 5,
TraceProfileSourceConfigInfo = 6,
TraceProfileSourceListInfo = 7,
TracePmcEventListInfo = 8,
TracePmcCounterListInfo = 9,
TraceSetDisallowList = 10,
TraceVersionInfo = 11,
TraceGroupQueryList = 12,
TraceGroupQueryInfo = 13,
TraceDisallowListQuery = 14,
TraceInfoReserved15 = 15,
TracePeriodicCaptureStateListInfo = 16,
TracePeriodicCaptureStateInfo = 17,
TraceProviderBinaryTracking = 18,
TraceMaxLoggersQuery = 19,
TraceLbrConfigurationInfo = 20,
TraceLbrEventListInfo = 21,
TraceMaxPmcCounterQuery = 22,
TraceStreamCount = 23,
TraceStackCachingInfo = 24,
TracePmcCounterOwners = 25,
TraceUnifiedStackCachingInfo = 26,
TracePmcSessionInformation = 27,
TraceContextRegisterInfo = 28,
MaxTraceSetInfoClass = 29,
}Public Enum TRACE_QUERY_INFO_CLASS As Integer
TraceGuidQueryList = 0
TraceGuidQueryInfo = 1
TraceGuidQueryProcess = 2
TraceStackTracingInfo = 3
TraceSystemTraceEnableFlagsInfo = 4
TraceSampledProfileIntervalInfo = 5
TraceProfileSourceConfigInfo = 6
TraceProfileSourceListInfo = 7
TracePmcEventListInfo = 8
TracePmcCounterListInfo = 9
TraceSetDisallowList = 10
TraceVersionInfo = 11
TraceGroupQueryList = 12
TraceGroupQueryInfo = 13
TraceDisallowListQuery = 14
TraceInfoReserved15 = 15
TracePeriodicCaptureStateListInfo = 16
TracePeriodicCaptureStateInfo = 17
TraceProviderBinaryTracking = 18
TraceMaxLoggersQuery = 19
TraceLbrConfigurationInfo = 20
TraceLbrEventListInfo = 21
TraceMaxPmcCounterQuery = 22
TraceStreamCount = 23
TraceStackCachingInfo = 24
TracePmcCounterOwners = 25
TraceUnifiedStackCachingInfo = 26
TracePmcSessionInformation = 27
TraceContextRegisterInfo = 28
MaxTraceSetInfoClass = 29
End Enumimport enum
class TRACE_QUERY_INFO_CLASS(enum.IntEnum):
TraceGuidQueryList = 0
TraceGuidQueryInfo = 1
TraceGuidQueryProcess = 2
TraceStackTracingInfo = 3
TraceSystemTraceEnableFlagsInfo = 4
TraceSampledProfileIntervalInfo = 5
TraceProfileSourceConfigInfo = 6
TraceProfileSourceListInfo = 7
TracePmcEventListInfo = 8
TracePmcCounterListInfo = 9
TraceSetDisallowList = 10
TraceVersionInfo = 11
TraceGroupQueryList = 12
TraceGroupQueryInfo = 13
TraceDisallowListQuery = 14
TraceInfoReserved15 = 15
TracePeriodicCaptureStateListInfo = 16
TracePeriodicCaptureStateInfo = 17
TraceProviderBinaryTracking = 18
TraceMaxLoggersQuery = 19
TraceLbrConfigurationInfo = 20
TraceLbrEventListInfo = 21
TraceMaxPmcCounterQuery = 22
TraceStreamCount = 23
TraceStackCachingInfo = 24
TracePmcCounterOwners = 25
TraceUnifiedStackCachingInfo = 26
TracePmcSessionInformation = 27
TraceContextRegisterInfo = 28
MaxTraceSetInfoClass = 29// TRACE_QUERY_INFO_CLASS
pub const TraceGuidQueryList: i32 = 0;
pub const TraceGuidQueryInfo: i32 = 1;
pub const TraceGuidQueryProcess: i32 = 2;
pub const TraceStackTracingInfo: i32 = 3;
pub const TraceSystemTraceEnableFlagsInfo: i32 = 4;
pub const TraceSampledProfileIntervalInfo: i32 = 5;
pub const TraceProfileSourceConfigInfo: i32 = 6;
pub const TraceProfileSourceListInfo: i32 = 7;
pub const TracePmcEventListInfo: i32 = 8;
pub const TracePmcCounterListInfo: i32 = 9;
pub const TraceSetDisallowList: i32 = 10;
pub const TraceVersionInfo: i32 = 11;
pub const TraceGroupQueryList: i32 = 12;
pub const TraceGroupQueryInfo: i32 = 13;
pub const TraceDisallowListQuery: i32 = 14;
pub const TraceInfoReserved15: i32 = 15;
pub const TracePeriodicCaptureStateListInfo: i32 = 16;
pub const TracePeriodicCaptureStateInfo: i32 = 17;
pub const TraceProviderBinaryTracking: i32 = 18;
pub const TraceMaxLoggersQuery: i32 = 19;
pub const TraceLbrConfigurationInfo: i32 = 20;
pub const TraceLbrEventListInfo: i32 = 21;
pub const TraceMaxPmcCounterQuery: i32 = 22;
pub const TraceStreamCount: i32 = 23;
pub const TraceStackCachingInfo: i32 = 24;
pub const TracePmcCounterOwners: i32 = 25;
pub const TraceUnifiedStackCachingInfo: i32 = 26;
pub const TracePmcSessionInformation: i32 = 27;
pub const TraceContextRegisterInfo: i32 = 28;
pub const MaxTraceSetInfoClass: i32 = 29;// TRACE_QUERY_INFO_CLASS
const (
TraceGuidQueryList int32 = 0
TraceGuidQueryInfo int32 = 1
TraceGuidQueryProcess int32 = 2
TraceStackTracingInfo int32 = 3
TraceSystemTraceEnableFlagsInfo int32 = 4
TraceSampledProfileIntervalInfo int32 = 5
TraceProfileSourceConfigInfo int32 = 6
TraceProfileSourceListInfo int32 = 7
TracePmcEventListInfo int32 = 8
TracePmcCounterListInfo int32 = 9
TraceSetDisallowList int32 = 10
TraceVersionInfo int32 = 11
TraceGroupQueryList int32 = 12
TraceGroupQueryInfo int32 = 13
TraceDisallowListQuery int32 = 14
TraceInfoReserved15 int32 = 15
TracePeriodicCaptureStateListInfo int32 = 16
TracePeriodicCaptureStateInfo int32 = 17
TraceProviderBinaryTracking int32 = 18
TraceMaxLoggersQuery int32 = 19
TraceLbrConfigurationInfo int32 = 20
TraceLbrEventListInfo int32 = 21
TraceMaxPmcCounterQuery int32 = 22
TraceStreamCount int32 = 23
TraceStackCachingInfo int32 = 24
TracePmcCounterOwners int32 = 25
TraceUnifiedStackCachingInfo int32 = 26
TracePmcSessionInformation int32 = 27
TraceContextRegisterInfo int32 = 28
MaxTraceSetInfoClass int32 = 29
)const
TraceGuidQueryList = 0;
TraceGuidQueryInfo = 1;
TraceGuidQueryProcess = 2;
TraceStackTracingInfo = 3;
TraceSystemTraceEnableFlagsInfo = 4;
TraceSampledProfileIntervalInfo = 5;
TraceProfileSourceConfigInfo = 6;
TraceProfileSourceListInfo = 7;
TracePmcEventListInfo = 8;
TracePmcCounterListInfo = 9;
TraceSetDisallowList = 10;
TraceVersionInfo = 11;
TraceGroupQueryList = 12;
TraceGroupQueryInfo = 13;
TraceDisallowListQuery = 14;
TraceInfoReserved15 = 15;
TracePeriodicCaptureStateListInfo = 16;
TracePeriodicCaptureStateInfo = 17;
TraceProviderBinaryTracking = 18;
TraceMaxLoggersQuery = 19;
TraceLbrConfigurationInfo = 20;
TraceLbrEventListInfo = 21;
TraceMaxPmcCounterQuery = 22;
TraceStreamCount = 23;
TraceStackCachingInfo = 24;
TracePmcCounterOwners = 25;
TraceUnifiedStackCachingInfo = 26;
TracePmcSessionInformation = 27;
TraceContextRegisterInfo = 28;
MaxTraceSetInfoClass = 29;// TRACE_QUERY_INFO_CLASS
pub const TraceGuidQueryList: i32 = 0;
pub const TraceGuidQueryInfo: i32 = 1;
pub const TraceGuidQueryProcess: i32 = 2;
pub const TraceStackTracingInfo: i32 = 3;
pub const TraceSystemTraceEnableFlagsInfo: i32 = 4;
pub const TraceSampledProfileIntervalInfo: i32 = 5;
pub const TraceProfileSourceConfigInfo: i32 = 6;
pub const TraceProfileSourceListInfo: i32 = 7;
pub const TracePmcEventListInfo: i32 = 8;
pub const TracePmcCounterListInfo: i32 = 9;
pub const TraceSetDisallowList: i32 = 10;
pub const TraceVersionInfo: i32 = 11;
pub const TraceGroupQueryList: i32 = 12;
pub const TraceGroupQueryInfo: i32 = 13;
pub const TraceDisallowListQuery: i32 = 14;
pub const TraceInfoReserved15: i32 = 15;
pub const TracePeriodicCaptureStateListInfo: i32 = 16;
pub const TracePeriodicCaptureStateInfo: i32 = 17;
pub const TraceProviderBinaryTracking: i32 = 18;
pub const TraceMaxLoggersQuery: i32 = 19;
pub const TraceLbrConfigurationInfo: i32 = 20;
pub const TraceLbrEventListInfo: i32 = 21;
pub const TraceMaxPmcCounterQuery: i32 = 22;
pub const TraceStreamCount: i32 = 23;
pub const TraceStackCachingInfo: i32 = 24;
pub const TracePmcCounterOwners: i32 = 25;
pub const TraceUnifiedStackCachingInfo: i32 = 26;
pub const TracePmcSessionInformation: i32 = 27;
pub const TraceContextRegisterInfo: i32 = 28;
pub const MaxTraceSetInfoClass: i32 = 29;const
TraceGuidQueryList* = 0
TraceGuidQueryInfo* = 1
TraceGuidQueryProcess* = 2
TraceStackTracingInfo* = 3
TraceSystemTraceEnableFlagsInfo* = 4
TraceSampledProfileIntervalInfo* = 5
TraceProfileSourceConfigInfo* = 6
TraceProfileSourceListInfo* = 7
TracePmcEventListInfo* = 8
TracePmcCounterListInfo* = 9
TraceSetDisallowList* = 10
TraceVersionInfo* = 11
TraceGroupQueryList* = 12
TraceGroupQueryInfo* = 13
TraceDisallowListQuery* = 14
TraceInfoReserved15* = 15
TracePeriodicCaptureStateListInfo* = 16
TracePeriodicCaptureStateInfo* = 17
TraceProviderBinaryTracking* = 18
TraceMaxLoggersQuery* = 19
TraceLbrConfigurationInfo* = 20
TraceLbrEventListInfo* = 21
TraceMaxPmcCounterQuery* = 22
TraceStreamCount* = 23
TraceStackCachingInfo* = 24
TracePmcCounterOwners* = 25
TraceUnifiedStackCachingInfo* = 26
TracePmcSessionInformation* = 27
TraceContextRegisterInfo* = 28
MaxTraceSetInfoClass* = 29enum TRACE_QUERY_INFO_CLASS : int {
TraceGuidQueryList = 0,
TraceGuidQueryInfo = 1,
TraceGuidQueryProcess = 2,
TraceStackTracingInfo = 3,
TraceSystemTraceEnableFlagsInfo = 4,
TraceSampledProfileIntervalInfo = 5,
TraceProfileSourceConfigInfo = 6,
TraceProfileSourceListInfo = 7,
TracePmcEventListInfo = 8,
TracePmcCounterListInfo = 9,
TraceSetDisallowList = 10,
TraceVersionInfo = 11,
TraceGroupQueryList = 12,
TraceGroupQueryInfo = 13,
TraceDisallowListQuery = 14,
TraceInfoReserved15 = 15,
TracePeriodicCaptureStateListInfo = 16,
TracePeriodicCaptureStateInfo = 17,
TraceProviderBinaryTracking = 18,
TraceMaxLoggersQuery = 19,
TraceLbrConfigurationInfo = 20,
TraceLbrEventListInfo = 21,
TraceMaxPmcCounterQuery = 22,
TraceStreamCount = 23,
TraceStackCachingInfo = 24,
TracePmcCounterOwners = 25,
TraceUnifiedStackCachingInfo = 26,
TracePmcSessionInformation = 27,
TraceContextRegisterInfo = 28,
MaxTraceSetInfoClass = 29,
}#define global TraceGuidQueryList 0x0
#define global TraceGuidQueryInfo 0x1
#define global TraceGuidQueryProcess 0x2
#define global TraceStackTracingInfo 0x3
#define global TraceSystemTraceEnableFlagsInfo 0x4
#define global TraceSampledProfileIntervalInfo 0x5
#define global TraceProfileSourceConfigInfo 0x6
#define global TraceProfileSourceListInfo 0x7
#define global TracePmcEventListInfo 0x8
#define global TracePmcCounterListInfo 0x9
#define global TraceSetDisallowList 0xA
#define global TraceVersionInfo 0xB
#define global TraceGroupQueryList 0xC
#define global TraceGroupQueryInfo 0xD
#define global TraceDisallowListQuery 0xE
#define global TraceInfoReserved15 0xF
#define global TracePeriodicCaptureStateListInfo 0x10
#define global TracePeriodicCaptureStateInfo 0x11
#define global TraceProviderBinaryTracking 0x12
#define global TraceMaxLoggersQuery 0x13
#define global TraceLbrConfigurationInfo 0x14
#define global TraceLbrEventListInfo 0x15
#define global TraceMaxPmcCounterQuery 0x16
#define global TraceStreamCount 0x17
#define global TraceStackCachingInfo 0x18
#define global TracePmcCounterOwners 0x19
#define global TraceUnifiedStackCachingInfo 0x1A
#define global TracePmcSessionInformation 0x1B
#define global TraceContextRegisterInfo 0x1C
#define global MaxTraceSetInfoClass 0x1D