#include <windows.h>
// NVME_POWER_STATE_DESC (x64 32 / x86 32 バイト)
typedef struct NVME_POWER_STATE_DESC {
WORD MP;
BYTE Reserved0;
BYTE _bitfield1;
DWORD ENLAT;
DWORD EXLAT;
BYTE _bitfield2;
BYTE _bitfield3;
BYTE _bitfield4;
BYTE _bitfield5;
WORD IDLP;
BYTE _bitfield6;
BYTE Reserved7;
WORD ACTP;
BYTE _bitfield7;
BYTE Reserved9[9];
} NVME_POWER_STATE_DESC;
// NVME_IDENTIFY_CONTROLLER_DATA (x64 4096 / x86 4096 バイト)
typedef struct NVME_IDENTIFY_CONTROLLER_DATA {
WORD VID;
WORD SSVID;
BYTE SN[20];
BYTE MN[40];
BYTE FR[8];
BYTE RAB;
BYTE IEEE[3];
_CMIC_e__Struct CMIC;
BYTE MDTS;
WORD CNTLID;
DWORD VER;
DWORD RTD3R;
DWORD RTD3E;
_OAES_e__Struct OAES;
_CTRATT_e__Struct CTRATT;
_RRLS_e__Struct RRLS;
BYTE Reserved0[9];
BYTE CNTRLTYPE;
BYTE FGUID[16];
WORD CRDT1;
WORD CRDT2;
WORD CRDT3;
BYTE Reserved1[106];
BYTE ReservedForManagement[13];
BYTE NVMSR;
BYTE VWCI;
BYTE MEC;
_OACS_e__Struct OACS;
BYTE ACL;
BYTE AERL;
_FRMW_e__Struct FRMW;
_LPA_e__Struct LPA;
BYTE ELPE;
BYTE NPSS;
_AVSCC_e__Struct AVSCC;
_APSTA_e__Struct APSTA;
WORD WCTEMP;
WORD CCTEMP;
WORD MTFA;
DWORD HMPRE;
DWORD HMMIN;
BYTE TNVMCAP[16];
BYTE UNVMCAP[16];
_RPMBS_e__Struct RPMBS;
WORD EDSTT;
BYTE DSTO;
BYTE FWUG;
WORD KAS;
_HCTMA_e__Struct HCTMA;
WORD MNTMT;
WORD MXTMT;
_SANICAP_e__Struct SANICAP;
DWORD HMMINDS;
WORD HMMAXD;
WORD NSETIDMAX;
WORD ENDGIDMAX;
BYTE ANATT;
_ANACAP_e__Struct ANACAP;
DWORD ANAGRPMAX;
DWORD NANAGRPID;
DWORD PELS;
WORD DomainId;
BYTE Reserved2[10];
BYTE MEGCAP[16];
BYTE TMPTHHA;
BYTE Reserved3;
WORD CQT;
BYTE Reserved4[124];
_SQES_e__Struct SQES;
_CQES_e__Struct CQES;
WORD MAXCMD;
DWORD NN;
_ONCS_e__Struct ONCS;
_FUSES_e__Struct FUSES;
_FNA_e__Struct FNA;
_VWC_e__Struct VWC;
WORD AWUN;
WORD AWUPF;
_NVSCC_e__Struct NVSCC;
_NWPC_e__Struct NWPC;
WORD ACWU;
WORD CopyDescFormats;
_SGLS_e__Struct SGLS;
DWORD MNAN;
BYTE MAXDNA[16];
DWORD MAXCNA;
BYTE Reserved6[204];
BYTE SUBNQN[256];
BYTE Reserved7[768];
DWORD IOCCSZ;
DWORD IORCSZ;
WORD ICDOFF;
_FCATT_e__Struct FCATT;
BYTE MSDBD;
_OFCS_e__Struct OFCS;
BYTE DCTYPE;
BYTE Reserved8[241];
NVME_POWER_STATE_DESC PDS[32];
BYTE VS[1024];
} NVME_IDENTIFY_CONTROLLER_DATA;
using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NVME_POWER_STATE_DESC
{
public ushort MP;
public byte Reserved0;
public byte _bitfield1;
public uint ENLAT;
public uint EXLAT;
public byte _bitfield2;
public byte _bitfield3;
public byte _bitfield4;
public byte _bitfield5;
public ushort IDLP;
public byte _bitfield6;
public byte Reserved7;
public ushort ACTP;
public byte _bitfield7;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 9)] public byte[] Reserved9;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NVME_IDENTIFY_CONTROLLER_DATA
{
public ushort VID;
public ushort SSVID;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 20)] public byte[] SN;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 40)] public byte[] MN;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public byte[] FR;
public byte RAB;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] IEEE;
public _CMIC_e__Struct CMIC;
public byte MDTS;
public ushort CNTLID;
public uint VER;
public uint RTD3R;
public uint RTD3E;
public _OAES_e__Struct OAES;
public _CTRATT_e__Struct CTRATT;
public _RRLS_e__Struct RRLS;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 9)] public byte[] Reserved0;
public byte CNTRLTYPE;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public byte[] FGUID;
public ushort CRDT1;
public ushort CRDT2;
public ushort CRDT3;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 106)] public byte[] Reserved1;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 13)] public byte[] ReservedForManagement;
public byte NVMSR;
public byte VWCI;
public byte MEC;
public _OACS_e__Struct OACS;
public byte ACL;
public byte AERL;
public _FRMW_e__Struct FRMW;
public _LPA_e__Struct LPA;
public byte ELPE;
public byte NPSS;
public _AVSCC_e__Struct AVSCC;
public _APSTA_e__Struct APSTA;
public ushort WCTEMP;
public ushort CCTEMP;
public ushort MTFA;
public uint HMPRE;
public uint HMMIN;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public byte[] TNVMCAP;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public byte[] UNVMCAP;
public _RPMBS_e__Struct RPMBS;
public ushort EDSTT;
public byte DSTO;
public byte FWUG;
public ushort KAS;
public _HCTMA_e__Struct HCTMA;
public ushort MNTMT;
public ushort MXTMT;
public _SANICAP_e__Struct SANICAP;
public uint HMMINDS;
public ushort HMMAXD;
public ushort NSETIDMAX;
public ushort ENDGIDMAX;
public byte ANATT;
public _ANACAP_e__Struct ANACAP;
public uint ANAGRPMAX;
public uint NANAGRPID;
public uint PELS;
public ushort DomainId;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)] public byte[] Reserved2;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public byte[] MEGCAP;
public byte TMPTHHA;
public byte Reserved3;
public ushort CQT;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 124)] public byte[] Reserved4;
public _SQES_e__Struct SQES;
public _CQES_e__Struct CQES;
public ushort MAXCMD;
public uint NN;
public _ONCS_e__Struct ONCS;
public _FUSES_e__Struct FUSES;
public _FNA_e__Struct FNA;
public _VWC_e__Struct VWC;
public ushort AWUN;
public ushort AWUPF;
public _NVSCC_e__Struct NVSCC;
public _NWPC_e__Struct NWPC;
public ushort ACWU;
public ushort CopyDescFormats;
public _SGLS_e__Struct SGLS;
public uint MNAN;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public byte[] MAXDNA;
public uint MAXCNA;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 204)] public byte[] Reserved6;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public byte[] SUBNQN;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 768)] public byte[] Reserved7;
public uint IOCCSZ;
public uint IORCSZ;
public ushort ICDOFF;
public _FCATT_e__Struct FCATT;
public byte MSDBD;
public _OFCS_e__Struct OFCS;
public byte DCTYPE;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 241)] public byte[] Reserved8;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public NVME_POWER_STATE_DESC[] PDS;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)] public byte[] VS;
}
Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NVME_POWER_STATE_DESC
Public MP As UShort
Public Reserved0 As Byte
Public _bitfield1 As Byte
Public ENLAT As UInteger
Public EXLAT As UInteger
Public _bitfield2 As Byte
Public _bitfield3 As Byte
Public _bitfield4 As Byte
Public _bitfield5 As Byte
Public IDLP As UShort
Public _bitfield6 As Byte
Public Reserved7 As Byte
Public ACTP As UShort
Public _bitfield7 As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=9)> Public Reserved9() As Byte
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NVME_IDENTIFY_CONTROLLER_DATA
Public VID As UShort
Public SSVID As UShort
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=20)> Public SN() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=40)> Public MN() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public FR() As Byte
Public RAB As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=3)> Public IEEE() As Byte
Public CMIC As _CMIC_e__Struct
Public MDTS As Byte
Public CNTLID As UShort
Public VER As UInteger
Public RTD3R As UInteger
Public RTD3E As UInteger
Public OAES As _OAES_e__Struct
Public CTRATT As _CTRATT_e__Struct
Public RRLS As _RRLS_e__Struct
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=9)> Public Reserved0() As Byte
Public CNTRLTYPE As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public FGUID() As Byte
Public CRDT1 As UShort
Public CRDT2 As UShort
Public CRDT3 As UShort
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=106)> Public Reserved1() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=13)> Public ReservedForManagement() As Byte
Public NVMSR As Byte
Public VWCI As Byte
Public MEC As Byte
Public OACS As _OACS_e__Struct
Public ACL As Byte
Public AERL As Byte
Public FRMW As _FRMW_e__Struct
Public LPA As _LPA_e__Struct
Public ELPE As Byte
Public NPSS As Byte
Public AVSCC As _AVSCC_e__Struct
Public APSTA As _APSTA_e__Struct
Public WCTEMP As UShort
Public CCTEMP As UShort
Public MTFA As UShort
Public HMPRE As UInteger
Public HMMIN As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public TNVMCAP() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public UNVMCAP() As Byte
Public RPMBS As _RPMBS_e__Struct
Public EDSTT As UShort
Public DSTO As Byte
Public FWUG As Byte
Public KAS As UShort
Public HCTMA As _HCTMA_e__Struct
Public MNTMT As UShort
Public MXTMT As UShort
Public SANICAP As _SANICAP_e__Struct
Public HMMINDS As UInteger
Public HMMAXD As UShort
Public NSETIDMAX As UShort
Public ENDGIDMAX As UShort
Public ANATT As Byte
Public ANACAP As _ANACAP_e__Struct
Public ANAGRPMAX As UInteger
Public NANAGRPID As UInteger
Public PELS As UInteger
Public DomainId As UShort
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=10)> Public Reserved2() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public MEGCAP() As Byte
Public TMPTHHA As Byte
Public Reserved3 As Byte
Public CQT As UShort
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=124)> Public Reserved4() As Byte
Public SQES As _SQES_e__Struct
Public CQES As _CQES_e__Struct
Public MAXCMD As UShort
Public NN As UInteger
Public ONCS As _ONCS_e__Struct
Public FUSES As _FUSES_e__Struct
Public FNA As _FNA_e__Struct
Public VWC As _VWC_e__Struct
Public AWUN As UShort
Public AWUPF As UShort
Public NVSCC As _NVSCC_e__Struct
Public NWPC As _NWPC_e__Struct
Public ACWU As UShort
Public CopyDescFormats As UShort
Public SGLS As _SGLS_e__Struct
Public MNAN As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public MAXDNA() As Byte
Public MAXCNA As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=204)> Public Reserved6() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=256)> Public SUBNQN() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=768)> Public Reserved7() As Byte
Public IOCCSZ As UInteger
Public IORCSZ As UInteger
Public ICDOFF As UShort
Public FCATT As _FCATT_e__Struct
Public MSDBD As Byte
Public OFCS As _OFCS_e__Struct
Public DCTYPE As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=241)> Public Reserved8() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=32)> Public PDS() As NVME_POWER_STATE_DESC
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=1024)> Public VS() As Byte
End Structure