Udostępnij przez


kod kontrolny FSCTL_OFFLOAD_READ

Kod kontrolny FSCTL_OFFLOAD_READ inicjuje odciążanie bloku danych w systemie magazynu, który obsługuje odciążanie elementów pierwotnych odczytu.

Aby wykonać tę operację, wywołaj metodę FltFsControlFile lub ZwFsControlFile przy użyciu następujących parametrów.

Parametry

  • Wystąpienie [in]: Tylko fltFsControlFile . Nieprzezroczystym wskaźnikiem wystąpienia obiektu wywołującego. Ten parametr jest wymagany i nie może mieć wartości NULL.

  • FileObject [in]: Tylko fltFsControlFile . Obiekt wskaźnika pliku określający plik do odczytu. Ten parametr jest wymagany i nie może mieć wartości NULL.

  • FileHandle [in]: tylko ZwFsControlFile . Dojście do pliku do odczytu z pliku. Ten parametr jest wymagany i nie może mieć wartości NULL.

  • FsControlCode [in]: kod kontrolny operacji. Użyj FSCTL_OFFLOAD_READ dla tej operacji.

  • InputBuffer [in]: wskaźnik do struktury FSCTL_OFFLOAD_READ_INPUT , która zawiera rozmiar i przesunięcie bloku danych do odczytu.

  • InputBufferLength [in]: rozmiar w bajtach buforu wskazywanego przez inputBuffer. Ta wartość to sizeof(FSCTL_OFFLOAD_READ_INPUT).

  • OutputBuffer [out]: wskaźnik do struktury FSCTL_OFFLOAD_READ_OUTPUT , która odbiera wyniki operacji odciążania odczytu.

  • OutputBufferLength [out]: rozmiar w bajtach buforu wskazywanego przez parametr OutputBuffer . Ta wartość musi być co najmniej sizeof(FSCTL_OFFLOAD_READ_OUTPUT).

Blok stanu

Funkcja FltFsControlFile lub ZwFsControlFile zwraca STATUS_SUCCESS, jeśli operacja zakończy się pomyślnie. W przeciwnym razie odpowiednia funkcja może zwrócić jedną z następujących wartości NTSTATUS.

Code Meaning
STATUS_INVALID_DEVICE_REQUEST Określony uchwyt nie jest prawidłowym dojściem do pliku
STATUS_INVALID_PARAMETER Parametr jest nieprawidłowy. Zobacz uwagi.
STATUS_VOLUME_DISMOUNTED Wolumin systemu plików jest odinstalowany.
STATUS_NOT_SUPPORTED Operacje odciążania odczytu nie są obsługiwane na tym woluminie.
STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED Żądany typ pliku nie jest obsługiwany. Operacje odciążania nie są obsługiwane w następujących typach plików: plik transacted (TxF); Pliki inne niż użytkownik; Skompresowane pliki; Zaszyfrowane pliki; Pliki rozrzedłe; Pliki metadanych NTFS.
STATUS_FILE_DELETED Strumień danych dla tego pliku jest nieprawidłowy.
STATUS_FILE_CLOSED Dojście do pliku jest zamykane.
STATUS_INVALID_HANDLE Określony uchwyt pliku jest nieprawidłowy.
STATUS_FILE_LOCK_CONFLICT Niewystarczający dostęp do odczytu ze względu na bieżący stan blokowania pliku.
STATUS_END_OF_FILE Element członkowski fileOffsetFSCTL_OFFLOAD_READ_INPUT rozpoczyna się po zakończeniu pliku (EOF).
STATUS_DISMOUNTED_VOLUME Nie można odciążyć odczytu na woluminie odinstalowany.
STATUS_INSUFFICIENT_RESOURCES Niewystarczające zasoby są dostępne do ukończenia żądania.
STATUS_BUFFER_TOO_SMALL OutputBufferLength jest za mały, aby usługa OutputBuffer odbierała strukturę FSCTL_OFFLOAD_READ_OUTPUT .

Uwagi

Odciążanie odczytu jest dostępne tylko dla zwykłych plików. Zobacz opis STATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED , aby uzyskać listę nieobsługiwanych typów plików.

Odczyty mogą zaczynać się poza prawidłową długością danych (VDL), ale nie poza EOF.

Po zwróceniu STATUS_INVALID_PARAMETER błąd może być jednym z następujących nieprawidłowych parametrów:

  • Rozmiar pliku jest mniejszy niż PAGE_SIZE.
  • InputBufferLength<sizeof(FSCTL_OFFLOAD_READ_INPUT).
  • Co najmniej jeden z tych członków FSCTL_OFFLOAD_READ_INPUT jest niepoprawny:
    • FileOffset nie jest wielokrotnym rozmiarem sektora logicznego woluminu.
    • CopyLength nie jest wielokrotnym rozmiarem sektora logicznego woluminu.
    • Rozmiar nie jest rozmiarem struktury FSCTL_OFFLOAD_READ_INPUT .
    • PlikOffset + KopiujLength>MAXULONGLONG.

Requirements

Typ wymagania Wymaganie
Minimalny obsługiwany klient Windows 8
Header Ntifs.h (w tym Ntifs.h lub Fltkernel.h)

Zobacz także

FltFsControlFile

ZwFsControlFile

FSCTL_OFFLOAD_READ_INPUT

FSCTL_OFFLOAD_READ_OUTPUT