Udostępnij za pośrednictwem


Strumienie plików (lokalne systemy plików)

Strumień to sekwencja bajtów. W systemie plików NTFS strumienie zawierają dane zapisywane w pliku i zawierają więcej informacji o pliku niż atrybuty i właściwości. Możesz na przykład utworzyć strumień zawierający słowa kluczowe wyszukiwania lub tożsamość konta użytkownika, które tworzy plik.

Każdy strumień skojarzony z plikiem ma własny rozmiar alokacji, rzeczywisty rozmiar i prawidłową długość danych:

  • Rozmiar alokacji to ilość miejsca na dysku zarezerwowanego dla strumienia.
  • Rzeczywisty rozmiar to liczba bajtów używanych przez obiekt wywołujący.
  • Prawidłowa długość danych (VDL) to liczba bajtów zainicjowanych z rozmiaru alokacji strumienia.

Każdy strumień zachowuje również swój własny stan kompresji, szyfrowania i rozrzedliwości. Atrybut FILE_ATTRIBUTE_SPARSE_FILE pliku jest ustawiony w dwFileAttribut es elementu członkowskiego WIN32_FIND_DATA struktury WIN32_FIND_DATA zwróconej z FindFirstFile, FindFirstFileExi FindNextFile funkcje, jeśli którykolwiek ze strumieni kiedykolwiek był rozrzedzony. GetFileAttributes, GetFileAttributesEx, GetFileAttributesTransacted, GetFileInformationByHandle, a GetFileInformationByHandleEx zwracają rozrzedzony stan domyślnego strumienia danych, jeśli nie określono żadnego strumienia.

Brak czasów pliku skojarzonych ze strumieniem. Czasy plików dla pliku są aktualizowane po zaktualizowaniu dowolnego strumienia w pliku.

Blokady oportunistyczne są utrzymywane na strumień. Tryby udostępniania są również obsługiwane na strumień. Po żądaniu usunięcia dostępu do pliku system operacyjny sprawdza, czy nie ma dostępu do usuwania na wszystkich otwartych strumieniach w pliku. Jeśli inny proces otworzył strumień bez uprawnień FILE_SHARE_DELETE, nie można otworzyć pliku w celu usunięcia dostępu.

Jeśli skopiowany plik zawiera strumień danych i jest używany przekierowanie sieciowe, plik można skopiować tylko wtedy, gdy klient ma uprawnienie do odczytu i atrybuty odczytu.

Konwencje nazewnictwa strumieni

Po określeniu w wierszu polecenia powłoki systemu Windows pełna nazwa strumienia to "nazwa pliku: nazwa strumienia:typ strumienia", jak w poniższym przykładzie: "myfile.dat:stream1:$DATA".

Wszystkie znaki, które są legalne dla nazwy pliku, są również legalne dla nazwy strumienia, w tym spacji. Aby uzyskać więcej informacji, zobacz Nazewnictwo pliku. Typ strumienia (nazywany również kodem typu atrybutu) jest wewnętrzny dla systemu plików NTFS. W związku z tym użytkownicy nie mogą tworzyć nowych typów strumieni, ale mogą otwierać istniejące typy systemu plików NTFS. Wartości specyfikatora typu strumienia zawsze zaczynają się od symbolu znaku dolara ($). Poniżej znajduje się lista typów strumieni.

Domyślnie domyślny strumień danych jest nienazwany. Aby w pełni określić domyślny strumień danych, użyj nazwy pliku::$DATA", gdzie $DATA jest typem strumienia. Jest to odpowiednik nazwy pliku". Możesz utworzyć nazwany strumień w pliku przy użyciu konwencji nazewnictwa plików . Należy pamiętać, że "$DATA" jest nazwą strumienia prawnego. Na przykład pełna nazwa strumienia o nazwie "$DATA" w pliku o nazwie "przykładowy" to "przykład:$DATA:$DATA". Jeśli utworzono strumień o nazwie "bar" w tym samym pliku, jego pełna nazwa to "przykład:bar:$DATA".

Podczas tworzenia i pracy z plikami, które mają nazwy jednoznakowe, prefiks nazwy pliku z kropką, po której następuje ukośnik odwrotny (.) lub użyj w pełni kwalifikowanej nazwy ścieżki. Powodem, dla którego należy to zrobić, jest to, że system Windows traktuje jednoznakowe nazwy plików jako litery dysku. Gdy litera dysku jest określona ze ścieżką względną, dwukropek oddziela literę dysku od ścieżki. Jeśli istnieje niejednoznaczność co do tego, czy jednoznaczny nazwa jest literą dysku lub nazwą pliku, system Windows zakłada, że jest to litera dysku, jeśli ciąg po dwukropku jest prawidłową ścieżką, nawet jeśli litera dysku jest nieprawidłowa.

Typy strumieni

Poniżej znajduje się lista typów strumieni NTFS, nazywanych również kodami typów atrybutów. Niektóre typy strumieni są wewnętrzne dla systemu plików NTFS, a ich format jest nieudokumentowany.

Typ strumienia Opis
::$ATTRIBUTE_LIST Zawiera listę wszystkich atrybutów tworzących plik i identyfikuje miejsce, w którym znajduje się każdy atrybut.
::$BITMAP Mapa bitowa używana przez indeksy do zarządzania wolnym miejscem b-tree dla katalogu. Drzewo b jest zarządzane w 4 KB fragmentów (niezależnie od rozmiaru klastra) i służy do zarządzania alokacją tych fragmentów. Ten typ strumienia jest obecny w każdym katalogu.
::$DATA Strumień danych. Domyślny strumień danych nie ma nazwy. Strumienie danych można wyliczyć przy użyciu funkcji FindFirstStreamW i FindNextStreamW.
::$EA Zawiera dane atrybutów rozszerzonych.
::$EA_INFORMATION Zawiera informacje o obsłudze atrybutów rozszerzonych.
::$FILE_NAME Nazwa pliku w znakach Unicode. Obejmuje to krótką nazwę pliku, a także wszelkie twarde linki.
::$INDEX_ALLOCATION Typ strumienia katalogu. Służy do implementowania alokacji nazw plików dla dużych katalogów. Ten strumień reprezentuje sam katalog i zawiera wszystkie dane katalogu. Zmiany strumieni tego typu są rejestrowane w dzienniku zmian NTFS. Domyślna nazwa strumienia typu strumienia $INDEX_ALLOCATION to $I 30, więc "DirName", "DirName::$INDEX_ALLOCATION" i "DirName:$I 30:$INDEX_ALLOCATION" są równoważne.
::$INDEX_ROOT Ten strumień reprezentuje katalog główny drzewa b indeksu. Ten typ strumienia jest obecny w każdym katalogu.
::$LOGGED_UTILITY_STREAM Podobnie jak ::$DATA, ale operacje są rejestrowane w dzienniku zmian NTFS. Używany przez system szyfrowania plików i transakcyjnego systemu plików NTFS (TxF). Para ":StreamName:$StreamType" to ":$EFS:$LOGGED_UTILITY_STREAM", a dla TxF to ":$TXF_DATA:$LOGGED_UTILITY_STREAM".
::$OBJECT_ID 16-bajtowy identyfikator używany do identyfikowania pliku dla usługi śledzenia linków.
::$REPARSE_POINT Punkt ponownej analizy danych.

 

przy użyciu usługi Streams