saeed-kh
یک شنبه 13 آذر 1390, 11:51 صبح
سلام.
در مورد اين كد كمكم كنيد.
ميخوام به آفست مورد نظر در درايو برم و چند بايت رو بخونم.
int nread = 0;
IntPtr handle = IntPtr.Zero;
byte[] buff = new byte[1024];
IntPtr newaddress = IntPtr.Zero;
long MFTAddress = bytepersector * sectorpercluster * (long)MFTStart;
string driveRoot = "\\\\.\\c:";
IntPtr hRoot = CreateFile(driveRoot,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
IntPtr.Zero,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
IntPtr.Zero);
SetFilePointerEx(hRoot, MFTAddress, ref newaddress, 0);
int error = GetLastError();
if (hRoot != IntPtr.Zero)
handle = ReadFile(hRoot, buff, 1024,ref nread, new System.Threading.NativeOverlapped());
آدرس MFTAddress رو درست ميگيرم،با winhex چك كردم.فقطSetFilePointer انگار كار نميكنه!!
در مورد اين كد كمكم كنيد.
ميخوام به آفست مورد نظر در درايو برم و چند بايت رو بخونم.
int nread = 0;
IntPtr handle = IntPtr.Zero;
byte[] buff = new byte[1024];
IntPtr newaddress = IntPtr.Zero;
long MFTAddress = bytepersector * sectorpercluster * (long)MFTStart;
string driveRoot = "\\\\.\\c:";
IntPtr hRoot = CreateFile(driveRoot,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
IntPtr.Zero,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
IntPtr.Zero);
SetFilePointerEx(hRoot, MFTAddress, ref newaddress, 0);
int error = GetLastError();
if (hRoot != IntPtr.Zero)
handle = ReadFile(hRoot, buff, 1024,ref nread, new System.Threading.NativeOverlapped());
آدرس MFTAddress رو درست ميگيرم،با winhex چك كردم.فقطSetFilePointer انگار كار نميكنه!!