Hirdetés
Új hozzászólás Aktív témák
-
pmonitor
aktív tag
A következő kód:
using System;
using System.IO;
using System.Runtime.InteropServices;
namespace DiskProp
{
class Program
{
const uint IOCTL_DISK_GET_DRIVE_LAYOUT_EX = 0x70050;
public enum PARTITION_STYLE : int
{
MasterBootRecord = 0,
GuidPartitionTable = 1,
Raw = 2
}
[Serializable]
[StructLayout(LayoutKind.Sequential)]
public struct DRIVE_LAYOUT_INFORMATION_MBR
{
public long Signature;
}
[Serializable]
[StructLayout(LayoutKind.Sequential)]
public struct DRIVE_LAYOUT_INFORMATION_GPT
{
public Guid DiskId;
public long StartingUsableOffset;
public long UsableLength;
public long MaxPartitionCount;
}
[Serializable]
[StructLayout(LayoutKind.Explicit)]
public struct DRIVE_LAYOUT_INFORMATION_UNION
{
[FieldOffset(0)]
public DRIVE_LAYOUT_INFORMATION_MBR Mbr;
[FieldOffset(0)]
public DRIVE_LAYOUT_INFORMATION_GPT Gpt;
}
[StructLayout(LayoutKind.Sequential)]
public struct PARTITION_INFORMATION_MBR
{
public byte PartitionType;
public bool BootIndicator;
public bool RecognizedPartition;
public Int32 HiddenSectors;
}
[Flags]
public enum EFIPartitionAttributes : ulong
{
GPT_ATTRIBUTE_PLATFORM_REQUIRED = 0x0000000000000001,
LegacyBIOSBootable = 0x0000000000000004,
GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER = 0x8000000000000000,
GPT_BASIC_DATA_ATTRIBUTE_HIDDEN = 0x4000000000000000,
GPT_BASIC_DATA_ATTRIBUTE_SHADOW_COPY = 0x2000000000000000,
GPT_BASIC_DATA_ATTRIBUTE_READ_ONLY = 0x1000000000000000
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct PARTITION_INFORMATION_GPT
{
public Guid PartitionType;
public Guid PartitionId;
[MarshalAs(UnmanagedType.U8)]
public EFIPartitionAttributes Attributes;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 36)]
public string Name;
}
[StructLayout(LayoutKind.Explicit)]
public struct PARTITION_INFORMATION_UNION
{
[FieldOffset(0)]
public PARTITION_INFORMATION_MBR Mbr;
[FieldOffset(0)]
public PARTITION_INFORMATION_GPT Gpt;
}
[Serializable]
[StructLayout(LayoutKind.Sequential)]
public struct PARTITION_INFORMATION_EX
{
[MarshalAs(UnmanagedType.U4)]
public PARTITION_STYLE PartitionStyle;
public long StartingOffset;
public long PartitionLength;
public int PartitionNumber;
public bool RewritePartition;
public PARTITION_INFORMATION_UNION DriveLayoutInformaiton;
}
[Serializable]
[StructLayout(LayoutKind.Sequential)]
public struct DRIVE_LAYOUT_INFORMATION_EX
{
public PARTITION_STYLE PartitionStyle;
public int PartitionCount;
public DRIVE_LAYOUT_INFORMATION_UNION DriveLayoutInformaiton;
[MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 128)]
public PARTITION_INFORMATION_EX[] PartitionEntry;
}
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern IntPtr CreateFile(
[MarshalAs(UnmanagedType.LPTStr)] string filename,
[MarshalAs(UnmanagedType.U4)] FileAccess access,
[MarshalAs(UnmanagedType.U4)] FileShare share,
IntPtr securityAttributes, // optional SECURITY_ATTRIBUTES struct or IntPtr.Zero
[MarshalAs(UnmanagedType.U4)] FileMode creationDisposition,
[MarshalAs(UnmanagedType.U4)] FileAttributes flagsAndAttributes,
IntPtr templateFile
);
[DllImport("kernel32.dll", ExactSpelling = true, SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool DeviceIoControl(IntPtr hDevice, uint dwIoControlCode,
IntPtr lpInBuffer, uint nInBufferSize,
IntPtr lpOutBuffer, uint nOutBufferSize,
out uint lpBytesReturned, IntPtr lpOverlapped
);
static void Main(string[] args)
{
Type ts = typeof(DRIVE_LAYOUT_INFORMATION_EX);
int ss = Marshal.SizeOf(ts);
}
}
}Ezt a kivételt dobja:
Nem kezelt kivétel: System.ArgumentException: A típus („DiskProp.Program+DRIVE_LAYOUT_INFORMATION_EX”) nem adható át végrehajtásra nem felügyelt struktúraként; nem számítható ki értelmezhető méret vagy eltolás.
a következő helyen: System.Runtime.InteropServices.Marshal.SizeOf(Type t)A DRIVE_LAYOUT_INFORMATION_EX elég összetett struktúra. Nem tudom, hogy hol lehet a hiba. Van valami 5letetek?
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Samsung Galaxy A36 5G 6/128GB, Megkímélt, Kártyafüggetlen, Töltővel, Dobozzal, 1 Év Garanciával!
- Eladó Latitude 5520 15.6" FHD IPS i7-1185G7 NVIDIA GeForce MX450 16 512GB gar
- Apple watch ultra 3 hibátlan 2026.11.10. Apple jótállás
- Samsung Galaxy S22 Ultra 8/128GB, Megkímélt, Kártyafüggetlen, Töltővel, 1 Év Garanciával!
- Xiaomi Redmi 15 5G 4/128GB, Megkímélt, Kártyafüggetlen, Töltővel, Dobozzal, 1 Év Garanciával!
- iPhone 15 Pro Max 256GB 100% (1év Garancia)
- Csere-Beszámítás! Xbox Series S Játékkonzol!
- BESZÁMÍTÁS! ASUS H510M i5 11400F 16GB DDR4 500GB SSD RTX 2060 6GB Zalman T4 Plus Cooler Master 650W
- Samsung Galaxy S21 FE / 6/128GB / Kártyafüggetlen / 12Hó Garancia
- Dell 14 Latitude 5430 FHD IPS i7-1255U vPro 4.7Ghz 10mag 16GB 256GB Intel Iris XE Win11 LTE Garancia
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


