Конференция "WinAPI" » Буфер чтения для ReadFile [D5, WinXP]
 
  • Kemuri (03.11.07 04:18) [0]
    Задача: считать файл в память с помощью ReadFile.
    В SDK на ф-ию ReadFile дано такое описание:
    BOOL ReadFile(
    HANDLE hFile, // handle of file to read
    LPVOID lpBuffer, // address of buffer that receives data  
    DWORD nNumberOfBytesToRead, // number of bytes to read
    LPDWORD lpNumberOfBytesRead, // address of number of bytes read
    LPOVERLAPPED lpOverlapped // address of structure for data
    );
    Смотрим 2й пораметр - адрес буфера для получения данных. Но в Windows.pas он описан как Var Buffer, т е использовать указатель, полученый при помощи GlobalAlloc нельзя. И, казалось бы, логичейкий подход
    FileHandle:= CreateFile(.....
    FileSize:= GetFileSize(FileHandle....
    MemH:= GlobalAlloc(FileSize....
    MemPointer:= GlobalLock(MemH.....
    ReadFile(FileHandle, MemPointer, FileSize....
    не работает :(
    Есть ли способ обойти это (не используя циклическое чтение в локальную переменную)?
  • Reindeer Moss Eater © (03.11.07 09:09) [1]
    var P : Pointer;
    begin
    ....
    ReadFile(AFile,ANumberToRead,P^,ANumberReaded,nil);
  • Kemuri (03.11.07 19:43) [2]
    Спасибо!
 
Конференция "WinAPI" » Буфер чтения для ReadFile [D5, WinXP]
Есть новые Нет новых   [134431   +10][b:0][p:0]