All pastes #632729 Raw Edit

Mine

public text v1 · immutable
#632729 ·published 2007-07-25 03:20 UTC
rendered paste body
struct DefragDataStruct {
  int Phase;                             /* The current Phase (1...3). */
  int Zone;                    /* The current Zone (0..2) for Phase 3. */
  int *Running;                /* If not RUNNING then stop defragging. */
  int *RedrawScreen;            /* If YES then redraw complete screen. */

  WCHAR *Path;                                    /* Example: "c:\t1\" */
  WCHAR *MountPoint;                                  /* Example: "c:" */
  WCHAR *MountPointSlash;                            /* Example: "c:\" */
  WCHAR VolumeName[51];       /* Example: "\\?\Volume{08439462-3004-11da-bbca-806d6172696f}" */
  HANDLE VolumeHandle;                        /* Handle to the volume. */
  BOOL IsNtfs;                         /* True if it's an NTFS volume. */

  double FreeSpace;           /* Percentage of total disk size 0..100. */

  /* Tree in memory with information about all the files. */
  struct ItemStruct *ItemTree;
  int BalanceCount;
  WCHAR **Excludes;                       /* Array with exclude masks. */
  WCHAR **SpaceHogs;                     /* Array with SpaceHog masks. */
  ULONG64 Zones[3];     /* Begin of Directory, Regular, and SpaceHog zones. */

  /* List of clusters reserved for the MFT. */
  struct ExcludesStruct MftExcludes[3];

  /* Counters filled before Phase 1. */
  ULONG64 TotalClusters;           /* Size of the volume, in clusters. */
  ULONG64 BytesPerCluster;             /* Number of bytes per cluster. */

  /* Counters updated before/after every Phase. */
  ULONG64 CountFreeClusters;               /* Number of free clusters. */
  ULONG64 CountGaps;                                /* Number of gaps. */
  ULONG64 BiggestGap;             /* Size of biggest gap, in clusters. */
  ULONG64 CountGapsLess16; /* Number of gaps smaller than 16 clusters. */
  ULONG64 CountClustersLess16;  /* Number of clusters in gaps that are smaller than 16 clusters. */

  /* Counters updated after every Phase, but not before Phase 1 (analyze). */
  ULONG64 CountDirectories;      /* Number of analysed subdirectories. */
  ULONG64 CountAllFiles;                  /* Number of analysed files. */
  ULONG64 CountFragmentedItems;         /* Number of fragmented files. */
  ULONG64 CountAllBytes;                   /* Bytes in analysed files. */
  ULONG64 CountFragmentedBytes;          /* Bytes in fragmented files. */
  ULONG64 CountAllClusters;             /* Clusters in analysed files. */
  ULONG64 CountFragmentedClusters;    /* Clusters in fragmented files. */

  /* Counters used to calculate the percentage of work done. */
  ULONG64 PhaseTodo;           /* Number of items to do in this Phase. */
  ULONG64 PhaseDone;    /* Number of items already done in this Phase. */

  /* Variables used to throttle the speed. */
  int Speed;                          /* Speed as a percentage 1..100. */
  LONG64 StartTime;
  LONG64 RunningTime;
  LONG64 LastCheckpoint;

  /* The callback subroutines. */
  void (__cdecl *ShowStatus)(struct DefragDataStruct *Data);
  void (__cdecl *ShowMove)(struct ItemStruct *Item, ULONG64 Clusters,
    ULONG64 FromLcn, ULONG64 ToLcn, ULONG64 FromVcn);
  void (__cdecl *ShowAnalyze)(struct DefragDataStruct *Data,  
    struct ItemStruct *Item);
  void (__cdecl *ShowDebug)(int Level, struct ItemStruct *Item, char *Message, ...);
  void (__cdecl *DrawCluster)(struct DefragDataStruct *Data, ULONG64 ClusterStart,
    ULONG64 ClusterEnd, int Color);
  void (__cdecl *ClearScreen)(char *Format, ...);

  /* The array with error messages. */
  char **DebugMsg;
  };