Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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) |