下記の例を見てください。デルファイは440バイトのCreateFileまたはWriteFileを使用します
WriteFile(hDevice、bfile、512、size、nil)then ShowMessage( 'Ok');
上記のように、私は512を使用しましたが、それは440で、以下のように、いいえ。
WriteFile(hDevice、bfile、440、size、nil)then ShowMessage( 'Ok');
私の質問は、どのように440バイト以下の512バイトを書くことができますか?
hDevice := CreateFile('\\.\PHYSICALDRIVE1', GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if hDevice <> INVALID_HANDLE_VALUE then
begin
bfile := CreateFile('C:\Users\Administrator\Downloads\bfile', GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if bfile <> INVALID_HANDLE_VALUE then
begin
ShowMessage(IntToStr(getlasterror));
//SetFilePointer(hDevice,0,nil,FILE_BEGIN); // replace 0 with sector that you wish to read
if WriteFile(hDevice, bfile, 440, size, nil) then ShowMessage('b');
ShowMessage(IntToStr(getlasterror));
CloseHandle(hDevice);
end;
end;
関数が失敗したときに 'GetLastError'は何を返しますか? –
@トム・ブルンベルク:それは2を返します! – nguyentu
OK、ドキュメントについて2とは何ですか? –