Я могу использовать объект как указатель на него или ссылку на него. Я понимаю, что разница в том, что указатели необходимо удалять вручную, а ссылки остаются до тех пор, пока они не выйдут за рамки.
Когда мне следует использовать каждый из них? В чем практическая разница?
Ни один из этих вопросов не ответил на мои сомнения:
Я пытаюсь использовать следующий код, чтобы получить MBR из PhysicalDrive0
:
private static byte[] ReadMbr(string lpFileName)
{
byte[] mbr = new byte[512];
using (SafeFileHandle drive = CreateFile(
lpFileName: lpFileName,
dwDesiredAccess: (uint) EFileAccess.GenericRead, //DO NOT MODIFY THE MBR!!!
dwShareMode: (uint)EFileShare.Write | (uint)EFileShare.Read | (uint)EFileShare.Delete,
SecurityAttributes: IntPtr.Zero,
dwCreationDisposition: (uint) ECreationDisposition.OpenAlways,
dwFlagsAndAttributes: (uint)EFileAttributes.System,
hTemplateFile: IntPtr.Zero))
{
if (drive.IsInvalid)
throw new IOException("Unable to access drive. Win32 Error Code " + Marshal.GetLastWin32Error());
//Get the 1st 512 bytes of the volume (MBR)
using (FileStream stream = new FileStream(drive, FileAccess.Read))
{
stream.Read(mbr, 0, 512);
}
}
return mbr;
}
Я попытался передать
\\ . \ PhysicalDisk0
\\. \ PhysicalDrive0
\\. \ PhysicalDisk0:
\\. \ PhysicalDrive0
и ни один из них не работает. Я запускаю его как администратор. Я также могу получить \\. \ C:
для работы и отображения VBR без каких-либо проблем.
Для записи:
-Я использую Windows Server 2008 R2.