Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

205 lines
5.0 KiB

/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
main.c
Abstract:
Implements a small utility that fills the disk for purposes of free space
testing.
Author:
Jim Schmidt (jimschm) 18-Aug-2000
Revision History:
<full name> (<alias>) <date> <comments>
--*/
#include "pch.h"
#include "wininet.h"
#include <lm.h>
HANDLE g_hHeap;
HINSTANCE g_hInst;
BOOL
Init (
VOID
)
{
g_hHeap = GetProcessHeap();
g_hInst = GetModuleHandle (NULL);
UtInitialize (NULL);
return TRUE;
}
VOID
Terminate (
VOID
)
{
UtTerminate ();
}
VOID
HelpAndExit (
VOID
)
{
//
// This routine is called whenever command line args are wrong
//
fprintf (
stderr,
"Command Line Syntax:\n\n"
" filler <free_space> [/D:<drive>] [/C:<cmdline> [/M]]\n"
" filler /Q [/D:<drive>]\n"
"\nDescription:\n\n"
" filler creates a file (bigfile.dat) on the current or specified\n"
" drive, leaving only the specified amount of free space on the drive.\n"
"\nArguments:\n\n"
" free_space Specifies the amount of free space to leave on\n"
" disk.\n"
" /D Specifies the drive letter to fill (i.e. /D:C)\n"
" /Q Queries the free space on the disk\n"
" /C Executes command line specified in <cmdline>\n"
" /M Issue message box if command line alters disk space\n"
);
exit (1);
}
INT
__cdecl
_tmain (
INT argc,
PCTSTR argv[]
)
{
TCHAR curDir[MAX_PATH];
TCHAR curFileS[MAX_PATH];
TCHAR curFileD[MAX_PATH];
PCTSTR cmdLine = NULL;
PCTSTR cmdPtr = NULL;
TCHAR newCmdLine[MAX_PATH];
GetCurrentDirectory (ARRAYSIZE(curDir), curDir);
cmdLine = GetCommandLine ();
if (!cmdLine) {
_tprintf ("Error while getting the command line.\n");
exit (-1);
}
cmdPtr = _tcsstr (cmdLine, TEXT("scanstate"));
if (!cmdPtr) {
_tprintf ("Error while getting the command line.\n");
exit (-1);
}
StringCopyAB (newCmdLine, cmdLine, cmdPtr);
StringCat (newCmdLine, TEXT("scanstate_a.exe"));
cmdPtr = _tcschr (cmdPtr, TEXT(' '));
if (!cmdPtr) {
_tprintf ("Error while getting the command line.\n");
exit (-1);
}
StringCat (newCmdLine, cmdPtr);
//
// Begin processing
//
if (!Init()) {
exit (-1);
}
//
// Do work here
//
{
BOOL result = FALSE;
STARTUPINFO startupInfo;
PROCESS_INFORMATION processInformation;
DWORD exitCode = -1;
StringCopy (curFileS, curDir);
StringCopy (AppendWack (curFileS), TEXT("guitrn_a.dll"));
StringCopy (curFileD, curDir);
StringCopy (AppendWack (curFileD), TEXT("guitrn.dll"));
CopyFile (curFileS, curFileD, FALSE);
StringCopy (curFileS, curDir);
StringCopy (AppendWack (curFileS), TEXT("unctrn_a.dll"));
StringCopy (curFileD, curDir);
StringCopy (AppendWack (curFileD), TEXT("unctrn.dll"));
CopyFile (curFileS, curFileD, FALSE);
StringCopy (curFileS, curDir);
StringCopy (AppendWack (curFileS), TEXT("script_a.dll"));
StringCopy (curFileD, curDir);
StringCopy (AppendWack (curFileD), TEXT("script.dll"));
CopyFile (curFileS, curFileD, FALSE);
StringCopy (curFileS, curDir);
StringCopy (AppendWack (curFileS), TEXT("sysmod_a.dll"));
StringCopy (curFileD, curDir);
StringCopy (AppendWack (curFileD), TEXT("sysmod.dll"));
CopyFile (curFileS, curFileD, FALSE);
StringCopy (curFileS, curDir);
StringCopy (AppendWack (curFileS), TEXT("migism_a.dll"));
StringCopy (curFileD, curDir);
StringCopy (AppendWack (curFileD), TEXT("migism.dll"));
CopyFile (curFileS, curFileD, FALSE);
ZeroMemory (&startupInfo, sizeof (STARTUPINFO));
startupInfo.cb = sizeof (STARTUPINFO);
ZeroMemory (&processInformation, sizeof (PROCESS_INFORMATION));
result = CreateProcess (
NULL,
newCmdLine,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&startupInfo,
&processInformation
);
if (result && processInformation.hProcess && (processInformation.hProcess != INVALID_HANDLE_VALUE)) {
WaitForSingleObject (processInformation.hProcess, INFINITE);
if (!GetExitCodeProcess (processInformation.hProcess, &exitCode)) {
exitCode = -1;
}
exit (exitCode);
}
}
//
// End of processing
//
Terminate();
return 0;
}