All pastes #612479 Raw Edit

Untitled

public text v1 · immutable
·published 2007-07-10 12:58 UTC
rendered paste body
void RunJkDefrag(WCHAR *path,
                           int Mode,
                           int Speed,
                           double FreeSpace,
                           WCHAR **Excludes,
                           WCHAR **SpaceHogs,
                           int *Running,
 
                           int *RedrawSreen,
                           ShowStatus //use a ptr to memoryblock or something, set to nil if dont' need it
                           ShowMove //see above
                           ShowAnalyze //see above
                           ShowDebug //see above
                           DrawCluster //see above
                           ClearScreen //see above
                           char **debugMsg);
//Note that those structures there are all different
//more info on structures
//callback subroutines
void (*ShowStatus) (struct DefragDataStruct *Data)
void (*ShowMove) (struct ItemStruct *Item, ULONG64 Clusters,
                            ULONG64 FromLcn, ULONG64 ToLcn, ULONG64 FromVcn);
void ( *ShowAnalyze) (struct DefragDataStruct *Data,  
                                 struct ItemStruct *Item);
void ( *ShowDebug) (int Level, struct ItemStruct *Item, char *Message, ...);
void ( *DrawCluster) (struct DefragDataStruct *Data, ULONG64 ClusterStart,
                               ULONG64 ClusterEnd, int Color);
void ( *ClearScreen) (char *Format, ...);
//Definiations for the structures are available. Basically, it provides a ptr to these structures, and you can get info out of them

void StopJkDefrag(int *Running, int TimeOut);

//other exported functions that might be useful
char *stristr(char *Haystack, char *Needle); //search case-insensitive for a substring
WCHAR *stristrW(WCHAR *Haystack, WCHAR *Needle); //ditto
void SystemErrorStr(DWORD ErrorCode, char *Out); //returns a string with the error message for GetLastError()
WCHAR **AddArrayString(WCHAR **Array, WCHAR *NewString); //Add a string to a string Array
ULONG64 GetItemLcn(struct ItemStruct *Item); //return the location on disk (LCN) of an item
struct ItemStruct *TreeSmallest(struct ItemStruct *Top); //return pointer to first item in the tree (first file on the volume)
struct ItemStruct *TreeBiggest(struct ItemStruct *Top); //return pointer to last item in the tree
struct ItemStruct *TreeFirst(struct ItemStruct *Top, int Direction); //if Direction =0 then return first file, else, last file
struct ItemStruct *TreePrev(struct ItemStruct *Here);//return pointer to previous item in the tree
struct ItemStruct *TreeNext(struct ItemStruct *Here);//return pointer to next item in the tree
struct ItemStruct *TreeNextPrev(struct ItemStruct *Here, int Direction); //if Direction = 0 then return next, else previous
void TreeInsert(struct DefragDataStruct *Data, struct ItemStruct *New);//insert a record into the tree. The tree is sorted by LCN
void TreeDetach(struct DefragDataStruct *Data, struct ItemStruct *Item);//unlink a record from the tree (not freed() )
int FragmentCount(struct ItemStruct *Item); //returns the number of fragments in the item
int IsFragmented(struct ItemStruct *Item, ULONG64 Offset, ULONG64 Size); //returns YES if the block in the item starting at Offset with Size clusters is fragmented