Jednostavno treba mi da pročitam određene sektore sa diska (FAT tabela i sl.) i da malo "prelistam" fajlove
Kod koji to radi bi trebalo ovako da izgleda:
var
handle,hFile: THandle;
lpBuffer: array [0..255] of char;
lpNumberOfBytesRead: Cardinal;
begin
handle:=CreateFile(PAnsiChar('\\.\C:'), GENERIC_READ,
FILE_SHARE_READ or FILE_SHARE_WRITE,
nil,
OPEN_EXISTING,
0,
0);
if handle=INVALID_HANDLE_VALUE then
raise Exception.Create('Invalid handle!');
SetFilePointer(handle,0,nil,FILE_BEGIN);
if ReadFile(handle, lpBuffer, SizeOf(lpBuffer), lpNumberOfBytesRead, nil) then
begin
lpBuffer[lpNumberOfBytesRead]:=#0;
ShowMessage(String(lpBuffer));
end;
CloseHandle(handle);
On otvara handle, ali pri čitanju uporno dobijam 0 bajtova pročitanih.
Zna li neko zašto?
Kod koji to radi bi trebalo ovako da izgleda:
var
handle,hFile: THandle;
lpBuffer: array [0..255] of char;
lpNumberOfBytesRead: Cardinal;
begin
handle:=CreateFile(PAnsiChar('\\.\C:'), GENERIC_READ,
FILE_SHARE_READ or FILE_SHARE_WRITE,
nil,
OPEN_EXISTING,
0,
0);
if handle=INVALID_HANDLE_VALUE then
raise Exception.Create('Invalid handle!');
SetFilePointer(handle,0,nil,FILE_BEGIN);
if ReadFile(handle, lpBuffer, SizeOf(lpBuffer), lpNumberOfBytesRead, nil) then
begin
lpBuffer[lpNumberOfBytesRead]:=#0;
ShowMessage(String(lpBuffer));
end;
CloseHandle(handle);
On otvara handle, ali pri čitanju uporno dobijam 0 bajtova pročitanih.
Zna li neko zašto?