#include <windows.h>
// NVM_RESERVATION_CAPABILITIES (x64 1 / x86 1 バイト)
typedef struct NVM_RESERVATION_CAPABILITIES {
_Anonymous_e__Struct Anonymous;
BYTE AsUchar;
} NVM_RESERVATION_CAPABILITIES;
// NVME_LBA_FORMAT (x64 4 / x86 4 バイト)
typedef struct NVME_LBA_FORMAT {
_Anonymous_e__Struct Anonymous;
DWORD AsUlong;
} NVME_LBA_FORMAT;
// NVME_IDENTIFY_NAMESPACE_DATA (x64 4096 / x86 4096 バイト)
typedef struct NVME_IDENTIFY_NAMESPACE_DATA {
ULONGLONG NSZE;
ULONGLONG NCAP;
ULONGLONG NUSE;
_NSFEAT_e__Struct NSFEAT;
BYTE NLBAF;
_FLBAS_e__Struct FLBAS;
_MC_e__Struct MC;
_DPC_e__Struct DPC;
_DPS_e__Struct DPS;
_NMIC_e__Struct NMIC;
NVM_RESERVATION_CAPABILITIES RESCAP;
_FPI_e__Struct FPI;
_DLFEAT_e__Struct DLFEAT;
WORD NAWUN;
WORD NAWUPF;
WORD NACWU;
WORD NABSN;
WORD NABO;
WORD NABSPF;
WORD NOIOB;
BYTE NVMCAP[16];
WORD NPWG;
WORD NPWA;
WORD NPDG;
WORD NPDA;
WORD NOWS;
WORD MSSRL;
DWORD MCL;
BYTE MSRC;
BYTE Reserved2[11];
DWORD ANAGRPID;
BYTE Reserved3[3];
_NSATTR_e__Struct NSATTR;
WORD NVMSETID;
WORD ENDGID;
BYTE NGUID[16];
BYTE EUI64[8];
NVME_LBA_FORMAT LBAF[64];
BYTE VS[3712];
} NVME_IDENTIFY_NAMESPACE_DATA;
using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NVM_RESERVATION_CAPABILITIES
{
public _Anonymous_e__Struct Anonymous;
public byte AsUchar;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NVME_LBA_FORMAT
{
public _Anonymous_e__Struct Anonymous;
public uint AsUlong;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NVME_IDENTIFY_NAMESPACE_DATA
{
public ulong NSZE;
public ulong NCAP;
public ulong NUSE;
public _NSFEAT_e__Struct NSFEAT;
public byte NLBAF;
public _FLBAS_e__Struct FLBAS;
public _MC_e__Struct MC;
public _DPC_e__Struct DPC;
public _DPS_e__Struct DPS;
public _NMIC_e__Struct NMIC;
public NVM_RESERVATION_CAPABILITIES RESCAP;
public _FPI_e__Struct FPI;
public _DLFEAT_e__Struct DLFEAT;
public ushort NAWUN;
public ushort NAWUPF;
public ushort NACWU;
public ushort NABSN;
public ushort NABO;
public ushort NABSPF;
public ushort NOIOB;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public byte[] NVMCAP;
public ushort NPWG;
public ushort NPWA;
public ushort NPDG;
public ushort NPDA;
public ushort NOWS;
public ushort MSSRL;
public uint MCL;
public byte MSRC;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 11)] public byte[] Reserved2;
public uint ANAGRPID;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public byte[] Reserved3;
public _NSATTR_e__Struct NSATTR;
public ushort NVMSETID;
public ushort ENDGID;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)] public byte[] NGUID;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public byte[] EUI64;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public NVME_LBA_FORMAT[] LBAF;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3712)] public byte[] VS;
}
Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NVM_RESERVATION_CAPABILITIES
Public Anonymous As _Anonymous_e__Struct
Public AsUchar As Byte
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NVME_LBA_FORMAT
Public Anonymous As _Anonymous_e__Struct
Public AsUlong As UInteger
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NVME_IDENTIFY_NAMESPACE_DATA
Public NSZE As ULong
Public NCAP As ULong
Public NUSE As ULong
Public NSFEAT As _NSFEAT_e__Struct
Public NLBAF As Byte
Public FLBAS As _FLBAS_e__Struct
Public MC As _MC_e__Struct
Public DPC As _DPC_e__Struct
Public DPS As _DPS_e__Struct
Public NMIC As _NMIC_e__Struct
Public RESCAP As NVM_RESERVATION_CAPABILITIES
Public FPI As _FPI_e__Struct
Public DLFEAT As _DLFEAT_e__Struct
Public NAWUN As UShort
Public NAWUPF As UShort
Public NACWU As UShort
Public NABSN As UShort
Public NABO As UShort
Public NABSPF As UShort
Public NOIOB As UShort
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public NVMCAP() As Byte
Public NPWG As UShort
Public NPWA As UShort
Public NPDG As UShort
Public NPDA As UShort
Public NOWS As UShort
Public MSSRL As UShort
Public MCL As UInteger
Public MSRC As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=11)> Public Reserved2() As Byte
Public ANAGRPID As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=3)> Public Reserved3() As Byte
Public NSATTR As _NSATTR_e__Struct
Public NVMSETID As UShort
Public ENDGID As UShort
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> Public NGUID() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public EUI64() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public LBAF() As NVME_LBA_FORMAT
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=3712)> Public VS() As Byte
End Structure