-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


DeviceIoControl + IOCTL_DISK_SET_CACHE_INFORMATION Ошибка 24

Пятница, 16 Октября 2020 г. 11:45 + в цитатник
navodri: Пытаюсь изменить кэш диска, но получаю ошибку 24.

    type
    TScalarPrefetch = record
    Minimum: Word;
    Maximum: Word;
    MaximumBlocks: Word;
    end;
    TBlockPrefetch = record
    Minimum: Word;
    Maximum: Word;
    end;
    DISK_CACHE_RETENTION_PRIORITY = (EqualPriority, KeepPrefetchedData, KeepReadData);
    TDiskCacheRetentionPriority = DISK_CACHE_RETENTION_PRIORITY;
    _DISK_CACHE_INFORMATION = record
    ParametersSavable: Boolean;
    ReadCacheEnabled: Boolean;
    WriteCacheEnabled: Boolean;
    ReadRetentionPriority: DISK_CACHE_RETENTION_PRIORITY;
    WriteRetentionPriority: DISK_CACHE_RETENTION_PRIORITY;
    DisablePrefetchTransferLength: Word;
    PrefetchScalar: Bool;
    ScalarPrefetch: TScalarPrefetch;
    BlockPrefetch: TBlockPrefetch;
    end;
    DISK_CACHE_INFORMATION = _DISK_CACHE_INFORMATION;
    TDiskCacheInformation = DISK_CACHE_INFORMATION;
    const
    IOCTL_DISK_GET_CACHE_INFORMATION = {text}0740D4;
    IOCTL_DISK_SET_CACHE_INFORMATION = {text}07C0D8;
    IOCTL_DISK_SET_CACHE_SETTING = {text}07c0e4;
    IOCTL_DISK_GET_LENGTH_INFO = {text}07405C;
    procedure TForm1.Button2Click(Sender: TObject);
    var
    h: THandle;
    info: TDiskCacheInformation;
    response: DWord;
    E: Integer;
    begin
    h := CreateFile(PChar('\.\D:'), GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, 0);
    if h = INVALID_HANDLE_VALUE then begin
    ShowMessage('Can''t access disk.');
    Exit;
    end;
    info.WriteCacheEnabled := True;
    info.ReadCacheEnabled:= false;
    info.DisablePrefetchTransferLength := 1;
    if not DeviceIoControl(h, IOCTL_DISK_SET_CACHE_INFORMATION, nil, 0, @info, SizeOf(info), response, nil) then begin
    E:=GetLastError;
    Showmessage(Format('Error: %d', [E])); //ERROR 24
    Exit;
    end;
    CloseHandle(h);
    end;

https://forum.sources.ru/index.php?showtopic=420045&view=findpost&p=3840441

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку