Delen via


Bestandsstromen (lokale bestandssystemen)

Een stream is een reeks bytes. In het NTFS-bestandssysteem bevatten streams de gegevens die naar een bestand worden geschreven en die meer informatie geven over een bestand dan kenmerken en eigenschappen. U kunt bijvoorbeeld een stroom maken die zoektrefwoorden bevat of de identiteit van het gebruikersaccount waarmee een bestand wordt gemaakt.

Elke stroom die is gekoppeld aan een bestand heeft een eigen toewijzingsgrootte, werkelijke grootte en geldige gegevenslengte:

  • De toewijzingsgrootte is de hoeveelheid schijfruimte die is gereserveerd voor een stream.
  • De werkelijke grootte is het aantal bytes dat wordt gebruikt door een beller.
  • De geldige gegevenslengte (VDL) is het aantal bytes dat is geïnitialiseerd op basis van de toewijzingsgrootte voor de stream.

Elke stream behoudt ook een eigen status voor compressie, versleuteling en parsiteit. Het FILE_ATTRIBUTE_SPARSE_FILE kenmerk voor het bestand wordt ingesteld in de dwFileAttributes lid van de WIN32_FIND_DATA structuur die is geretourneerd uit de FindFirstFile, FindFirstFileExen FindNextFile functies als een van de streams ooit is geparseerd. GetFileAttributes, GetFileAttributesEx, GetFileAttributesTransacted, GetFileInformationByHandleen GetFileInformationByHandleEx de sparsestatus van de standaardgegevensstroom retourneren als er geen stream is opgegeven.

Er zijn geen bestandstijden gekoppeld aan een stream. De bestandstijden voor een bestand worden bijgewerkt wanneer een stream in een bestand wordt bijgewerkt.

Opportunistische vergrendelingen worden per stream onderhouden. De modus voor delen wordt ook per stream onderhouden. Wanneer de toegang voor het verwijderen van een bestand wordt aangevraagd, controleert het besturingssysteem op verwijderingstoegang voor alle geopende streams in een bestand. Als een ander proces een stream heeft geopend zonder de machtiging FILE_SHARE_DELETE, kunt u het bestand niet openen voor het verwijderen van toegang.

Als een bestand dat wordt gekopieerd een gegevensstroom heeft en de netwerkomleiding wordt gebruikt, kan het bestand alleen worden gekopieerd als de client zowel de leesmachtiging als de machtiging leeskenmerken heeft.

Naamconventies voor streams

Wanneer u de windows-shell-opdrachtregel opgeeft, is de volledige naam van een stream 'bestandsnaam:stroomnaam:stroomtype', zoals in het volgende voorbeeld: 'myfile.dat:stream1:$DATA'.

Alle tekens die legaal zijn voor een bestandsnaam, zijn ook legaal voor de naam van de stream, inclusief spaties. Zie Een bestandeen naam geven voor meer informatie. Het stroomtype (ook wel een kenmerktypecode genoemd) is intern voor het NTFS-bestandssysteem. Gebruikers kunnen daarom geen nieuwe stroomtypen maken, maar ze kunnen bestaande NTFS-bestandssysteemtypen openen. Streamtypeaanduidingswaarden beginnen altijd met het dollarteken ($). Zie hieronder voor een lijst met stroomtypen.

Standaard is de standaardgegevensstroom niet-benoemd. Als u de standaardgegevensstroom volledig wilt opgeven, gebruikt u 'bestandsnaam::$DATA', waarbij $DATA het stroomtype is. Dit is het equivalent van "bestandsnaam". U kunt een benoemde stream in het bestand maken met behulp van de naamconventies voor bestanden. Houd er rekening mee dat '$DATA' een juridische stroomnaam is. De volledige naam van een stroom met de naam '$DATA' in een bestand met de naam 'voorbeeld' is bijvoorbeeld 'voorbeeld:$DATA:$DATA'. Als u een stream met de naam 'bar' in hetzelfde bestand hebt gemaakt, zou de volledige naam 'voorbeeld:bar:$DATA' zijn.

Bij het maken en werken met bestanden met namen van één teken, moet u de bestandsnaam vooraf laten gaan door een punt gevolgd door een backslash (.) of een volledig gekwalificeerde padnaam gebruiken. De reden hiervoor is dat Windows bestandsnamen van één teken als stationsletters behandelt. Wanneer een stationsletter wordt opgegeven met een relatief pad, scheidt een dubbele punt de stationsletter van het pad. Als er dubbelzinnigheid is over het feit of een naam van één teken een stationsletter of bestandsnaam is, wordt ervan uitgegaan dat het een stationsletter is als de tekenreeks na de dubbele punt een geldig pad is, zelfs als de stationsletter ongeldig is.

Stroomtypen

Hieronder volgt de lijst met NTFS-stroomtypen, ook wel kenmerktypecodes genoemd. Sommige stroomtypen zijn intern voor NTFS en hun indeling is niet-gedocumenteerd.

Stroomtype Beschrijving
::$ATTRIBUTE_LIST Bevat een lijst met alle kenmerken waaruit het bestand bestaat en identificeert waar elk kenmerk zich bevindt.
::$BITMAP Een bitmap die wordt gebruikt door indexen voor het beheren van de vrije ruimte van b-structuur voor een map. De b-boomstructuur wordt beheerd in segmenten van 4 kB (ongeacht de clustergrootte) en deze wordt gebruikt om de toewijzing van deze segmenten te beheren. Dit stroomtype is aanwezig in elke map.
::$DATA Gegevensstroom. De standaardgegevensstroom heeft geen naam. Gegevensstromen kunnen worden geïnventariseerd met behulp van de functies FindFirstStreamW en FindNextStreamW.
::$EA Bevat uitgebreide kenmerken.
::$EA_INFORMATION Bevat ondersteuningsinformatie over de uitgebreide kenmerken.
::$FILE_NAME De naam van het bestand, in Unicode-tekens. Dit omvat de korte naam van het bestand en eventuele vaste koppelingen.
::$INDEX_ALLOCATION Het stroomtype van een map. Wordt gebruikt voor het implementeren van bestandstoewijzing voor grote mappen. Deze stroom vertegenwoordigt de map zelf en bevat alle gegevens van de map. Wijzigingen in streams van dit type worden vastgelegd in het NTFS-wijzigingslogboek. De standaardstroomnaam van een $INDEX_ALLOCATION-stroomtype is $I 30, dus "DirName", "DirName::$INDEX_ALLOCATION" en "DirName:$I 30:$INDEX_ALLOCATION" zijn allemaal equivalent.
::$INDEX_ROOT Deze stroom vertegenwoordigt de hoofdmap van de b-boomstructuur van een index. Dit stroomtype is aanwezig in elke map.
::$LOGGED_UTILITY_STREAM Vergelijkbaar met ::$DATA, maar bewerkingen worden vastgelegd in het NTFS-wijzigingslogboek. Gebruikt door EFS en Transactional NTFS (TxF). Het paar ':StreamName:$StreamType' voor EFS is ':$EFS:$LOGGED_UTILITY_STREAM' en voor TxF is ':$TXF_DATA:$LOGGED_UTILITY_STREAM'.
::$OBJECT_ID Een id van 16 bytes die wordt gebruikt om het bestand voor de service voor het bijhouden van koppelingen te identificeren.
::$REPARSE_POINT Het reparsepunt gegevens.

 

Streams gebruiken