• 大小: 877KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-15
  • 语言: 其他
  • 标签: ntfs  源码  

资源简介

ntfs的可编译的代码。我基于nt4改造的。相信搞文件系统的会相当有用吧?

资源截图

代码片段和文件信息

/*++

Copyright (c) 1991  Microsoft Corporation

Module Name:

    AllocSup.c

Abstract:

    This module implements the general file stream allocation & truncation
    routines for Ntfs

Author:

    Tom Miller      [TomM]          15-Jul-1991

Revision History:

--*/

#include “NtfsProc.h“

//
//  Local debug trace level
//

#ifndef Dbg
#define Dbg                              (DEBUG_TRACE_LOGSUP)
#endif
//
//  Internal support routines
//

VOID
NtfsDeleteAllocationInternal (
    IN PIRP_CONTEXT IrpContext
    IN PFILE_object Fileobject OPTIONAL
    IN OUT PSCB Scb
    IN VCN StartingVcn
    IN VCN EndingVcn
    IN BOOLEAN LogIt
    );

#ifdef ALLOC_PRAGMA
#pragma alloc_text(PAGE NtfsPreloadAllocation)
#pragma alloc_text(PAGE NtfsAddAllocation)
#pragma alloc_text(PAGE NtfsAllocateAttribute)
#pragma alloc_text(PAGE NtfsBuildMappingPairs)
#pragma alloc_text(PAGE NtfsDeleteAllocation)
#pragma alloc_text(PAGE NtfsDeleteAllocationInternal)
#pragma alloc_text(PAGE NtfsGetHighestVcn)
#pragma alloc_text(PAGE NtfsGetSizeForMappingPairs)
#endif


ULONG
NtfsPreloadAllocation (
    IN PIRP_CONTEXT IrpContext
    IN OUT PSCB Scb
    IN VCN StartingVcn
    IN VCN EndingVcn
    )

/*++

Routine Description:

    This routine assures that all ranges of the Mcb are loaded in the specified
    Vcn range

Arguments:

    Scb - Specifies which Scb is to be preloaded

    StartingVcn - Specifies the first Vcn to be loaded

    EndingVcn - Specifies the last Vcn to be loaded

Return Value:

    Number of ranges spanned by the load request.

--*/

{
    VCN CurrentVcn LastCurrentVcn;
    LCN Lcn;
    LONGLONG Count;
    PVOID RangePtr;
    ULONG RunIndex;
    ULONG RangesLoaded = 0;

    PAGED_CODE();

    //
    //  Start with starting Vcn
    //

    CurrentVcn = StartingVcn;

    //
    //  Always load the nonpaged guys from the front so we don‘t
    //  produce an Mcb with a “known hole“.
    //

    if (FlagOn(Scb->Fcb->FcbState FCB_STATE_NONPAGED)) {
        CurrentVcn = 0;
    }

    //
    //  Loop until it‘s all loaded.
    //

    while (CurrentVcn <= EndingVcn) {

        //
        //  Remember this CurrentVcn as a way to know when we have hit the end
        //  (stopped making progress).
        //

        LastCurrentVcn = CurrentVcn;

        //
        //  Load range with CurrentVcn and if it is not there get out.
        //

        (VOID)NtfsLookupAllocation(IrpContext Scb CurrentVcn &Lcn &Count &RangePtr &RunIndex);

        //
        //  Find out how many runs there are in this range
        //

        if (!NtfsNumberOfRunsInRange(&Scb->Mcb RangePtr &RunIndex) || (RunIndex == 0)) {
            break;
        }

        //
        //  Get the highest run in this range and calculate the next Vcn beyond this range.
        //

        NtfsGetNextNtfsMcbEntry(&Scb->Mcb &RangePtr RunIndex - 1 &CurrentVcn &Lcn &Count);

        CurrentVcn += Count;

        //
        //  If we are making no progress we must have

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     100498  2009-05-20 10:07  ntfs\allocsup.c

     文件       8619  1997-08-27 11:41  ntfs\attrdata.c

     文件     427873  2009-05-20 13:01  ntfs\attrsup.c

     文件     242008  2009-06-01 09:14  ntfs\bitmpsup.c

     文件      41437  2009-05-20 09:52  ntfs\cachesup.c

     文件      23352  1997-08-27 11:41  ntfs\checksup.c

     文件      76337  2009-05-20 13:18  ntfs\cleanup.c

     文件      29683  2009-05-20 09:56  ntfs\close.c

     文件      15536  2009-05-20 10:14  ntfs\colatsup.c

     文件     352499  2009-05-29 11:31  ntfs\create.c

     文件      20163  2009-05-20 09:19  ntfs\ddkbuild.bat

     文件       5275  2009-05-20 13:14  ntfs\devctrl.c

     文件     251718  2009-05-20 10:06  ntfs\deviosup.c

     文件      45901  2009-05-20 13:17  ntfs\dirctrl.c

     文件      68151  2009-05-20 13:17  ntfs\ea.c

     文件      20943  1997-08-27 11:41  ntfs\fieldoff.c

     文件     243602  2009-05-20 13:16  ntfs\fileinfo.c

     文件       8175  2009-05-20 13:02  ntfs\filobsup.c

     文件      54989  2009-05-20 13:12  ntfs\flush.c

     文件     238765  2009-05-31 22:11  ntfs\fsctrl.c

     文件      22349  2009-05-20 13:16  ntfs\fspdisp.c

     文件      50330  2009-05-20 00:14  ntfs\fstiosup.c

     文件       3017  1997-08-27 11:41  ntfs\index.h

     文件     207857  2009-05-20 10:14  ntfs\indexsup.c

     文件      58978  2009-05-20 12:41  ntfs\lfs\cachesup.c

     文件        291  1997-08-27 11:49  ntfs\lfs\dirs

     文件      11224  2009-05-20 11:04  ntfs\lfs\lbcbsup.c

     文件       1882  2009-05-20 11:04  ntfs\lfs\lfsdata.c

     文件       6859  2009-05-20 11:00  ntfs\lfs\lfsdata.h

     文件      12042  2009-05-20 10:36  ntfs\lfs\lfsdisk.h

............此处省略82个文件信息

评论

共有 条评论