Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

141 lines
3.1 KiB

/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
talloc.c
Abstract:
Test program for AllocConsole and FreeConsole
Author:
Therese Stowell (thereses) July-15-1991
Revision History:
NOTE: this test must be linked as a gui app
--*/
#include "precomp.h"
#pragma hdrstop
#pragma hdrstop
CHAR String[11] = "teststring";
HANDLE
TestProcess(
IN DWORD CreationFlags,
IN LPSTR AppName
)
{
STARTUPINFO StartupInfo;
PROCESS_INFORMATION ProcessInformation;
SECURITY_ATTRIBUTES ProcessAttributes;
ProcessAttributes.nLength = sizeof(SECURITY_ATTRIBUTES);
ProcessAttributes.lpSecurityDescriptor = NULL;
ProcessAttributes.bInheritHandle = TRUE;
StartupInfo.cb = sizeof(StartupInfo);
StartupInfo.lpReserved = "UsedByShell";
StartupInfo.lpDesktop = "TheresesDesktop";
StartupInfo.lpTitle = "TheresesTestTitle";
StartupInfo.dwX = 0;
StartupInfo.dwY = 1;
StartupInfo.dwXSize = 80;
StartupInfo.dwYSize = 50;
StartupInfo.dwFlags = 0;//STARTF_SHELLOVERRIDE;
StartupInfo.wShowWindow = 0;//SW_SHOWDEFAULT;
StartupInfo.lpReserved2 = 0;
StartupInfo.cbReserved2 = 0;
if ( !CreateProcess(
NULL,
AppName,
&ProcessAttributes,
NULL,
TRUE,
CreationFlags,
NULL,
NULL,
&StartupInfo,
&ProcessInformation
) )
DbgPrint("TALLOC: CreateProcess failed\n");
return ProcessInformation.hProcess;
}
BOOL
CallConsoleApi(
IN WORD y
)
{
CHAR_INFO Buffer[10];
COORD BufferSize;
COORD BufferCoord;
SMALL_RECT WriteRegion;
int i;
BOOL Success;
BufferSize.X = 10;
BufferSize.Y = 1;
BufferCoord.X = 0;
BufferCoord.Y = 0;
WriteRegion.Left = 0;
WriteRegion.Top = y;
WriteRegion.Right = 14;
WriteRegion.Bottom = y;
for (i=0;i<10;i++) {
Buffer[i].Char.AsciiChar = String[i];
Buffer[i].Attributes = y;
}
Success = WriteConsoleOutput(GetStdHandle(STD_OUTPUT_HANDLE),
Buffer,
BufferSize,
BufferCoord,
&WriteRegion
);
return Success;
}
DWORD
main(
int argc,
char *argv[],
char *envp[]
)
{
if (CallConsoleApi(5))
DbgPrint("TALLOC: CallConsoleApi succeeded\n");
if (!AllocConsole())
DbgPrint("TALLOC: AllocConsole failed\n");
if (!CallConsoleApi(5))
DbgPrint("TALLOC: CallConsoleApi failed\n");
if (AllocConsole())
DbgPrint("TALLOC: AllocConsole succeeded\n");
TestProcess(DETACHED_PROCESS,"tdetach");
TestProcess(0,"tattach");
Sleep(10000);
if (!CallConsoleApi(6))
DbgPrint("TALLOC: CallConsoleApi failed\n");
if (!FreeConsole())
DbgPrint("TALLOC: FreeConsole failed\n");
if (CallConsoleApi(5))
DbgPrint("TALLOC: CallConsoleApi succeeded\n");
if (FreeConsole())
DbgPrint("TALLOC: FreeConsole succeeded\n");
}