Windows2000/private/ntos/w32/ntcon/client/talloc.c
2020-09-30 17:12:32 +02:00

112 lines
2.7 KiB
C

/*++
Copyright (c) 1985 - 1999, 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");
}