mirror of https://github.com/tongzx/nt5src
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.
238 lines
5.1 KiB
238 lines
5.1 KiB
/*++
|
|
|
|
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;
|
|
}
|