Delen via


[Nieuwsbrievenarchief ^] [< Volume 1, Getal 4] [Volume 2, Getal 1 >]

The Systems Internals Newsletter Volume 1, Number 5

http://www.sysinternals.com
Copyright 1999 Mark Russinovich


12 oktober 1999 - In dit onderwerp:

  1. WAT IS ER NIEUW IN INTERNE SYSTEMEN

    • NTFS voor Windows 98/NTFSDOS Professional
    • DebugView v3.21
    • Filemon en Regmon v4.21
    • Diskmon v1.1
    • Interne systemen bij www.microsoft.com
    • Oktober "NT Internals"
    • Niet zo nieuw spul
  2. INTERN NIEUWS

    • Win2K RC2 DDK uitgebracht
    • Nieuwe Win2K RC Kernel API's
    • Softwareontwikkeling '99 - oost
    • DiskEdit gebruiken
  3. WAT KOMT ER AAN DE DAG?

    • Win2K API-explosie

SPONSOR: WINTERNALS SOFTWARE

De Systems Internals Newsletter wordt gesponsord door Winternals Software, op het web op http://www.winternals.com. Winternals Software is de toonaangevende ontwikkelaar en provider van geavanceerde systeemhulpprogramma's voor Windows NT/2K. Winternals Software-producten omvatten FAT32 voor Windows NT 4.0, ERD Commander (opstartschijfmogelijkheid voor Windows NT) en NTRecover.

Met Remote Recover van Winternals Software kunt u vanaf elke locatie in uw onderneming toegang krijgen tot de stations van een niet-opstartbare computer via TCP/IP. Bespaar tijd en ondersteuning door stuurprogramma-, bestandssysteem- en configuratieproblemen op afstand te corrigeren die NT- of Win9x-systemen off-line houden. U kunt zelfs externe chkdsk- of partitioneringsbewerkingen uitvoeren met behulp van Remote Recovery, waardoor het een veelzijdig hulpprogramma voor herstel na noodgevallen is. Download een gratis proefversie met het kenmerk Alleen-lezen op http://www.sysinternals.com/rrecover.htmen koop de lees-/schrijfversie op http://www.winternals.com.

Hallo allemaal,

Welkom bij de nieuwsbrief Systems Internals. De nieuwsbrief heeft momenteel 10.000 abonnees.

De release van Windows 2000 (Win2K) lijkt een patroon te volgen van aanstaande en vervolgens teruggeschoven te worden. De laatste geruchten zijn dat het in februari beschikbaar zal komen. En de enige informatie over de Win2K-verzenddatum is in geruchten, omdat Microsoft niet eens OEM's of partners vertelt wanneer het wordt verzonden. Ze zijn: "het zal worden verzonden als het klaar is" (ik dwing de datum van het verkopen van wijn hier niet af).

Het irritante van Microsoft is dat de pers die ze genereren over hun producten, het altijd lijkt alsof ze op de rand van verzending staan, zelfs als de producten dampware zijn. Het meest recente voorbeeld is Millennium, de opvolger van Windows 98. Microsoft heeft niet te lang geleden een grote duw in de pers gemaakt alsof het een eindproduct was, klaar om al uw huishoudelijke apparaten om te zetten in intelligente apparaten. De ironie is dat artikelen een korte tijd later onthulden dat Microsoft het product nog niet eens volledig heeft gedefinieerd, en dat het waarschijnlijk een jaar of meer zal zijn voordat we het op winkelschappen zien.

Dit patroon is niet nieuw en ik ben niet de eerste om erover te schrijven. Maar dat stopt me niet om te speculeren over hoeveel van de see-sawing een zorgvuldig ingedeeld plan is en hoeveel het resultaat is van een totaal gebrek aan software-engineering-principals. Als u in de vroegere hoek koopt, zoals samenzwerings theoristen doen, verstikt Microsoft de concurrentie briljant door klanten te tantaliseren met dat ongelooflijke product dat, als ze even langer wachten, hun wachttijd de moeite waard maakt en alle noodzaak om om te keren naar een niet-Microsoft-product. In de laatste hoek staat dat Microsoft het softwareontwikkelingsproces nooit zal leren en voortdurend technische inspanningen onderschat en de kwaliteit van bètacode overschat.

Ik zit op het hek om aan te geven aan welke theorie ik toeschrijft. Ik denk dat het patroon te wijten is aan een beetje van beide. Ik denk dat het Microsoft heeft geholpen om te fungeren als Active Directory al twee jaar bijna klaar is. Er zijn zeker klanten die lang geleden naar Novell Directory Services zouden zijn overgegaan als ze van tevoren hadden geweten hoe lang ze zouden moeten wachten op Win2K. Aan de andere kant heeft Microsoft herhaaldelijk zwarte ogen in de pers gekregen van veelbelovende productlevering en vervolgens vertraging. Ik denk dat het beheer van Microsoft niet begrijpt hoe moeilijk het is om die laatste 5% van de bugs te reproduceren, isoleren en oplossen.

Over de ontwikkelprocedures van Microsoft gesproken, is hun naamgevingsschema vóór de release een van de meest verbaasde die ik heb gezien. Hun bèta's zijn echt Alphas en hun release kandidaten zijn eigenlijk bèta's. En zelfs het gebruik van deze definities is een stretch: Microsoft heeft geen probleem met het verwijderen van functies uit hun software in het gaan van de ene releasekandidaat naar de volgende, of zelfs het toevoegen van nieuwe functies. Dat deden ze met NT 4.0 en ze doen het met Win2K. Die praktijk versnelt zeker geen releasecyclus.

Dus zal Win2K schip in februari? Ik denk dat we het licht aan het einde van de tunnel zien. Er zijn immers maar een handvol nieuwe API's in RC2...

Als vervolg op de laatste nieuwsbrief waar ik over verwarring over acroniem bij Microsoft sprak, vond lezer George Janczuk een ander voorbeeld. In de sectie getiteld :"Uitbreiden naar de Mainframe Transaction-Processing World", verwijst het artikel naar http://msdn.microsoft.com/library/backgrnd/html/msdn_windnapps.htm CISC - Complexe instructieset computing. Het is duidelijk voor iedereen die bekend is met mainframe-toepassingen dat het beoogde acroniem CICS - Customer Information Control System is. Een omgekeerde letterreeks en u bevindt zich in een totaal ander technologiegebied.

Geef zoals gebruikelijk de nieuwsbrief door aan vrienden die u denkt dat het interessant kan zijn.

Hartelijk dank!

-Merken

WAT IS ER NIEUW IN INTERNE SYSTEMEN

NTFS VOOR WINDOWS 98/NTFSDOS PROFESSIONAL

We hebben het eindelijk gedaan. Sinds Bryce en ik NTFSDOS 1.0 in het voorjaar van 1996 hebben uitgebracht, zijn we op zoek geweest naar de heilige graal van windows-bestandssysteemcompatibiliteit: lees-/schrijftoegang voor NTFS van Windows 9x en DOS. We hebben lang geleden vastgesteld dat reverse engineering van de NTFS-indeling en het schrijven van een stuurprogramma voor dit complexe logboekbestandssysteem een moeilijke en riskante propositie zou zijn. Zelfs als een nauwkeurig elke nuance van de indeling bepaalt, vereist een update naar de indeling, zoals NTFS v5.0 van Win2K, een volledig nieuwe reverse-engineering en ontwikkelingsinspanning. Verder is het valideren van de juistheid van een bestandssysteemstuurprogramma voor een indeling zo ingewikkeld als die van NTFS een ontmoedigende propositie.

Dus we hebben bedrogen.

NTFS voor Windows 98 biedt volledige lees-/schrijftoegang tot NTFS-stations van Windows 95 of Windows 98 en NTFSDOS Professional biedt volledige LEES-/schrijftoegang van NTFS vanuit DOS. Ntfs voor Windows 98 of NTFSDOS Professional heeft geen kennis van de NTFS-bestandssysteemindeling. In plaats daarvan zijn ze afhankelijk van het NTFS-stuurprogramma van een Windows NT- of Windows 2000-installatie om die kennis te implementeren. Beide hulpprogramma's gebruiken dezelfde codebasis die fungeert als een omgevingswikkelaar voor het ntfs-bestandssysteemstuurprogramma. NTFS voor Windows 98 biedt een interface voor de Windows 9x-bestandssysteem-API boven NTFS en de Windows 9x-schijfservices onder NTFS. De interface NTFS voor Windows 98 presenteert aan NTFS ziet eruit als de systeemeigen Windows NT/2K-omgeving van NTFS, compleet met IRP's, I/O-beheer, cachebeheer, schijfapparaten in de NT-stijl en andere NT/2K-subsystemen waarmee NTFS communiceert.

NTFSDOS Professional werkt op dezelfde manier als NTFS voor Windows 98, behalve dat het interfaces NTFS naar DOS-services boven en BIOS Interrupt 13 schijfservices hieronder. Om de NT/2K-achtige omgeving te maken, vertrouwen we op veel functies in NTOSKRNL, het NT/2K-kernelbestand. Beide hulpprogramma's laden NTOSKRNL in combinatie met NTFS, zodat NTFS rechtstreeks kan worden gebruikt van de systeemeigen services van de kernel.

We hadden zo veel plezier met het bouwen van de NTFS-omgeving dat we een stap verder gingen: we deden hetzelfde met het opstarttijdhulpprogramma chkdsk van NT, Autochk. NTFSDOS Professional en NTFS voor Windows 98 worden geleverd met een NTFS chkdsk-hulpprogramma met de naam NTFSCHK. NTFSCHK werkt op dezelfde principal als de NTFS-bestandssysteem-wrapper, waarbij er een NT-achtige omgeving wordt gemaakt voor het Autochk-programma, zodat Autochk wordt uitgevoerd onder Windows 95/98 en DOS. Het resultaat van deze truc is volledige NTFS-ondersteuning voor lezen/schrijven voor Windows 95/98 en voor DOS.

U kunt een gratis alleen-lezen versie van NTFS voor Windows 98 downloaden en http://www.sysinternals.com/ntfs98.htm een gratis alleen-lezen versie van NTFSDOS Professional op http://www.sysinternalscom/ntfspro.htm. U kunt de volledige lees-/schrijfversies van beide hulpprogramma's kopen bij Winternals Software, http://www.winternals.com.

DEBUGVIEW V3.21

DebugView is een foutopsporingsmonitor die zowel kernel- als Win32-foutopsporingsuitvoer vastlegt onder Windows 95, Windows 98, NT 4.0 en Windows 2000. Het bevat geavanceerde filter-, markerings- en logboekregistratiemogelijkheden en kan zelfs foutopsporingsuitvoer van een systeem in een netwerk vastleggen. De nieuwste release, 3.21, introduceert de mogelijkheid om de 16-bits OutputDebugString-uitvoer onder Windows 95 en Windows 98 te bewaken.

U kunt DebugView v3.21 downloaden op http://www.sysinternals.com/dbgview.htm.

FILEMON EN REGMON V4.21

Filemon en Regmon zijn bestandssysteem- en registerspioneringshulpprogramma's voor Windows 95, 98, NT 4.0 en Win2K. Ze blijven zich ontwikkelen met nieuwe bruikbaarheidsfuncties en met release 4.21 (Filemon en Regmon hebben versienummers gesynchroniseerd) ze introduceren geavanceerdere filters met lijsten met recente filters, de mogelijkheid om een markeringsfilter te definiëren (met zelfs aangepaste kleuren), aanpasbare lettertype- en klembordondersteuning en meer cuI-compatibele sneltoetsen. De broncode van het stuurprogramma is ook opnieuw bewerkt en bevat meer robuuste parametervalidatie in de GUI-interfacefuncties.

Filemon v4.21 downloaden op http://www.sysinternals.com/filemon.htm en Regmon v4.21 op http://www.sysinternals.com/regmon.htm.

DISKMON V1.1

Diskmon is een hulpprogramma dat logische en fysieke schijfactiviteit bewaakt en weergeeft. Versie 1.1 werkt Diskmon bij voor gebruik met Windows 2000 en introduceert nieuwe bruikbaarheidsverbeteringen. Daarnaast interpreteert Diskmon nu een groot aantal I/O-besturingscodes voor schijf- en massaopslag, waarbij de hexadecimale codes worden omgezet in tekstweergaven in het uitvoervenster Diskmon.

Diskmon v1.1 werkt niet alleen als een schijfmonitor, maar u kunt deze ook gebruiken als een op software gebaseerde schijflamp. Wanneer u deze instelt in de schijfverlichtingsmodus, minimaliseert Diskmon zichzelf in het systeemvak als een licht dat groen is wanneer er leestoegang tot de schijf is en rood wanneer er schrijftoegang tot de schijf is.

Diskmon v1.1 downloaden op http://www.sysinternals.com/diskmon.htm.

INTERNE SYSTEMEN OP WWW.MICROSOFT.COM

Gezien de geschiedenis van Systems Internals (voorheen NT Internals), is het inderdaad geweldig dat Microsoft verwijst naar sysinternals.com als een resource voor haar klanten. Er zijn steeds meer Microsoft Knowledge Base-artikelen die verwijzen naar hulpprogramma's voor interne systemen. Dit zijn de nieuwste functies:

  • Q183060 INFO: Gids voor probleemoplossing voor 80004005 en andere foutberichten http://support.microsoft.com/support/kb/articles/Q183/0/60.ASP
    In dit artikel wordt beschreven hoe u Filemon kunt gebruiken om te controleren op de oorzaak van fouten in gegevenstoegang in OLE DB, ActiveX-gegevensobjecten en Remote Data Service.

  • Q196453 - Problemen met NTVDM en WOW-opstartfouten oplossen http://support.microsoft.com/support/kb/articles/Q196/4/53.ASP
    In dit artikel wordt ook verwezen naar Filemon als hulpprogramma voor het bepalen welke ontbrekende bestanden opstartfouten veroorzaken voor NTVDM (de Win16/DOS-compatibiliteitsomgeving in NT).

  • Q216368 - PRB: Toegangsschending tijdens het instellen van de toepassing wanneer het bestand wordt gebruikt http://support.microsoft.com/support/kb/articles/Q216/3/68.ASP
    HandleEx en DLLView zijn aanbevolen hulpprogramma's voor het bepalen van de oorzaak van de oorzaken van de installatieprogramma's die zijn gegenereerd door de wizard Installatie van Visual Basic en de wizard Implementatie.

  • Q232830 - PROCEDURE: Eigendom van bestandsafhandeling bepalen http://support.microsoft.com/support/kb/articles/Q232/8/30.ASP
    HandleEx haalt de verwijzing opnieuw op in dit artikel waarin wordt beschreven welk proces een bestand of map heeft geopend.

OKTOBER "NT INTERNALS"

Mijn kolom "NT Internals" in het oktobernummer van Windows NT Magazine is "Inside Win2K Reliability Enhancements, Part 3". Deze derde in een driedelige serie beschrijft twee krachtige Win2K-functies waarmee ontwikkelaars en beheerders buggystuurprogramma's kunnen aanwijzen: met schrijfbeveiliging beveiligd kernelgeheugen en de Driver Verifier.

Russische lezers kunnen nu mijn artikelen lezen in hun eigen taal. Ga naar de Russische editie van Windows NT Magazine en http://www.osp.ru/win2000/ bekijk de eerste vertaalde kolom NT Internals, Inside the Boot Process (http://www.osp.ru/win2000/1999/10/59.htm). Dank aan Ivan Rouzanov om me hiervan te laten weten.

Vanaf begin augustus zijn on-line versies van Windows NT Magazine-artikelen alleen toegankelijk voor abonnees en artikelen worden online geplaatst met elk nieuw probleem. Als u zich nog niet hebt geabonneerd, gaat u via de abonnementskoppeling om http://www.sysinternals.com/publ.htm de abonnementskorting Systems Internals op te halen.

NIET ZO NIEUW SPUL

WinObj is een krachtig hulpprogramma voor het verkennen van de Windows NT/2K Object-naamruimte. De objectnaamruimte is een van de drie naamruimten in NT/2K: de objectnaamruimte, de registernaamruimte en de bestandsnaamruimte van het bestandssysteem. U gaat naar de register- en bestandssysteemnaamruimten via objecten in de objectnaamruimte. Wanneer een Win32-programma bijvoorbeeld de registersleutel HKEY_LOCAL_MACHINE\Software\Microsoft opent, transformeert de ADVAPI32.DLL bibliotheek de naam naar \Registry\Machine\Software\Microsoft voordat de kernelservice NtCreateKeywordt aangeroepen. Als u de hoofdmap van de objectnaamruimte in WinObj bekijkt, ziet u een object van het type 'sleutel' met de naam Register. De registernaam komt overeen met het eerste onderdeel van de sleutelnaam en de NT/2K-objectbeheer geeft de rest van de naam door \Machine\Software\Microsoftaan het subsysteem dat het sleutelobject definieert. Het Configuration Manager-kernelsubsysteem onderhoudt het register- en sleutelobject, zodat de rest van de naam wordt geparseerd om de gewenste sleutel te vinden.

U kunt de objectnaamruimte verkennen en eigenschappen voor objectbeveiliging weergeven of instellen met Behulp van WinObj. Winobj downloaden op http://www.sysinternals.com/winobj.htm. Ik bespreekt de objectbeheernaamruimte en WinObj in mijn kolom van oktober 1997 NT Internals, 'Inside the Object Manager'. Volg een koppeling naar de on-line versie van de kolom op http://www.sysinternals.com/publ.htm.

INTERN NIEUWS

WIN2K RC2 DDK UITGEBRACHT

U kunt nu de Win2K RC2-release van de Device Driver Development Kit (DDK) van Microsoft downloaden op http://www.microsoft.com/ddk/ddkRC2.htm. U kunt de kit gratis downloaden of de documentatie online bekijken.

NIEUWE WIN2K RC2 KERNEL-API'S

Er wordt gestabiliseerd in de nieuwste Win2K-kernel. Er zijn slechts vier nieuwe, geëxporteerde kernel-API's in RC3, in tegenstelling tot ongeveer een dozijn die verschenen (en nog een half dozijn die verdwenen) van Beta 3 naar RC1 gaan. Verschillende van de nieuwe functies zijn enigszins interessant, dus ik heb besloten ze voor u te documenteren. De eerste is MmGetSystemRoutineAddress, en hoewel het prototype niet is gedocumenteerd, is opgenomen in het headerbestand ntddk.h van de RC2 DDK:

NTKERNELAPI
PVOID
MmGetSystemRoutineAddress (
    IN PUNICODE_STRING SystemRoutineName
    );

Het gebruik ervan is net zo eenvoudig als het eruitziet. Geef de naam van een functie door die zich in NTOSKRNL.EXE of HAL.DLL bevindt en u krijgt het ingangsadres terug. Deze functie is in feite nutteloos in de eerste release van Win2K, maar kan erg nuttig worden, en het is een functie die Microsoft moet hebben opgenomen in de eerste release van NT (3.1). Net als GetProcAddress in gebruikersruimte voor Win32-toepassingen kan met deze functie een stuurprogramma dynamisch de beschikbaarheid van een API vaststellen. Als Microsoft nieuwe API's toevoegt aan Win2K-servicepacks (en ik weet zeker dat ze wel zullen) stuurprogramma's kunnen worden geschreven om te profiteren van de API's, maar ook om probleemloos te mislukken in oudere versies van Win2K of om uit te voeren in een modus waarin ze de API's niet gebruiken. De sleutel voor een stuurprogramma dat dit kan doen, is de mogelijkheid om te controleren op de aanwezigheid van de API's na het laden. Zonder deze functionaliteit moet een stuurprogramma statisch worden gekoppeld aan functies die worden gebruikt en als de functies niet aanwezig zijn wanneer het stuurprogramma wordt geladen, meldt de kernellader een lelijke fout aan de gebruiker en kan het stuurprogramma niet laden.

De tweede nieuwe API is MmGetPhysicalMemoryPages. Nogmaals, het prototype bevindt zich in de RC2 ntddk.h, maar het is niet gedocumenteerd. Het prototype is:

NTKERNELAPI
PPHYSICAL_MEMORY_RANGE
MmGetPhysicalMemoryRanges (
    VOID
    );

Waar PHYSICAL_MEMORY_RANGE is:

typedef struct _PHYSICAL_MEMORY_RANGE {
    PHYSICAL_ADDRESS BaseAddress;
    LARGE_INTEGER NumberOfBytes;
} PHYSICAL_MEMORY_RANGE, *PPHYSICAL_MEMORY_RANGE;

Deze functie retourneert een matrix met PHYSICAL_MEMORY_RANGE vermeldingen met het einde van de matrix die is gemarkeerd door een vermelding met 0 voor beide BaseAddress en NumberOfBytes. Het is een MmGetSystemRoutineAddressvrij eenvoudige API. Het retourneert een beschrijving van alle fysieke geheugen waarOver Win2K weet. Win2K ondersteunt het toevoegen en verwijderen van geheugen onderweg met de MmAddPhysicalMemory en MmRemovePhysicalMemory API's. Dat stimuleert de reden voor het bestaan van een API waarmee u query's kunt uitvoeren op geheugenbereiken. MmAddPhysicalMemory is toegevoegd in RC1 en MmRemovePhysicalMemory in RC2. Beide functies zijn ook geproprototypeerd in ntddk.h.

Wat zijn de andere nieuwe RC2-API's? PoShutdownBugCheck en RtlInvertRangeList. PoShutdownBugCheck hiermee kunt u het systeem vastlopen en een energiegerelateerde actie uitvoeren, zoals onderbreken. Het wordt op een paar plaatsen gebruikt door de RC2-kernel. Bereiken zijn algemene begin-endspecificaties die door de gebruiker zijn gedefinieerd en worden ondersteund door een aantal kernel-API's voor het beheren, sorteren en herhalen ervan. De Win2K Plug-and-Play-resource-arbiters gebruiken ze om hardwareresourcevereisten bij te houden en te organiseren. Hoewel de API's voor de bereiklijst niet worden gedocumenteerd, worden al hun prototypen en structuurdefinities opgenomen in ntddk.h, zodat u de API waarschijnlijk kunt gebruiken om uw eigen begin-endgeoriënteerde gegevens te beheren.

Blijf op de hoogte voor meer plezier met niet-gedocumenteerde API's in volgende nieuwsbrieven.

SOFTWAREONTWIKKELING 99 OOST

De East Coast-editie van Software Development in 1999 vindt plaats in Washington D.C. van 8-12 november. Ik presenteer drie gesprekken op de laatste dag: Wat is er nieuw in Windows 2000 voor ontwikkelaars, binnen het Blauwe Scherm van Windows NT/2000 en binnen Windows NT/2000-netwerken. Daarnaast, Dave Salomon, auteur van Inside Windows NT 2nd Edition en een buurman (hij woont slechts 20 minuten van mij in, van alle plaatsen, Danbury, CT) en ik host een Windows NT/2K internals round table. We zijn samen om uw zwaarste vragen over Interne windows NT/2K te beantwoorden. Zeg hallo en noem de nieuwsbrief en ik geef je een gratis Systems Internals t-shirt!

Ga naar de website softwareontwikkeling op http://www.sdexpo.com.

DISKEDIT GEBRUIKEN

U weet het misschien niet, maar er is een hulpprogramma voor de schijfeditor voor Windows NT in de stijl van de bereerbare Norton Disk Edit voor DOS. Bovendien begrijpt het hulpprogramma FAT en NTFS en het is gratis. Blijkbaar heeft Microsoft DiskEdit per ongeluk verzonden, een hulpprogramma dat een intern foutopsporingsprogramma voor hun bestandssystementeams moet zijn, op de Cd van Windows NT 4.0 Service Pack 4. DiskEdit heeft een vreemde interface die een kleine handleiding zou nemen om te documenteren, maar ik ga je aan de slag met een eenvoudig overzicht. Ik richt me op het gebruik van DiskEdit om de NTFS-bestandssysteemindeling op te lossen, omdat DiskEdit het enige openbaar beschikbare hulpprogramma is dat ik weet dat NTFS begrijpt.

Eerst moet u DiskEdit ophalen van de CD-ROM van Service Pack 4 (SP4). Kopieer deze vanuit de map \i386 naar uw harde schijf. Als u DiskEdit wilt gebruiken onder Win2K, moet u er een privémap voor maken en de volgende DLL's kopiëren uit een SP4 winnt\system32-map (of SP4 CD) naar dezelfde map als DiskEdit: IFSUTIL.DLL, ULIB.DLL, UNTFS.DLL en UFAT.DLL. Nu kunt u DiskEdit starten.

Voor deze procedure maakt u een map met de naam TEMP in de hoofdmap van een NTFS-station en maakt u een bestand met de naam OUT.TXT in die map door de volgende opdracht in een opdrachtpromptvenster met TEMP te typen als de huidige map: echo hello > out.txt. Selecteer het station met het nieuwe OUT.TXT-bestand in DiskEdit door het bestand te kiezen|Open het menu-item en voer de letter van het station in het veld Volumenaam van het resulterende dialoogvenster in. Zorg ervoor dat u de dubbele punt, bijvoorbeeld 'd:', opneemt. Vrijwel alle functionaliteit van DiskEdit vereist dat u een station hebt geopend.

We gaan het OUT.TXT bestand vinden door te beginnen bij de hoofdmap van het NTFS-station. Selecteer de menuopdracht Lezen |NTFS-bestandsrecord om een dialoogvenster te openen waarmee u een MFT-recordvermelding kunt weergeven door het nummer in te voeren. De eerste 16 MFT-recordvermeldingen van elk NTFS-station zijn gereserveerd en komen overeen met vooraf gedefinieerde NTFS-metagegevensbestanden. Dit zijn de getaltoewijzingen (let op: DiskEdit interpreteert alle invoer als hexadecimaal):

        0: $MFT - MFT
        1: $MFTMirr - MFT Mirror (a copy of the first 4 entries of the MFT)
        2: $LogFile - NTFS LogFile
        3: $Volume - volume information file
        4: $AttrDef - the attribute definition file
        5: . - the root directory
        6: $Bitmap - the volume allocation bitmap file
        7: $Boot - the boot sector
        8: $BadClus - the bad cluster database file
        9: $Secure - new to SP4, the security attribute database
        A: $UpCase - the lower-to-upper case mapping file
        B: $Extend - new to Win2K, the directory that contains
                             the reparse, object ID, and quota metadata files
        C-F: Unused as of NTFS v5.0 (Win2K)

Bekijk enkele van deze MFT-vermeldingen. U ziet een algemeen thema: ze bestaan allemaal uit kenmerken zoals $INDEX_ROOT, $FILE_NAMEen $DATA. Het bevat kenmerken waarin gegevens die specifiek zijn voor een bestand worden opgeslagen. Wanneer kenmerkgegevens klein ZIJN, worden de gegevens in de MFT-record van het bestand opgeslagen als 'residente' gegevens en wanneer de gegevens groot zijn, worden de gegevens buiten de record opgeslagen in clusters op schijf als 'niet-residente' gegevens.

Voer nu '5' in als het bestandsnummer en u bekijkt het bestand van de hoofdmap. We gaan de bestanden en mappen bekijken die zich in de hoofdmap bevinden door het kenmerk van $INDEX_ALLOCATION de map te bekijken, een kenmerk dat specifiek is voor mappen waarin de inhoud van een map wordt vastgelegd. Selecteer hiervoor de optie Lezen |Menu-item NTFS-kenmerk, waarmee een ander dialoogvenster wordt geopend. DiskEdit is gevoelig voor hoofdletters, dus voer het volgende precies in zoals ik het vermeld:

        Base Frs Number: 5

Base Frs (Base File Record Segment) is een andere naam voor MFT-nummer. U voert in op 5 om op te geven dat u een kenmerk wilt lezen uit de hoofdmap.

        Attribute Type: $INDEX_ALLOCATION

Dit geeft aan DiskEdit aan dat u de inhoudsgegevens van de map wilt lezen. Ik raad het gebruik van het vervolgkeuzemenu aan om het gewenste kenmerk te kiezen, omdat DiskEdit erg kieskeurig is over de manier waarop het kenmerktype wordt ingevoerd.

        Attribute Name: $I30

Als u het $INDEX_ALLOCATION kenmerk van de hoofdmap bekijkt, ziet u dat '$I30' wordt vermeld als de naam in de 'Type code, name'-regel, zodat u dit invoert als de kenmerknaam.

Druk op OK en u ziet een hexadecimale dump van de inhoud van het kenmerk. We willen iets begrijpelijker zien, dus selecteer de weergave |Menu-item NTFS-indexbuffer. U krijgt de lijst met inhoud van de map te zien. Blader door de vermelding totdat u de vermelding ziet met de naam 'TEMP'. Als u deze niet ziet, bevindt de vermelding zich mogelijk in het kenmerk van $INDEX_ROOT de hoofdmap, een kenmerktype dat ook is gekoppeld aan mappen en die altijd de waarde bevat die is opgeslagen in de MFT-record. Indexhoofdvermeldingen en toewijzingsvermeldingen vormen samen een B+-structuur waarin alle vermeldingen van een map worden opgeslagen. Als u het $INDEX_ROOT kenmerk moet weergeven, volgt u dezelfde stappen voor het weergeven van dat kenmerk als voor het weergeven van het $INDEX_ALLOCATION kenmerk. Wanneer u door een indexbuffer bladert, kunt u dubbele regels sterretjes tegenkomen: deze geven het einde van de ene indexbuffer en het begin van de volgende aan.

Zodra u de vermelding van de MAP TEMP hebt gevonden, noteert u de bestandsreferentie (FRS). Lezen selecteren|NTFS-bestandsrecord en voer FRS van TEMP in. Nu kijkt u naar de MFT-record voor de MAP TEMP. We willen het OUT.TXT bestand vinden, dus we moeten de inhoud van TEMP doorzoeken om het te vinden. Bekijk het $INDEX_ALLOCATION kenmerk (of $INDEX_ROOT) van de MAP TEMP, schakel over naar het weergeven van de gegevens als ntfs-indexbuffer en zoek het OUT.TXT bestand. Vergeet niet om FRS van TEMP in te voeren als het basis-FRS-nummer in het dialoogvenster voor kenmerkselectie. Als u zojuist TEMP hebt gemaakt, heeft deze alleen een $INDEX_ROOT (als u iets verkeerd typt, krijgt u het plezier om te zien in de lege foutdialoogvensters van DiskEdit).

Wanneer u OUT.TXT hebt gevonden en hebt vastgesteld dat het FRS-gebruik van Read|NTFS-bestandsrecord om de MFT-vermelding te bekijken. Schuif omlaag totdat u het kenmerk $DATA hebt gevonden. U kijkt nu naar de locatie van OUT. De gegevens van TXT. Omdat we een klein bestand hebben gemaakt, worden de gegevens opgeslagen in de MFT-record. Als u OUT probeert weer te geven. Het kenmerk van $DATA TXT met behulp van DiskEdit ziet u niets, omdat DiskEdit geen residente gegevens goed weergeeft (een van de vele bugs van DiskEdit). Kopieer dus een largish> (2KB) tekstbestand naar \TEMP\ OUT.TXT. U kunt de OUT.TXT gegevens nu op twee manieren bekijken: u kunt het begin van de gegevens (of alle gegevens bekijken als deze aaneengesloten op schijf zijn opgeslagen) met behulp van Lezen|NTFS-cluster en het opgeven van de eerste lcn-waarde die u in OUT ziet. Het kenmerk 'Extent List' van $DATA TXT; of u kunt Lezen|NTFS-kenmerk en voer '$DATA' in als het kenmerktype en niets (zoals in niets typen in dat veld) als de kenmerknaam.

In de gebiedenlijsten wordt de locatie van de niet-ingezeten gegevens van een kenmerk beschreven. Elk aaneengesloten blok met gegevens van maximaal 16 clusters in lengte wordt beschreven door één vermelding in de lijst met gebieden. Een vermelding in de lijst met gebieden specificeert een virtueel clusternummer (vcn), een logisch clusternummer (lcn) en de uitvoeringslengte. Een Vcn is het cluster in het bestand waarop de gegevens die door de vermelding worden beschreven, worden gestart. Een Lcn wijst het logische cluster aan waar de gegevens op schijf worden opgeslagen en de runlength is het aantal bytes aan kenmerkgegevens op die locatie (vergeet niet dat DiskEdit hexadecimale waarden weergeeft).

Ik heb je door de hele weg begeleid om de MFT-record van het OUT.TXT bestand te vinden door je te laten zien hoe je de inhoud van de map scant. Er is echter een snelkoppeling: selecteer Crack|NTFS-pad en voer TEMP\OUT.TXT in. Je krijgt UIT te zien. FRS van TXT en u kunt Lezen|NTFS-bestandsrecord om naar rechts te gaan.

Dat brengt me naar het einde van mijn DiskEdit primer. Ik moedig u aan om te spelen met dit handige hulpprogramma door uw FAT- of NTFS-stations te bladeren. Het is zeer onwaarschijnlijk dat u ooit gelegenheid zult vinden om DiskEdit te gebruiken om gegevens te wijzigen om uw schijf uit een jam te halen, maar als u nieuwsgierig bent naar de NTFS-indeling op schijf (de FAT-indeling is goed gedocumenteerd) is dit het perfecte hulpprogramma voor onderzoek.

WAT KOMT ER AAN DE DAG?

WIN2K API-EXPLOSIE

Hoewel er slechts vier nieuwe geëxporteerde, kernelmodus-API's zijn die hun debuut maakten in RC2, is het aantal totale API's dat Microsoft heeft geïntroduceerd sinds NT 4.0, zowel in de kernel als in de core Win32 DLL's, geëxplodeerd. Volgende maand zal ik u precies vertellen hoeveel nieuwe API's er zijn en waar ze zijn verschenen, en helaas tegelijkertijd geven mensen die geloven dat Win2K een opgeblazen monster is een geweldige munitie voor hun alt.advocacy.linux Usenet-rants.


Bedankt voor het lezen van de systems Internals Newsletter.

Gepubliceerd woensdag 20 oktober 1999 1999 17:10 door ottoh

[Nieuwsbrievenarchief ^] [< Volume 1, Getal 4] [Volume 2, Getal 1 >]