Streamy souborů (místní systémy souborů)
Datový proud je posloupnost bajtů. Streamy v systému souborů NTFS obsahují data zapsaná do souboru a poskytují více informací o souboru než atributy a vlastnosti. Můžete například vytvořit datový proud, který obsahuje klíčová slova vyhledávání, nebo identitu uživatelského účtu, který vytvoří soubor.
Každý datový proud přidružený k souboru má vlastní velikost přidělení, skutečnou velikost a platnou délku dat:
- Velikost přidělení je množství místa na disku, které je vyhrazené pro datový proud.
- Skutečná velikost je počet bajtů, které volající používá.
- Platná délka dat (VDL) je počet bajtů inicializovaných z velikosti přidělení datového proudu.
Každý datový proud také udržuje svůj vlastní stav pro kompresi, šifrování a zhuštěnost. Atribut FILE_ATTRIBUTE_SPARSE_FILE souboru je nastaven v dwFileAttributes člen struktury WIN32_FIND_DATA vrácené z FindFirstFile, FindFirstFileExa FindNextFile funkce, pokud některý ze streamů byl někdy řídký. GetFileAttributes, GetFileAttributesEx, GetFileAttributesTransacted, GetFileInformationByHandlea GetFileInformationByHandleEx vrátit řídký stav výchozího datového proudu, pokud není zadaný žádný datový proud.
Ke streamu nejsou přidruženy žádné časy souborů. Časy souborů pro soubor se aktualizují, když se aktualizuje jakýkoli datový proud v souboru.
Opportunistické zámky se udržují na jednotlivých datových proudech. Režimy sdílení se také udržují na jednotlivých datových proudech. Když je v souboru požadován přístup k odstranění, operační systém zkontroluje přístup k odstranění všech otevřených datových proudů v souboru. Pokud jiný proces otevřel datový proud bez oprávnění FILE_SHARE_DELETE, nemůžete soubor otevřít pro přístup k odstranění.
Pokud zkopírovaný soubor obsahuje datový proud a použije se přesměrovač sítě, soubor lze zkopírovat pouze v případě, že má klient oprávnění ke čtení i oprávnění ke čtení atributů čtení.
Zásady vytváření názvů pro streamy
Pokud je zadaný z příkazového řádku prostředí Windows, úplný název datového proudu je "název souboru:název datového proudu:typ datového proudu", jak je uvedeno v následujícím příkladu: "myfile.dat:stream1:$DATA".
Všechny znaky, které jsou legální pro název souboru, jsou pro název datového proudu také legální, včetně mezer. Další informace najdete v tématu Pojmenování souboru. Typ datového proudu (označovaný také jako kód typu atributu) je interní pro systém souborů NTFS. Uživatelé proto nemůžou vytvářet nové typy datových proudů, ale můžou otevřít existující typy systému souborů NTFS. Hodnoty specifikátoru typu stream vždy začínají symbolem dolaru ($). Seznam typů datových proudů najdete níže.
Ve výchozím nastavení je výchozí datový proud nepojmenovaný. Chcete-li plně zadat výchozí datový proud, použijte "název souboru::$DATA", kde $DATA je typ datového proudu. Toto je ekvivalent "název souboru". Pojmenovaný datový proud v souboru můžete vytvořit pomocí zásad vytváření názvů souborů . Všimněte si, že "$DATA" je název právního streamu. Například úplný název datového proudu s názvem "$DATA" v souboru s názvem "ukázkové" by byl "ukázka:$DATA:$DATA". Pokud jste vytvořili datový proud s názvem "bar" ve stejném souboru jeho úplný název by byl "ukázka:bar:$DATA".
Při vytváření a práci se soubory, které mají názvy jednoho znaku, předponu názvu souboru tečkou následovanou zpětným lomítkem (.) nebo použijte plně kvalifikovaný název cesty. Důvodem je, že Systém Windows považuje názvy souborů s jedním znakem za písmena jednotek. Pokud je zadáno písmeno jednotky s relativní cestou, dvojtečka odděluje písmeno jednotky od cesty. Pokud existuje nejednoznačnost ohledně toho, jestli je jednoznačný název jednotky nebo název souboru, systém Windows předpokládá, že se jedná o písmeno jednotky, pokud je řetězec za dvojtečka platnou cestou, i když je písmeno jednotky neplatné.
Typy datových proudů
Následuje seznamtypůch Některé typy datových proudů jsou interní pro systém souborů NTFS a jejich formát není v dokumentu.
Typ datového proudu | Popis |
---|---|
::$ATTRIBUTE_LIST | Obsahuje seznam všech atributů, které tvoří soubor a identifikuje, kde se nachází každý atribut. |
::$BITMAP | Rastrový obrázek používaný indexy ke správě volného místa b-stromu pro adresář. Strom b se spravuje v blocích 4 kB (bez ohledu na velikost clusteru) a slouží ke správě přidělování těchto bloků dat. Tento typ datového proudu se nachází v každém adresáři. |
::$DATA | Datový proud. Výchozí datový proud nemá žádný název. Datové proudy je možné vyčíslit pomocí funkcí FindFirstStreamW a FindNextStreamW. |
::$EA | Obsahuje data rozšířených atributů. |
::$EA_INFORMATION | Obsahuje informace o podpoře rozšířených atributů. |
::$FILE_NAME | Název souboru v znaky Unicode. To zahrnuje krátký název souboru i všechny pevné odkazy. |
::$INDEX_ALLOCATION | Typ datového proudu adresáře. Používá se k implementaci přidělování názvů souborů pro velké adresáře. Tento datový proud představuje samotný adresář a obsahuje všechna data adresáře. Změny datových proudů tohoto typu se protokolují do deníku změn NTFS. Výchozí název datového proudu typu datového proudu $INDEX_ALLOCATION je $I 30, takže "DirName", "DirName::$INDEX_ALLOCATION" a "DirName:$I 30:$INDEX_ALLOCATION" jsou ekvivalentní. |
::$INDEX_ROOT | Tento datový proud představuje kořen b-stromu indexu. Tento typ datového proudu se nachází v každém adresáři. |
::$LOGGED_UTILITY_STREAM | Podobá se ::$DATA ale operace se protokolují do deníku změn NTFS. Používá se systémem souborů EFS a transactional NTFS (TxF). Dvojice ":StreamName:$StreamType" pro SYSTÉM SOUBORŮ EFS je :$EFS:$LOGGED_UTILITY_STREAM a pro TxF je :$TXF_DATA:$LOGGED_UTILITY_STREAM. |
::$OBJECT_ID | ID 16 bajtů, které slouží k identifikaci souboru služby pro sledování odkazů. |
::$REPARSE_POINT | data spojovací bod. |
Související témata