windows-nt/Source/XPSP1/NT/base/win32/client/tbase.c
2020-09-26 16:20:57 +08:00

239 lines
5.1 KiB
C

/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
tbase.c
Abstract:
Skeleton for a Win32 Base API Test Program
Author:
Steve Wood (stevewo) 26-Oct-1990
Revision History:
--*/
#include <assert.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <windows.h>
LPSTR Inserts[ 9 ] = {
"Insert 1",
"Insert 2",
"Insert 3",
"Insert 4",
"Insert 5",
"Insert 6",
"Insert 7",
"Insert 8",
"Insert 9"
};
void
TestEnvironment( void );
DWORD
main(
int argc,
char *argv[],
char *envp[]
)
{
int i;
HANDLE hMod,x;
CHAR Buff[256];
PCHAR s;
FARPROC f;
DWORD Version;
HANDLE Handle;
DWORD rc;
STARTUPINFO StartupInfo;
GetStartupInfo(&StartupInfo);
printf("Title %s\n",StartupInfo.lpTitle);
printf( "TBASE: Entering Test Program\n" );
assert(GetModuleFileName(0,Buff,256) < 255);
printf("Image Name %s\n",Buff);
#if 0
printf( "argc: %ld\n", argc );
for (i=0; i<argc; i++) {
printf( "argv[ %3ld ]: '%s'\n", i, argv[ i ] );
}
for (i=0; envp[ i ]; i++) {
printf( "envp[ %3ld ]: %s\n", i, envp[ i ] );
}
DbgBreakPoint();
s = "ync ""Yes or No""";
printf( "Invoking: '%s'\nResult: %d\n", s, system(s) );
TestEnvironment();
for (i=1; i<=256; i++) {
rc = FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY,
NULL,
i, NULL, sizeof( Buff ), (va_list *)Inserts );
if (rc != 0) {
rc = FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY, NULL,
i, Buff, rc, (va_list *)Inserts );
if (rc != 0) {
cprintf( "SYS%05u: %s\r\n", i, Buff );
}
}
}
Handle = CreateFile( "\\config.sys",
GENERIC_READ,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL
);
if (Handle != INVALID_HANDLE_VALUE) {
printf( "CreateFile successful, handle = %lX\n", Handle );
}
else {
printf( "CreateFile failed\n" );
}
rc = SetFilePointer(Handle, 0, NULL, FILE_END);
if (rc != -1) {
printf( "File size = %ld\n", rc );
}
else {
printf( "SetFilePointer failed\n" );
}
Version = GetVersion();
assert( (Version & 0x0000ffff) == 4);
assert( (Version >> 16) == 0);
#endif
hMod = LoadLibrary("dbgdll");
assert(hMod);
assert(hMod == GetModuleHandle("dbgdll"));
hMod = LoadLibrary("c:\\nt\\dll\\csr.dll");
assert(hMod);
assert(GetModuleFileName(hMod,Buff,256) == strlen("c:\\nt\\dll\\csr.dll")+1);
assert(_strcmpi(Buff,"c:\\nt\\dll\\csr.dll") == 0 );
hMod = LoadLibrary("nt\\dll\\csrrtl.dll");
assert(hMod);
x = LoadLibrary("csrrtl");
assert( x && x == hMod);
assert(FreeLibrary(x));
assert(FreeLibrary(x));
hMod = GetModuleHandle("csrrtl");
assert(hMod == NULL);
x = LoadLibrary("csrrtl");
assert( x );
assert(FreeLibrary(x));
hMod = LoadLibrary("kernel32");
assert(hMod);
f = GetProcAddress(hMod,"GetProcAddress");
assert(f);
assert(f == (f)(hMod,"GetProcAddress"));
assert(f == MakeProcInstance(f,hMod));
FreeProcInstance(f);
DebugBreak();
assert(FreeLibrary(hMod));
// hMod = LoadLibrary("baddll");
// assert(!hMod);
printf( "TBASE: Exiting Test Program\n" );
return 0;
}
VOID
DumpEnvironment( VOID )
{
PCHAR s;
s = (PCHAR)GetEnvironmentStrings();
while (*s) {
printf( "%s\n", s );
while (*s++) {
}
}
}
VOID
SetEnvironment(
PCHAR Name,
PCHAR Value
);
VOID
SetEnvironment(
PCHAR Name,
PCHAR Value
)
{
BOOL Success;
Success = SetEnvironmentVariable( Name, Value );
if (Value != NULL) {
printf( "TENV: set variable %s=%s", Name, Value );
}
else {
printf( "TENV: delete variable %Z", Name );
}
if (Success) {
printf( "\n" );
}
else {
printf( " - failed\n" );
}
DumpEnvironment();
printf( "\n" );
}
void
TestEnvironment( void )
{
DumpEnvironment();
SetEnvironment( "aaaa", "12345" );
SetEnvironment( "aaaa", "1234567890" );
SetEnvironment( "aaaa", "1" );
SetEnvironment( "aaaa", "" );
SetEnvironment( "aaaa", NULL );
SetEnvironment( "AAAA", "12345" );
SetEnvironment( "AAAA", "1234567890" );
SetEnvironment( "AAAA", "1" );
SetEnvironment( "AAAA", "" );
SetEnvironment( "AAAA", NULL );
SetEnvironment( "MMMM", "12345" );
SetEnvironment( "MMMM", "1234567890" );
SetEnvironment( "MMMM", "1" );
SetEnvironment( "MMMM", "" );
SetEnvironment( "MMMM", NULL );
SetEnvironment( "ZZZZ", "12345" );
SetEnvironment( "ZZZZ", "1234567890" );
SetEnvironment( "ZZZZ", "1" );
SetEnvironment( "ZZZZ", "" );
SetEnvironment( "ZZZZ", NULL );
return;
}