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_WRITE inicjuje odciążanie bloku danych w systemie magazynu, który obsługuje odciążanie typów pierwotnych zapisu.
Aby wykonać tę operację, sterowniki minifiltru wywołają metodę FltFsControlFile z następującymi parametrami, systemami plików, przekierowaniami i starszymi sterownikami filtrów systemu plików wywołają plik ZwFsControlFile z następującymi parametrami.
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 zapisu. Ten parametr jest wymagany i nie może mieć wartości NULL.
FileHandle [in]: tylko ZwFsControlFile . Dojście do pliku do zapisu w pliku. Ten parametr jest wymagany i nie może mieć wartości NULL.
FsControlCode [in]: kod kontrolny operacji. Użyj FSCTL_OFFLOAD_WRITE dla tej operacji.
InputBuffer [in]: Wskaźnik do struktury FSCTL_OFFLOAD_WRITE_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_WRITE_INPUT).
OutputBuffer [out]: wskaźnik do struktury FSCTL_OFFLOAD_WRITE_INPUT , która zawiera rozmiar i przesunięcie bloku danych do 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_NOT_SUPPORTED | Operacje odciążania odczytu nie są obsługiwane na tym woluminie. |
| STATUS_OFFLOAD_WRITE_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_TOO_LATE | Operacja zapisu została podjęta na woluminie po jej odinstalowyniu. |
| 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 | Nie można udzielić dostępu do odczytu lub zapisu ze względu na bieżący stan blokowania pliku. |
| STATUS_END_OF_FILE | Element członkowski fileOffsetFSCTL_OFFLOAD_WRITE_INPUT rozpoczyna się po zakończeniu pliku (EOF). |
| STATUS_DISMOUNTED_VOLUME | Nie można odciążyć zapisu na woluminie odinstalowany. |
| STATUS_MEDIA_WRITE_PROTECTED | Wolumin jest tylko do odczytu. |
| STATUS_INSUFFICIENT_RESOURCES | Niewystarczające zasoby są dostępne do ukończenia żądania. |
| STATUS_BUFFER_TOO_SMALL | Właściwość InputBufferLength jest zbyt mała, aby właściwość InputBuffer zawierała strukturęFSCTL_OFFLOAD_WRITE_INPUT lub parametr OutputBufferLength jest zbyt mały, aby właściwość OutputBuffer odbierała strukturę FSCTL_OFFLOAD_WRITE_OUTPUT . |
Uwagi
Odciążanie odczytu jest dostępne tylko dla zwykłych plików. Zapoznaj się z opisem STATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED , aby uzyskać listę nieobsługiwanych typów plików.
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_OUTPUT). - Co najmniej jeden z tych elementów członkowskichFSCTL_OFFLOAD_WRITE_INPUT jest niepoprawny: FileOffset nie jest wielokrotnym rozmiarem sektora logicznego woluminu. CopyLength nie jest wielokrotnym rozmiarem sektora logicznego woluminu. TransferOffset nie jest wielokrotnym rozmiarem sektora logicznego woluminu. Rozmiar nie jest rozmiarem strukturyFSCTL_OFFLOAD_WRITE_INPUT . PlikOffset> Prawidłowa długość danych (VDL) dla pliku. PlikOffset + KopiujLength>MAXULONGLONG.
Requirements
| Typ wymagania | Wymaganie |
|---|---|
| Minimalny obsługiwany klient | Windows 8 |
| Header | Ntifs.h (w tym Ntifs.h lub Fltkernel.h) |