Move testsets from reactos to rostests (into a "win32" directory for now). 1/2

svn path=/trunk/; revision=26011
This commit is contained in:
Aleksey Bragin 2007-03-06 11:33:50 +00:00
parent 2199ae9003
commit 102ccaa64d
38 changed files with 0 additions and 3891 deletions

View file

@ -79,9 +79,6 @@
<directory name="taskmgr">
<xi:include href="taskmgr/taskmgr.rbuild" />
</directory>
<directory name="testsets">
<xi:include href="testsets/testsets.rbuild" />
</directory>
<directory name="winefile">
<xi:include href="winefile/winefile.rbuild" />
</directory>

View file

@ -1,223 +0,0 @@
/*
* ReactOS test program -
*
* loadlib.c
*
* Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <windows.h>
#include "loadlib.h"
#include <string.h>
#include <stdlib.h>
#include <wchar.h>
#define APP_VERSION 1
#define MAX_LIBS 25
#ifdef UNICODE
#define TARGET "UNICODE"
BOOL bUseAnsi = FALSE;
#else
#define TARGET "MBCS"
BOOL bUseAnsi = TRUE;
#endif
BOOL verbose_flagged = FALSE;
BOOL debug_flagged = FALSE;
BOOL loop_flagged = FALSE;
BOOL recursive_flagged = FALSE;
HANDLE OutputHandle;
HANDLE InputHandle;
void dprintf(char* fmt, ...)
{
va_list args;
char buffer[255];
va_start(args, fmt);
wvsprintfA(buffer, fmt, args);
WriteConsoleA(OutputHandle, buffer, lstrlenA(buffer), NULL, NULL);
va_end(args);
}
long getinput(char* buf, int buflen)
{
DWORD result;
ReadConsoleA(InputHandle, buf, buflen, &result, NULL);
return (long)result;
}
DWORD ReportLastError(void)
{
DWORD dwError = GetLastError();
if (dwError != ERROR_SUCCESS) {
PSTR msg = NULL;
if (FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,
0, dwError, MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT), (PSTR)&msg, 0, NULL)) {
if (msg != NULL) {
dprintf("ReportLastError() %d - %s\n", dwError, msg);
} else {
dprintf("ERROR: ReportLastError() %d - returned TRUE but with no msg string!\n", dwError);
}
} else {
dprintf("ReportLastError() %d - unknown error\n", dwError);
}
if (msg != NULL) {
LocalFree(msg);
}
}
return dwError;
}
const char* appName(const char* argv0)
{
const char* name;
name = (const char*)strrchr(argv0, '\\');
if (name != NULL)
return name + 1;
return argv0;
}
int usage(const char* appName)
{
dprintf("USAGE: %s libname [libname ...] [unicode]|[ansi] [loop][recurse]\n", appName);
dprintf("\tWhere libname(s) is one or more libraries to load.\n");
dprintf("\t[unicode] - perform tests using UNICODE api calls\n");
dprintf("\t[ansi] - perform tests using ANSI api calls\n");
dprintf("\t default is %s\n", TARGET);
dprintf("\t[loop] - run test process in continuous loop\n");
dprintf("\t[recurse] - load libraries recursively rather than sequentually\n");
dprintf("\t[debug] - enable debug mode (unused)\n");
dprintf("\t[verbose] - enable verbose output (unused)\n");
return 0;
}
DWORD LoadLibraryList(char** libnames, int counter, BOOL bUseAnsi)
{
HMODULE hModule;
dprintf("Attempting to LoadLibrary");
if (bUseAnsi) {
dprintf("A(%s) - ", *libnames);
hModule = LoadLibraryA(*libnames);
} else {
int len;
wchar_t libnameW[500];
len = mbstowcs(libnameW, *libnames, strlen(*libnames));
if (len) {
libnameW[len] = L'\0';
dprintf("W(%S) - ", libnameW);
hModule = LoadLibraryW(libnameW);
} else {
return ERROR_INVALID_PARAMETER;
}
}
if (hModule == NULL) {
dprintf("\nERROR: failed to obtain handle to module %s - %x\n", *libnames, hModule);
return ReportLastError();
}
dprintf("%x\n", hModule);
if (counter--) {
LoadLibraryList(++libnames, counter, bUseAnsi);
}
if (!FreeLibrary(hModule)) {
dprintf("ERROR: failed to free module %s - %x\n", *libnames, hModule);
return ReportLastError();
} else {
dprintf("FreeLibrary(%x) - successfull.\n", hModule);
}
return 0L;
}
int __cdecl main(int argc, char* argv[])
{
char* libs[MAX_LIBS];
int lib_count = 0;
int result = 0;
int i = 0;
AllocConsole();
InputHandle = GetStdHandle(STD_INPUT_HANDLE);
OutputHandle = GetStdHandle(STD_OUTPUT_HANDLE);
dprintf("%s application - build %03d (default: %s)\n", appName(argv[0]), APP_VERSION, TARGET);
if (argc < 2) {
/*return */usage(appName(argv[0]));
}
memset(libs, 0, sizeof(libs));
for (i = 1; i < argc; i++) {
if (lstrcmpiA(argv[i], "ansi") == 0) {
bUseAnsi = TRUE;
} else if (lstrcmpiA(argv[i], "unicode") == 0) {
bUseAnsi = FALSE;
} else if (lstrcmpiA(argv[i], "loop") == 0) {
loop_flagged = 1;
} else if (lstrcmpiA(argv[i], "recurse") == 0) {
recursive_flagged = 1;
} else if (lstrcmpiA(argv[i], "verbose") == 0) {
verbose_flagged = 1;
} else if (lstrcmpiA(argv[i], "debug") == 0) {
debug_flagged = 1;
} else {
if (lib_count < MAX_LIBS) {
libs[lib_count] = argv[i];
++lib_count;
}
}
}
if (lib_count) {
do {
if (recursive_flagged) {
result = LoadLibraryList(libs, lib_count - 1, bUseAnsi);
} else {
for (i = 0; i < lib_count; i++) {
result = LoadLibraryList(&libs[i], 0, bUseAnsi);
//if (result != 0) break;
}
}
} while (loop_flagged);
} else {
int len;
char buffer[500];
do {
dprintf("\nEnter library name to attempt loading: ");
len = getinput(buffer, sizeof(buffer) - 1);
if (len > 2) {
char* buf = buffer;
buffer[len-2] = '\0';
result = LoadLibraryList(&buf, 0, bUseAnsi);
} else break;
} while (!result && len);
}
dprintf("finished\n");
return result;
}
#ifdef _NOCRT
char* args[] = { "loadlib.exe", "advapi32.dll", "user32.dll", "recurse"};
int __cdecl mainCRTStartup(void)
{
return main(3, args);
}
#endif /*__GNUC__*/

View file

@ -1,45 +0,0 @@
/*
* ReactOS test program -
*
* loadlib.h
*
* Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __LOADLIB_H__
#define __LOADLIB_H__
#ifdef __cplusplus
extern "C" {
#endif
extern BOOL verbose_flagged;
extern BOOL debug_flagged;
extern BOOL loop_flagged;
extern BOOL recursive_flagged;
DWORD ReportLastError(void);
long getinput(char* Buffer, int buflen);
void dprintf(char* fmt, ...);
#ifdef __cplusplus
};
#endif
#endif // __LOADLIB_H__

View file

@ -1,421 +0,0 @@
/*
* ReactOS test program -
*
* _tfileio.c
*
* Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <tchar.h>
#include <wchar.h>
#include <stdio.h>
#ifdef UNICODE
#define _tfopen _wfopen
#define _tunlink _wunlink
#define _TEOF WEOF
#define _gettchar getwchar
#define _puttchar putwchar
#define _THEX_FORMAT _T("0x%04x ")
#else /*UNICODE*/
#define _tfopen fopen
#define _tunlink _unlink
#define _TEOF EOF
#define _gettchar getchar
#define _puttchar putchar
#define _THEX_FORMAT "0x%02x "
#endif /*UNICODE*/
#define TEST_BUFFER_SIZE 200
#define TEST_FILE_LINES 4
extern BOOL verbose_flagged;
extern BOOL status_flagged;
static TCHAR test_buffer[TEST_BUFFER_SIZE];
static TCHAR dos_data[] = _T("line1: this is a bunch of readable text.\r\n")\
_T("line2: some more printable text and punctuation !@#$%^&*()\r\n")\
_T("line3: followed up with some numerals 1234567890\r\n")\
_T("line4: done.\r\n");
static TCHAR nix_data[] = _T("line1: this is a bunch of readable text.\n")\
_T("line2: some more printable text and punctuation !@#$%^&*()\n")\
_T("line3: followed up with some numerals 1234567890\n")\
_T("line4: done.\n");
#ifdef UNICODE
#define TEST_B1_FILE_SIZE ((((sizeof(dos_data)/2)-1)+TEST_FILE_LINES)/2) // (166+4)/2=85
#define TEST_B2_FILE_SIZE (((sizeof(dos_data)/2)-1)*2) // (166*2) =332
#define TEST_B3_FILE_SIZE ((((sizeof(nix_data)/2)-1)+TEST_FILE_LINES)/2) // (162+4)/2=83
#define TEST_B4_FILE_SIZE (((sizeof(nix_data)/2)-1)*2) // (162*2) =324
#else /*UNICODE*/
#define TEST_B1_FILE_SIZE (sizeof(dos_data)-1+TEST_FILE_LINES) // (166+4)=170
#define TEST_B2_FILE_SIZE (sizeof(dos_data)-1-TEST_FILE_LINES) // (166-4)=162
#define TEST_B3_FILE_SIZE (sizeof(nix_data)-1+TEST_FILE_LINES) // (162+4)=166
#define TEST_B4_FILE_SIZE (sizeof(nix_data)-1) // (162) =162
#endif /*UNICODE*/
// result = create_test_file(file_name, _T("wb"), _T("rb"), file_data);
static BOOL test_file_truncate(TCHAR* file_name)
{
BOOL result = FALSE;
int count = -1;
int error_code;
TCHAR ch;
TCHAR* file_data = _T("this file should have been truncated to zero bytes...");
FILE *file = _tfopen(file_name, _T("wb"));
if (verbose_flagged) {
_tprintf(_T("test_file_truncate(\"%s\")\n"), file_name);
}
if (file != NULL) {
if (_fputts(file_data, file) != _TEOF) {
} else {
_tprintf(_T("ERROR: failed to write data to file \"%s\"\n"), file_name);
_tprintf(_T("ERROR: ferror returned %d\n"), ferror(file));
}
fclose(file);
} else {
_tprintf(_T("ERROR: failed to open/create file \"%s\" for output\n"), file_name);
_tprintf(_T("ERROR: ferror returned %d\n"), ferror(file));
}
file = _tfopen(file_name, _T("wb"));
if (file != NULL) {
error_code = ferror(file);
if (error_code) {
_tprintf(_T("ERROR: (%s) ferror returned %d\n"), file_name, error_code);
}
fclose(file);
} else {
_tprintf(_T("ERROR: (%s) failed to open file for truncating\n"), file_name);
}
file = _tfopen(file_name, _T("rb"));
if (file != NULL) {
count = 0;
while ((ch = _fgettc(file)) != _TEOF) {
if (verbose_flagged) {
_tprintf(_THEX_FORMAT, ch);
}
++count;
}
error_code = ferror(file);
if (error_code) {
_tprintf(_T("ERROR: (%s) ferror returned %d after reading\n"), file_name, error_code);
perror("Read error");
}
fclose(file);
} else {
_tprintf(_T("ERROR: (%s) failed to open file for reading\n"), file_name);
}
if (count) {
result = TRUE;
}
return result;
}
static BOOL create_output_file(TCHAR* file_name, TCHAR* file_mode, TCHAR* file_data)
{
BOOL result = FALSE;
FILE *file = _tfopen(file_name, file_mode);
if (file != NULL) {
if (_fputts(file_data, file) != _TEOF) {
result = TRUE;
} else {
_tprintf(_T("ERROR: failed to write data to file \"%s\"\n"), file_name);
_tprintf(_T("ERROR: ferror returned %d\n"), ferror(file));
}
fclose(file);
} else {
_tprintf(_T("ERROR: failed to open/create file \"%s\" for output\n"), file_name);
_tprintf(_T("ERROR: ferror returned %d\n"), ferror(file));
}
return result;
}
static BOOL verify_output_file(TCHAR* file_name, TCHAR* file_mode, TCHAR* file_data)
{
int error_code;
int offset = 0;
int line_num = 0;
BOOL result = FALSE;
BOOL error_flagged = FALSE;
FILE* file = _tfopen(file_name, file_mode);
if (file == NULL) {
_tprintf(_T("ERROR: (%s) Can't open file for reading\n"), file_name);
_tprintf(_T("ERROR: ferror returned %d\n"), ferror(file));
return FALSE;
} else if (status_flagged) {
_tprintf(_T("STATUS: (%s) opened file for reading\n"), file_name);
}
while (_fgetts(test_buffer, TEST_BUFFER_SIZE, file)) {
int length = _tcslen(test_buffer);
int req_len = _tcschr(file_data+offset, _T('\n')) - (file_data+offset) + 1;
++line_num;
if (length > req_len) {
_tprintf(_T("ERROR: read excess bytes from line %d, length %d, but expected %d\n"), line_num, length, req_len);
error_flagged = TRUE;
break;
}
if (length < req_len) {
_tprintf(_T("ERROR: read to few bytes from line %d, length %d, but expected %d\n"), line_num, length, req_len);
error_flagged = TRUE;
break;
}
if (status_flagged) {
_tprintf(_T("STATUS: Verifying %d bytes read from line %d\n"), length, line_num);
}
if (_tcsncmp(test_buffer, file_data+offset, length - 1) == 0) {
result = TRUE;
} else {
if (status_flagged) {
int i;
_tprintf(_T("WARNING: (%s) failed to verify file\n"), file_name);
for (i = 0; i < length; i++) {
if (file_data[offset+i] != test_buffer[i]) {
_tprintf(_T("line %d, offset %d expected: 0x%04x found: 0x%04x\n"), line_num, i, (int)file_data[offset+i], (int)test_buffer[i]);
}
}
_tprintf(_T("\n"));
} else {
error_flagged = TRUE;
}
}
offset += length;
}
error_code = ferror(file);
if (error_code) {
_tprintf(_T("ERROR: (%s) ferror returned %d after reading\n"), file_name, error_code);
perror("Read error");
}
if (!line_num) {
_tprintf(_T("ERROR: (%s) failed to read from file\n"), file_name);
}
if (error_flagged == TRUE) {
_tprintf(_T("ERROR: (%s) failed to verify file\n"), file_name);
result = FALSE;
}
fclose(file);
return result;
}
static int create_test_file(TCHAR* file_name, TCHAR* write_mode, TCHAR* read_mode, TCHAR* file_data)
{
if (status_flagged) {
_tprintf(_T("STATUS: Attempting to create output file %s\n"), file_name);
}
if (create_output_file(file_name, write_mode, file_data)) {
if (status_flagged) {
_tprintf(_T("STATUS: Attempting to verify output file %s\n"), file_name);
}
if (verify_output_file(file_name, read_mode, file_data)) {
if (status_flagged) {
_tprintf(_T("SUCCESS: %s verified ok\n"), file_name);
}
} else {
//_tprintf(_T("ERROR: failed to verify file %s\n"), file_name);
return 2;
}
} else {
_tprintf(_T("ERROR: failed to create file %s\n"), file_name);
return 1;
}
return 0;
}
static int check_file_size(TCHAR* file_name, TCHAR* file_mode, int expected)
{
int count = 0;
FILE* file;
TCHAR ch;
int error_code;
if (status_flagged) {
//_tprintf(_T("STATUS: (%s) checking for %d bytes in %s mode\n"), file_name, expected, _tcschr(file_mode, _T('b')) ? _T("binary") : _T("text"));
_tprintf(_T("STATUS: (%s) checking for %d bytes with mode %s\n"), file_name, expected, file_mode);
}
file = _tfopen(file_name, file_mode);
if (file == NULL) {
_tprintf(_T("ERROR: (%s) failed to open file for reading\n"), file_name);
return 1;
}
while ((ch = _fgettc(file)) != _TEOF) {
if (verbose_flagged) {
_tprintf(_THEX_FORMAT, ch);
}
++count;
}
error_code = ferror(file);
if (error_code) {
_tprintf(_T("ERROR: (%s) ferror returned %d after reading\n"), file_name, error_code);
perror("Read error");
}
if (verbose_flagged) {
// _puttc(_T('\n'), stdout);
}
fclose(file);
if (count == expected) {
if (status_flagged) {
_tprintf(_T("PASSED: (%s) read %d bytes\n"), file_name, count);
}
} else {
_tprintf(_T("FAILED: (%s) read %d bytes but expected %d using mode \"%s\"\n"), file_name, count, expected, file_mode);
}
return (count == expected) ? 0 : -1;
}
static int test_console_io(void)
{
TCHAR buffer[81];
TCHAR ch;
int i, j;
_tprintf(_T("Enter a line for echoing:\n"));
//for (i = 0; (i < 80) && ((ch = _gettchar()) != _TEOF) && (ch != _T('\n')); i++) {
for (i = 0; (i < 80) && ((ch = _gettc(stdin)) != _TEOF) && (ch != _T('\n')); i++) {
buffer[i] = (TCHAR)ch;
}
buffer[i] = _T('\0');
for (j = 0; j < i; j++) {
_puttc(buffer[j], stdout);
}
_puttc(_T('\n'), stdout);
_tprintf(_T("%s\n"), buffer);
return 0;
}
static int test_console_getchar(void)
{
int result = 0;
TCHAR ch;
_tprintf(_T("Enter lines for dumping or <ctrl-z><nl> to finish:\n"));
//while ((ch = _gettchar()) != _TEOF) {
while ((ch = _gettc(stdin)) != _TEOF) {
_tprintf(_THEX_FORMAT, ch);
//printf("0x%04x ", ch);
}
return result;
}
static int test_console_putch(void)
{
int result = 0;
_putch('1');
_putch('@');
_putch('3');
_putch(':');
_putch('\n');
_putch('a');
_putch('B');
_putch('c');
_putch(':');
_putch('\n');
return result;
}
static int test_unlink_files(void)
{
int result = 0;
//printf("sizeof dos_data: %d\n", sizeof(dos_data));
//printf("sizeof nix_data: %d\n", sizeof(nix_data));
result |= _tunlink(_T("binary.dos"));
result |= _tunlink(_T("binary.nix"));
result |= _tunlink(_T("text.dos"));
result |= _tunlink(_T("text.nix"));
return result;
}
static int test_text_fileio(TCHAR* file_name, TCHAR* file_data, int tsize, int bsize)
{
int result = 0;
result = create_test_file(file_name, _T("w"), _T("r"), file_data);
result = check_file_size(file_name, _T("r"), tsize);
result = check_file_size(file_name, _T("rb"), bsize);
return result;
}
static int test_binary_fileio(TCHAR* file_name, TCHAR* file_data, int tsize, int bsize)
{
int result = 0;
result = create_test_file(file_name, _T("wb"), _T("rb"), file_data);
result = check_file_size(file_name, _T("r"), tsize);
result = check_file_size(file_name, _T("rb"), bsize);
return result;
}
static int test_files(int test_num, char* type)
{
int result = 0;
printf("performing test: %d (%s)\n", test_num, type);
if (test_file_truncate(_T("zerosize.foo"))) {
printf("System unable to truncate files yet, unlinking:\n");
test_unlink_files();
}
switch (test_num) {
case 1:
result = test_text_fileio(_T("text.dos"), dos_data, 166, TEST_B1_FILE_SIZE);
break;
case 2:
result = test_binary_fileio(_T("binary.dos"), dos_data, TEST_B2_FILE_SIZE, 166);
break;
case 3:
result = test_text_fileio(_T("text.nix"), nix_data, 162, TEST_B3_FILE_SIZE);
break;
case 4:
result = test_binary_fileio(_T("binary.nix"), nix_data, TEST_B4_FILE_SIZE, 162);
break;
case 5:
result = test_console_io();
break;
case 6:
result = test_console_getchar();
break;
case 7:
result = test_console_putch();
break;
case -1:
result = test_unlink_files();
break;
default:
_tprintf(_T("no test number selected\n"));
break;
}
return result;
}

View file

@ -1,31 +0,0 @@
/*
* ReactOS test program -
*
* _fileio.c
*
* Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#undef UNICODE
#undef _UNICODE
#include "_tfileio.c"
int run_ansi_tests(int test_num)
{
return test_files(test_num, "ANSI");
}

View file

@ -1,124 +0,0 @@
/*
* ReactOS test program -
*
* main.c
*
* Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <tchar.h>
#include <wchar.h>
#include <stdio.h>
#include <stdlib.h>
#include "main.h"
#define VERSION 1
#ifdef UNICODE
#define TARGET "UNICODE"
#else
#define TARGET "MBCS"
#endif
BOOL verbose_flagged = 0;
BOOL status_flagged = 0;
int usage(char* argv0)
{
printf("USAGE: %s test_id [unicode]|[ansi] [clean]|[status][verbose]\n", argv0);
printf("\tWhere test_id is one of:\n");
printf("\t0 - (default) regression mode, run tests 1-4 displaying failures only\n");
printf("\t1 - Write DOS style eol data to file in text mode (text.dos)\n");
printf("\t2 - Write NIX style eol data to file in binary mode (binary.dos)\n");
printf("\t3 - Write DOS style eol data to file in text mode (text.nix)\n");
printf("\t4 - Write NIX style eol data to file in binary mode (binary.nix)\n");
printf("\t5 - Echo console line input\n");
printf("\t6 - Dump console line input in hex format\n");
printf("\t7 - The source code is your friend\n");
printf("\t[unicode] - perform tests using UNICODE versions of library functions\n");
printf("\t[ansi] - perform tests using ANSI versions of library functions\n");
printf("\t If neither unicode or ansi is specified build default is used\n");
printf("\t[clean] - delete all temporary test output files\n");
printf("\t[status] - enable extra status display while running\n");
printf("\t[verbose] - enable verbose output when running\n");
return 0;
}
int __cdecl main(int argc, char* argv[])
{
int test_num = 0;
int version = 0;
int result = 0;
int i = 0;
printf("%s test application - build %03d (default: %s)\n", argv[0], VERSION, TARGET);
if (argc < 2) {
return usage(argv[0]);
}
for (i = 1; i < argc; i++) {
if (strstr(argv[i], "ansi") || strstr(argv[i], "ANSI")) {
version = 1;
} else if (strstr(argv[i], "unicode") || strstr(argv[i], "UNICODE")) {
version = 2;
} else if (strstr(argv[i], "clean") || strstr(argv[i], "CLEAN")) {
test_num = -1;
} else if (strstr(argv[i], "verbose") || strstr(argv[i], "VERBOSE")) {
verbose_flagged = 1;
} else if (strstr(argv[i], "status") || strstr(argv[i], "STATUS")) {
status_flagged = 1;
} else {
test_num = atoi(argv[1]);
//if (test_num < 0
}
}
for (i = test_num; i <= test_num; i++) {
if (!test_num) {
test_num = 4;
i = 1;
}
switch (version) {
case 1:
result = run_ansi_tests(i);
break;
case 2:
result = run_unicode_tests(i);
break;
default:
result = run_ansi_tests(i);
result = run_unicode_tests(i);
break;
}
}
printf("finished\n");
return result;
}
#ifndef __GNUC__
char* args[] = { "fileio.exe", "0", "unicode", "verbose"};
int __cdecl mainCRTStartup(void)
{
main(2, args);
return 0;
}
#endif /*__GNUC__*/

View file

@ -1,42 +0,0 @@
/*
* ReactOS test program -
*
* main.h
*
* Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __MAIN_H__
#define __MAIN_H__
#ifdef __cplusplus
extern "C" {
#endif
int app_main(int argc, char* argv[]);
DWORD GetInput(char* Buffer, int buflen);
int test_ansi_files(int test_num);
int test_unicode_files(int test_num);
#ifdef __cplusplus
};
#endif
#endif // __MAIN_H__

View file

@ -1,31 +0,0 @@
/*
* ReactOS test program -
*
* wfileio.c
*
* Copyright (C) 2002 Robert Dickenson <robd@reactos.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#define UNICODE
#define _UNICODE
#include "_tfileio.c"
int run_unicode_tests(int test_num)
{
return test_files(test_num, "UNICODE");
}

View file

@ -1,457 +0,0 @@
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include "ctx.h"
#define TYPE_FORMAT_STRING_SIZE 23
#define PROC_FORMAT_STRING_SIZE 21
#define TRANSMIT_AS_TABLE_SIZE 0
#define WIRE_MARSHAL_TABLE_SIZE 0
typedef struct _MIDL_TYPE_FORMAT_STRING
{
short Pad;
unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
} MIDL_TYPE_FORMAT_STRING;
typedef struct _MIDL_PROC_FORMAT_STRING
{
short Pad;
unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
} MIDL_PROC_FORMAT_STRING;
extern const MIDL_STUB_DESC hello_StubDesc;
extern const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString;
//extern const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString;*/
/*****************************************************************
* Modified from midl-generated stubs *
*****************************************************************/
void m_CtxOpen(
/* [out] */ PCTXTYPE __RPC_FAR *pphContext,
/* [in] */ long Value)
{
RPC_BINDING_HANDLE _Handle = 0;
RPC_MESSAGE _RpcMessage;
MIDL_STUB_MESSAGE _StubMsg;
char *ctx, *buf;
int i;
printf("\n*******************************************************************\n");
printf("**** CtxOpen() ***\n");
printf("*******************************************************************\n\n");
if(!pphContext)
{
RpcRaiseException(RPC_X_NULL_REF_POINTER);
}
RpcTryFinally
{
NdrClientInitializeNew(
( PRPC_MESSAGE )&_RpcMessage,
( PMIDL_STUB_MESSAGE )&_StubMsg,
( PMIDL_STUB_DESC )&hello_StubDesc,
0);
_Handle = hBinding;
_StubMsg.BufferLength = 4U;
NdrGetBuffer( (PMIDL_STUB_MESSAGE) &_StubMsg, _StubMsg.BufferLength, _Handle );
*(( long __RPC_FAR * )_StubMsg.Buffer)++ = Value;
NdrSendReceive( (PMIDL_STUB_MESSAGE) &_StubMsg, (unsigned char __RPC_FAR *) _StubMsg.Buffer );
if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[0] );
printf("Before NdrClientContextUnmarshall: Buflen=%d\nBuffer: ", _StubMsg.RpcMsg->BufferLength);
for(buf = _StubMsg.Buffer, i = 0; i < _StubMsg.RpcMsg->BufferLength; i++)
printf("0x%x, ", buf[i] & 0x0FF);
printf("\n\n");
*pphContext = (void *)0;
NdrClientContextUnmarshall(
( PMIDL_STUB_MESSAGE )&_StubMsg,
( NDR_CCONTEXT __RPC_FAR * )pphContext,
_Handle);
ctx = (char*)*pphContext;
printf("\nNdrClientContextUnmarshall returned: handle=0x%p\n", ctx);
printf("00: 0x%x <- obviously pointer to binding handle copyed from _Handle\n", *((int*)ctx));
ctx+=4;
printf("04: 0x%x <- unknown field\n", *((int*)ctx));
printf("08: ");
for(ctx+=4, i = 0; i < 20; i++)
printf("0x%x,", *(ctx+i) & 0x0FF); printf(" <- ndr 20 bytes\n\n");
printf("Buflen=%d, Buffer: ", _StubMsg.BufferLength);
for(buf = _StubMsg.BufferStart; buf < _StubMsg.BufferEnd; buf++)
printf("0x%x,", *buf & 0x0FF);
printf("\n");
}
RpcFinally
{
NdrFreeBuffer( (PMIDL_STUB_MESSAGE) &_StubMsg );
}
RpcEndFinally
}
void m_CtxOpen2(
/* [out] */ PCTXTYPE __RPC_FAR *pphContext,
/* [in] */ long Value)
{
RPC_BINDING_HANDLE _Handle = 0;
RPC_MESSAGE _RpcMessage;
MIDL_STUB_MESSAGE _StubMsg;
char buf[255];
NdrClientInitializeNew(
( PRPC_MESSAGE )&_RpcMessage,
( PMIDL_STUB_MESSAGE )&_StubMsg,
( PMIDL_STUB_DESC )&hello_StubDesc,
0);
_Handle = hBinding;
_StubMsg.BufferLength = 4U;
NdrGetBuffer( (PMIDL_STUB_MESSAGE) &_StubMsg, _StubMsg.BufferLength, _Handle );
*(( long __RPC_FAR * )_StubMsg.Buffer)++ = Value;
NdrSendReceive( (PMIDL_STUB_MESSAGE) &_StubMsg, (unsigned char __RPC_FAR *) _StubMsg.Buffer );
if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[0] );
*pphContext = (void *)0;
RpcTryExcept
{
NdrClientContextUnmarshall(
( PMIDL_STUB_MESSAGE )&_StubMsg,
NULL,
_Handle);
}
RpcExcept(1)
{
printf("NdrClientContextUnmarshall reported exception = %d\n", RpcExceptionCode());
}
RpcEndExcept
RpcTryExcept
{
NdrClientContextUnmarshall(
( PMIDL_STUB_MESSAGE )&_StubMsg,
(NDR_CCONTEXT __RPC_FAR * )pphContext,
NULL);
}
RpcExcept(1)
{
printf("NdrClientContextUnmarshall reported exception = %d\n", RpcExceptionCode());
}
RpcEndExcept
RpcTryExcept
{
NdrClientContextMarshall(
( PMIDL_STUB_MESSAGE )&_StubMsg,
NULL,
1);
}
RpcExcept(1)
{
printf("NdrClientContextMarshall reported exception = %d\n", RpcExceptionCode());
}
RpcEndExcept
RpcTryExcept
{
NDRCContextUnmarshall( NULL, _Handle, buf, _RpcMessage.DataRepresentation );
}
RpcExcept(1)
{
printf("NDRCContextUnmarshall reported exception = %d\n", RpcExceptionCode());
}
RpcEndExcept
NdrFreeBuffer( (PMIDL_STUB_MESSAGE) &_StubMsg );
}
void m_CtxHello(
/* [in] */ PCTXTYPE phContext)
{
RPC_BINDING_HANDLE _Handle = 0;
RPC_MESSAGE _RpcMessage;
MIDL_STUB_MESSAGE _StubMsg;
char *buf;
int i;
printf("\n*******************************************************************\n");
printf("**** CtxHello() ***\n");
printf("*******************************************************************\n\n");
RpcTryFinally
{
NdrClientInitializeNew(
( PRPC_MESSAGE )&_RpcMessage,
( PMIDL_STUB_MESSAGE )&_StubMsg,
( PMIDL_STUB_DESC )&hello_StubDesc,
1);
if(phContext != 0)
{
_Handle = NDRCContextBinding(( NDR_CCONTEXT )phContext);;
}
else
{
RpcRaiseException(RPC_X_SS_IN_NULL_CONTEXT);
}
_StubMsg.BufferLength = 20U;
NdrGetBuffer( (PMIDL_STUB_MESSAGE) &_StubMsg, _StubMsg.BufferLength, _Handle );
NdrClientContextMarshall(
( PMIDL_STUB_MESSAGE )&_StubMsg,
( NDR_CCONTEXT )phContext,
1);
printf("After NdrClientContextMarshall: Buflen=%d\nBuffer: ", _StubMsg.BufferLength );
for(buf = _StubMsg.Buffer, i = 0; i < _StubMsg.BufferLength; i++)
printf("0x%x, ", buf[i] & 0x0FF);
printf("\n\n");
NdrSendReceive( (PMIDL_STUB_MESSAGE) &_StubMsg, (unsigned char __RPC_FAR *) _StubMsg.Buffer );
}
RpcFinally
{
NdrFreeBuffer( (PMIDL_STUB_MESSAGE) &_StubMsg );
}
RpcEndFinally
}
void m_CtxClose(
/* [out][in] */ PCTXTYPE __RPC_FAR *pphContext)
{
RPC_BINDING_HANDLE _Handle = 0;
RPC_MESSAGE _RpcMessage;
MIDL_STUB_MESSAGE _StubMsg;
char *buf;
int i;
printf("\n*******************************************************************\n");
printf("**** CtxClose() ***\n");
printf("*******************************************************************\n\n");
if(!pphContext)
{
RpcRaiseException(RPC_X_NULL_REF_POINTER);
}
RpcTryFinally
{
NdrClientInitializeNew(
( PRPC_MESSAGE )&_RpcMessage,
( PMIDL_STUB_MESSAGE )&_StubMsg,
( PMIDL_STUB_DESC )&hello_StubDesc,
2);
if(*pphContext != 0)
{
_Handle = NDRCContextBinding(( NDR_CCONTEXT )*pphContext);;
}
_StubMsg.BufferLength = 20U;
NdrGetBuffer( (PMIDL_STUB_MESSAGE) &_StubMsg, _StubMsg.BufferLength, _Handle );
NdrClientContextMarshall(
( PMIDL_STUB_MESSAGE )&_StubMsg,
( NDR_CCONTEXT )*pphContext,
0);
NdrSendReceive( (PMIDL_STUB_MESSAGE) &_StubMsg, (unsigned char __RPC_FAR *) _StubMsg.Buffer );
if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[14] );
printf("Before NdrClientContextUnmarshall: Buflen=%d\nBuffer: ", _StubMsg.BufferLength );
for(buf = _StubMsg.Buffer, i = 0; i < _StubMsg.BufferLength; i++)
printf("0x%x, ", buf[i] & 0x0FF);
printf("\n\n");
NdrClientContextUnmarshall(
( PMIDL_STUB_MESSAGE )&_StubMsg,
( NDR_CCONTEXT __RPC_FAR * )pphContext,
_Handle);
printf("\nNdrClientContextUnmarshall returned: handle=0x%p\n", *pphContext);
}
RpcFinally
{
NdrFreeBuffer( (PMIDL_STUB_MESSAGE) &_StubMsg );
}
RpcEndFinally
}
int interactive = 0;
void interact()
{
if(interactive)
{
printf("\nPress any key to continue...");
getch();
printf("\n\n");
}
}
void main(int argc, char **argv)
{
RPC_STATUS status;
unsigned long ulCode;
PCTXTYPE hContext;
char *pszStringBinding = NULL;
RPC_BINDING_HANDLE Handle = 0;
char buffer[255];
int test_num = 0;
int test_value = 31337;
if(argc<2)
{
printf("USAGE: client.exe <test_number> [test_value] [interactive]\n"
"Available tests:\n"
"0. General test\n"
"1. NULL pointer test\n"
"2. Context rundown routine");
return;
}
test_num = atoi(argv[1]);
if(argc>2) test_value = atoi(argv[2]);
if(argc>3) interactive = 1;
status = RpcStringBindingCompose(NULL,
"ncacn_np",
NULL,
"\\pipe\\hello",
NULL,
&pszStringBinding);
if (status)
{
printf("RpcStringBindingCompose %x\n", status);
exit(status);
}
status = RpcBindingFromStringBinding(pszStringBinding, &hBinding);
if (status)
{
printf("RpcBindingFromStringBinding %x\n", status);
exit(status);
}
RpcStringFree(&pszStringBinding);
switch(test_num)
{
case 0:
m_CtxOpen(&hContext, test_value);
RpcBindingFree(&hBinding);
m_CtxHello(hContext);
interact();
m_CtxClose(&hContext);
break;
case 1:
/////////////////////////////////////////////////////////////////////////////////////////
RpcTryExcept
{
Handle = NDRCContextBinding(NULL);
printf("NDRCContextBinding(NULL) returned %p\n", Handle);
}
RpcExcept(1)
{
printf("NDRCContextBinding(NULL) reported exception = %d\n", RpcExceptionCode());
}
RpcEndExcept
m_CtxOpen2(&hContext, test_value);
/////////////////////////////////////////////////////////////////////////////////////////
RpcTryExcept
{
NDRCContextMarshall(NULL, &buffer);
printf("NDRCContextMarshall(NULL) returned %p\n", Handle);
}
RpcExcept(1)
{
printf("NDRCContextMarshall(NULL) reported exception = %d\n", RpcExceptionCode());
}
RpcEndExcept
/////////////////////////////////////////////////////////////////////////////////////////
break;
case 2:
CtxOpen(&hContext, test_value);
interact();
ExitProcess(0);
break;
default:
printf("Unknown test %d\n", test_num);
}
}
void __RPC_FAR * __RPC_USER midl_user_allocate(size_t len)
{
return(malloc(len));
}
void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
{
free(ptr);
}

View file

@ -1,8 +0,0 @@
//file hello.idl
[
implicit_handle(handle_t hBinding)
]
interface hello
{
}

View file

@ -1,80 +0,0 @@
#pragma warning( disable: 4049 ) /* more than 64k source lines */
/* this ALWAYS GENERATED file contains the definitions for the interfaces */
/* File created by MIDL compiler version 5.03.0280 */
/* at Fri Mar 24 18:32:16 2006
*/
/* Compiler settings for ctx.idl:
Os (OptLev=s), W1, Zp8, env=Win32 (32b run), ms_ext, c_ext
error checks: allocation ref bounds_check enum stub_data
VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
//@@MIDL_FILE_HEADING( )
/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 440
#endif
#include "rpc.h"
#include "rpcndr.h"
#ifndef __ctx_h__
#define __ctx_h__
/* Forward Declarations */
#ifdef __cplusplus
extern "C"{
#endif
void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
void __RPC_USER MIDL_user_free( void __RPC_FAR * );
#ifndef __hello_INTERFACE_DEFINED__
#define __hello_INTERFACE_DEFINED__
/* interface hello */
/* [implicit_handle][version][uuid] */
typedef long CTXTYPE;
typedef /* [context_handle] */ CTXTYPE __RPC_FAR *PCTXTYPE;
void CtxOpen(
/* [out] */ PCTXTYPE __RPC_FAR *pphContext,
/* [in] */ long Value);
void CtxHello(
/* [in] */ PCTXTYPE phContext);
void CtxClose(
/* [out][in] */ PCTXTYPE __RPC_FAR *pphContext);
extern handle_t hBinding;
extern RPC_IF_HANDLE hello_v1_0_c_ifspec;
extern RPC_IF_HANDLE hello_v1_0_s_ifspec;
#endif /* __hello_INTERFACE_DEFINED__ */
/* Additional Prototypes for ALL interfaces */
void __RPC_USER PCTXTYPE_rundown( PCTXTYPE );
/* end of Additional Prototypes */
#ifdef __cplusplus
}
#endif
#endif

View file

@ -1,19 +0,0 @@
//file hello.idl
[
uuid(7a98c250-6808-11cf-b73b-00aa00b677a7),
version(1.0)
]
interface hello
{
typedef long CTXTYPE;
typedef [context_handle] CTXTYPE *PCTXTYPE;
void CtxOpen( [out] PCTXTYPE *pphContext,
[in] long Value);
void CtxHello( [in] PCTXTYPE phContext );
void CtxClose( [in, out] PCTXTYPE *pphContext );
}

View file

@ -1,335 +0,0 @@
#pragma warning( disable: 4049 ) /* more than 64k source lines */
/* this ALWAYS GENERATED file contains the RPC client stubs */
/* File created by MIDL compiler version 5.03.0280 */
/* at Fri Mar 24 18:32:16 2006
*/
/* Compiler settings for ctx.idl:
Os (OptLev=s), W1, Zp8, env=Win32 (32b run), ms_ext, c_ext
error checks: allocation ref bounds_check enum stub_data
VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
//@@MIDL_FILE_HEADING( )
#if !defined(_M_IA64) && !defined(_M_AXP64)
#include <string.h>
#if defined( _ALPHA_ )
#include <stdarg.h>
#endif
#include "ctx.h"
#define TYPE_FORMAT_STRING_SIZE 23
#define PROC_FORMAT_STRING_SIZE 21
#define TRANSMIT_AS_TABLE_SIZE 0
#define WIRE_MARSHAL_TABLE_SIZE 0
typedef struct _MIDL_TYPE_FORMAT_STRING
{
short Pad;
unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
} MIDL_TYPE_FORMAT_STRING;
typedef struct _MIDL_PROC_FORMAT_STRING
{
short Pad;
unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
} MIDL_PROC_FORMAT_STRING;
extern const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString;
extern const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString;
#define GENERIC_BINDING_TABLE_SIZE 0
/* Standard interface: hello, ver. 1.0,
GUID={0x7a98c250,0x6808,0x11cf,{0xb7,0x3b,0x00,0xaa,0x00,0xb6,0x77,0xa7}} */
handle_t hBinding;
static const RPC_CLIENT_INTERFACE hello___RpcClientInterface =
{
sizeof(RPC_CLIENT_INTERFACE),
{{0x7a98c250,0x6808,0x11cf,{0xb7,0x3b,0x00,0xaa,0x00,0xb6,0x77,0xa7}},{1,0}},
{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}},
0,
0,
0,
0,
0,
0
};
RPC_IF_HANDLE hello_v1_0_c_ifspec = (RPC_IF_HANDLE)& hello___RpcClientInterface;
extern const MIDL_STUB_DESC hello_StubDesc;
RPC_BINDING_HANDLE hello__MIDL_AutoBindHandle;
void CtxOpen(
/* [out] */ PCTXTYPE __RPC_FAR *pphContext,
/* [in] */ long Value)
{
RPC_BINDING_HANDLE _Handle = 0;
RPC_MESSAGE _RpcMessage;
MIDL_STUB_MESSAGE _StubMsg;
if(!pphContext)
{
RpcRaiseException(RPC_X_NULL_REF_POINTER);
}
RpcTryFinally
{
NdrClientInitializeNew(
( PRPC_MESSAGE )&_RpcMessage,
( PMIDL_STUB_MESSAGE )&_StubMsg,
( PMIDL_STUB_DESC )&hello_StubDesc,
0);
_Handle = hBinding;
_StubMsg.BufferLength = 4U;
NdrGetBuffer( (PMIDL_STUB_MESSAGE) &_StubMsg, _StubMsg.BufferLength, _Handle );
*(( long __RPC_FAR * )_StubMsg.Buffer)++ = Value;
NdrSendReceive( (PMIDL_STUB_MESSAGE) &_StubMsg, (unsigned char __RPC_FAR *) _StubMsg.Buffer );
if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[0] );
*pphContext = (void *)0;
NdrClientContextUnmarshall(
( PMIDL_STUB_MESSAGE )&_StubMsg,
( NDR_CCONTEXT __RPC_FAR * )pphContext,
_Handle);
}
RpcFinally
{
NdrFreeBuffer( (PMIDL_STUB_MESSAGE) &_StubMsg );
}
RpcEndFinally
}
void CtxHello(
/* [in] */ PCTXTYPE phContext)
{
RPC_BINDING_HANDLE _Handle = 0;
RPC_MESSAGE _RpcMessage;
MIDL_STUB_MESSAGE _StubMsg;
RpcTryFinally
{
NdrClientInitializeNew(
( PRPC_MESSAGE )&_RpcMessage,
( PMIDL_STUB_MESSAGE )&_StubMsg,
( PMIDL_STUB_DESC )&hello_StubDesc,
1);
if(phContext != 0)
{
_Handle = NDRCContextBinding(( NDR_CCONTEXT )phContext);;
}
else
{
RpcRaiseException(RPC_X_SS_IN_NULL_CONTEXT);
}
_StubMsg.BufferLength = 20U;
NdrGetBuffer( (PMIDL_STUB_MESSAGE) &_StubMsg, _StubMsg.BufferLength, _Handle );
NdrClientContextMarshall(
( PMIDL_STUB_MESSAGE )&_StubMsg,
( NDR_CCONTEXT )phContext,
1);
NdrSendReceive( (PMIDL_STUB_MESSAGE) &_StubMsg, (unsigned char __RPC_FAR *) _StubMsg.Buffer );
}
RpcFinally
{
NdrFreeBuffer( (PMIDL_STUB_MESSAGE) &_StubMsg );
}
RpcEndFinally
}
void CtxClose(
/* [out][in] */ PCTXTYPE __RPC_FAR *pphContext)
{
RPC_BINDING_HANDLE _Handle = 0;
RPC_MESSAGE _RpcMessage;
MIDL_STUB_MESSAGE _StubMsg;
if(!pphContext)
{
RpcRaiseException(RPC_X_NULL_REF_POINTER);
}
RpcTryFinally
{
NdrClientInitializeNew(
( PRPC_MESSAGE )&_RpcMessage,
( PMIDL_STUB_MESSAGE )&_StubMsg,
( PMIDL_STUB_DESC )&hello_StubDesc,
2);
if(*pphContext != 0)
{
_Handle = NDRCContextBinding(( NDR_CCONTEXT )*pphContext);;
}
_StubMsg.BufferLength = 20U;
NdrGetBuffer( (PMIDL_STUB_MESSAGE) &_StubMsg, _StubMsg.BufferLength, _Handle );
NdrClientContextMarshall(
( PMIDL_STUB_MESSAGE )&_StubMsg,
( NDR_CCONTEXT )*pphContext,
0);
NdrSendReceive( (PMIDL_STUB_MESSAGE) &_StubMsg, (unsigned char __RPC_FAR *) _StubMsg.Buffer );
if ( (_RpcMessage.DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[14] );
NdrClientContextUnmarshall(
( PMIDL_STUB_MESSAGE )&_StubMsg,
( NDR_CCONTEXT __RPC_FAR * )pphContext,
_Handle);
}
RpcFinally
{
NdrFreeBuffer( (PMIDL_STUB_MESSAGE) &_StubMsg );
}
RpcEndFinally
}
const MIDL_STUB_DESC hello_StubDesc =
{
(void __RPC_FAR *)& hello___RpcClientInterface,
MIDL_user_allocate,
MIDL_user_free,
&hBinding,
0,
0,
0,
0,
__MIDL_TypeFormatString.Format,
1, /* -error bounds_check flag */
0x10001, /* Ndr library version */
0,
0x5030118, /* MIDL Version 5.3.280 */
0,
0,
0, /* notify & notify_flag routine table */
0x1, /* MIDL flag */
0, /* Reserved3 */
0, /* Reserved4 */
0 /* Reserved5 */
};
#if !defined(__RPC_WIN32__)
#error Invalid build platform for this stub.
#endif
const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString =
{
0,
{
0x51, /* FC_OUT_PARAM */
#ifndef _ALPHA_
0x1, /* x86, MIPS & PPC stack size = 1 */
#else
0x2, /* Alpha stack size = 2 */
#endif
/* 2 */ NdrFcShort( 0x2 ), /* Type Offset=2 */
/* 4 */ 0x4e, /* FC_IN_PARAM_BASETYPE */
0x8, /* FC_LONG */
/* 6 */ 0x5b, /* FC_END */
0x5c, /* FC_PAD */
/* 8 */
0x4d, /* FC_IN_PARAM */
#ifndef _ALPHA_
0x1, /* x86, MIPS & PPC stack size = 1 */
#else
0x2, /* Alpha stack size = 2 */
#endif
/* 10 */ NdrFcShort( 0xa ), /* Type Offset=10 */
/* 12 */ 0x5b, /* FC_END */
0x5c, /* FC_PAD */
/* 14 */
0x50, /* FC_IN_OUT_PARAM */
#ifndef _ALPHA_
0x1, /* x86, MIPS & PPC stack size = 1 */
#else
0x2, /* Alpha stack size = 2 */
#endif
/* 16 */ NdrFcShort( 0xe ), /* Type Offset=14 */
/* 18 */ 0x5b, /* FC_END */
0x5c, /* FC_PAD */
0x0
}
};
const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString =
{
0,
{
NdrFcShort( 0x0 ), /* 0 */
/* 2 */
0x11, 0x0, /* FC_RP */
/* 4 */ NdrFcShort( 0x2 ), /* Offset= 2 (6) */
/* 6 */ 0x30, /* FC_BIND_CONTEXT */
0xa0, /* Ctxt flags: via ptr, out, */
/* 8 */ 0x0, /* 0 */
0x0, /* 0 */
/* 10 */ 0x30, /* FC_BIND_CONTEXT */
0x41, /* Ctxt flags: in, can't be null */
/* 12 */ 0x0, /* 0 */
0x0, /* 0 */
/* 14 */
0x11, 0x0, /* FC_RP */
/* 16 */ NdrFcShort( 0x2 ), /* Offset= 2 (18) */
/* 18 */ 0x30, /* FC_BIND_CONTEXT */
0xe1, /* Ctxt flags: via ptr, in, out, can't be null */
/* 20 */ 0x0, /* 0 */
0x0, /* 0 */
0x0
}
};
#endif /* !defined(_M_IA64) && !defined(_M_AXP64)*/

View file

@ -1,349 +0,0 @@
#pragma warning( disable: 4049 ) /* more than 64k source lines */
/* this ALWAYS GENERATED file contains the RPC server stubs */
/* File created by MIDL compiler version 5.03.0280 */
/* at Fri Mar 24 18:32:16 2006
*/
/* Compiler settings for ctx.idl:
Os (OptLev=s), W1, Zp8, env=Win32 (32b run), ms_ext, c_ext
error checks: allocation ref bounds_check enum stub_data
VC __declspec() decoration level:
__declspec(uuid()), __declspec(selectany), __declspec(novtable)
DECLSPEC_UUID(), MIDL_INTERFACE()
*/
//@@MIDL_FILE_HEADING( )
#if !defined(_M_IA64) && !defined(_M_AXP64)
#include <string.h>
#include "ctx.h"
#define TYPE_FORMAT_STRING_SIZE 23
#define PROC_FORMAT_STRING_SIZE 21
#define TRANSMIT_AS_TABLE_SIZE 0
#define WIRE_MARSHAL_TABLE_SIZE 0
typedef struct _MIDL_TYPE_FORMAT_STRING
{
short Pad;
unsigned char Format[ TYPE_FORMAT_STRING_SIZE ];
} MIDL_TYPE_FORMAT_STRING;
typedef struct _MIDL_PROC_FORMAT_STRING
{
short Pad;
unsigned char Format[ PROC_FORMAT_STRING_SIZE ];
} MIDL_PROC_FORMAT_STRING;
extern const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString;
extern const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString;
/* Standard interface: hello, ver. 1.0,
GUID={0x7a98c250,0x6808,0x11cf,{0xb7,0x3b,0x00,0xaa,0x00,0xb6,0x77,0xa7}} */
extern RPC_DISPATCH_TABLE hello_v1_0_DispatchTable;
static const RPC_SERVER_INTERFACE hello___RpcServerInterface =
{
sizeof(RPC_SERVER_INTERFACE),
{{0x7a98c250,0x6808,0x11cf,{0xb7,0x3b,0x00,0xaa,0x00,0xb6,0x77,0xa7}},{1,0}},
{{0x8A885D04,0x1CEB,0x11C9,{0x9F,0xE8,0x08,0x00,0x2B,0x10,0x48,0x60}},{2,0}},
&hello_v1_0_DispatchTable,
0,
0,
0,
0,
0
};
RPC_IF_HANDLE hello_v1_0_s_ifspec = (RPC_IF_HANDLE)& hello___RpcServerInterface;
extern const MIDL_STUB_DESC hello_StubDesc;
void __RPC_STUB
hello_CtxOpen(
PRPC_MESSAGE _pRpcMessage )
{
long Value;
MIDL_STUB_MESSAGE _StubMsg;
NDR_SCONTEXT pphContext;
RPC_STATUS _Status;
((void)(_Status));
NdrServerInitializeNew(
_pRpcMessage,
&_StubMsg,
&hello_StubDesc);
( PCTXTYPE __RPC_FAR * )pphContext = 0;
RpcTryFinally
{
RpcTryExcept
{
if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[0] );
Value = *(( long __RPC_FAR * )_StubMsg.Buffer)++;
if(_StubMsg.Buffer > _StubMsg.BufferEnd)
{
RpcRaiseException(RPC_X_BAD_STUB_DATA);
}
}
RpcExcept( RPC_BAD_STUB_DATA_EXCEPTION_FILTER )
{
RpcRaiseException(RPC_X_BAD_STUB_DATA);
}
RpcEndExcept
pphContext = NDRSContextUnmarshall( (char *)0, _pRpcMessage->DataRepresentation );
CtxOpen(( PCTXTYPE __RPC_FAR * )NDRSContextValue(pphContext),Value);
_StubMsg.BufferLength = 20U;
_pRpcMessage->BufferLength = _StubMsg.BufferLength;
_Status = I_RpcGetBuffer( _pRpcMessage );
if ( _Status )
RpcRaiseException( _Status );
_StubMsg.Buffer = (unsigned char __RPC_FAR *) _pRpcMessage->Buffer;
NdrServerContextMarshall(
( PMIDL_STUB_MESSAGE )&_StubMsg,
( NDR_SCONTEXT )pphContext,
( NDR_RUNDOWN )PCTXTYPE_rundown);
}
RpcFinally
{
}
RpcEndFinally
_pRpcMessage->BufferLength =
(unsigned int)(_StubMsg.Buffer - (unsigned char __RPC_FAR *)_pRpcMessage->Buffer);
}
void __RPC_STUB
hello_CtxHello(
PRPC_MESSAGE _pRpcMessage )
{
MIDL_STUB_MESSAGE _StubMsg;
NDR_SCONTEXT phContext;
RPC_STATUS _Status;
((void)(_Status));
NdrServerInitializeNew(
_pRpcMessage,
&_StubMsg,
&hello_StubDesc);
RpcTryFinally
{
RpcTryExcept
{
if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[8] );
phContext = NdrServerContextUnmarshall(( PMIDL_STUB_MESSAGE )&_StubMsg);
if(_StubMsg.Buffer > _StubMsg.BufferEnd)
{
RpcRaiseException(RPC_X_BAD_STUB_DATA);
}
}
RpcExcept( RPC_BAD_STUB_DATA_EXCEPTION_FILTER )
{
RpcRaiseException(RPC_X_BAD_STUB_DATA);
}
RpcEndExcept
CtxHello(( PCTXTYPE )*NDRSContextValue(phContext));
}
RpcFinally
{
}
RpcEndFinally
_pRpcMessage->BufferLength =
(unsigned int)(_StubMsg.Buffer - (unsigned char __RPC_FAR *)_pRpcMessage->Buffer);
}
void __RPC_STUB
hello_CtxClose(
PRPC_MESSAGE _pRpcMessage )
{
MIDL_STUB_MESSAGE _StubMsg;
NDR_SCONTEXT pphContext;
RPC_STATUS _Status;
((void)(_Status));
NdrServerInitializeNew(
_pRpcMessage,
&_StubMsg,
&hello_StubDesc);
( PCTXTYPE __RPC_FAR * )pphContext = 0;
RpcTryFinally
{
RpcTryExcept
{
if ( (_pRpcMessage->DataRepresentation & 0X0000FFFFUL) != NDR_LOCAL_DATA_REPRESENTATION )
NdrConvert( (PMIDL_STUB_MESSAGE) &_StubMsg, (PFORMAT_STRING) &__MIDL_ProcFormatString.Format[14] );
pphContext = NdrServerContextUnmarshall(( PMIDL_STUB_MESSAGE )&_StubMsg);
if(_StubMsg.Buffer > _StubMsg.BufferEnd)
{
RpcRaiseException(RPC_X_BAD_STUB_DATA);
}
}
RpcExcept( RPC_BAD_STUB_DATA_EXCEPTION_FILTER )
{
RpcRaiseException(RPC_X_BAD_STUB_DATA);
}
RpcEndExcept
CtxClose(( PCTXTYPE __RPC_FAR * )NDRSContextValue(pphContext));
_StubMsg.BufferLength = 20U;
_pRpcMessage->BufferLength = _StubMsg.BufferLength;
_Status = I_RpcGetBuffer( _pRpcMessage );
if ( _Status )
RpcRaiseException( _Status );
_StubMsg.Buffer = (unsigned char __RPC_FAR *) _pRpcMessage->Buffer;
NdrServerContextMarshall(
( PMIDL_STUB_MESSAGE )&_StubMsg,
( NDR_SCONTEXT )pphContext,
( NDR_RUNDOWN )PCTXTYPE_rundown);
}
RpcFinally
{
}
RpcEndFinally
_pRpcMessage->BufferLength =
(unsigned int)(_StubMsg.Buffer - (unsigned char __RPC_FAR *)_pRpcMessage->Buffer);
}
static const MIDL_STUB_DESC hello_StubDesc =
{
(void __RPC_FAR *)& hello___RpcServerInterface,
MIDL_user_allocate,
MIDL_user_free,
0,
0,
0,
0,
0,
__MIDL_TypeFormatString.Format,
1, /* -error bounds_check flag */
0x10001, /* Ndr library version */
0,
0x5030118, /* MIDL Version 5.3.280 */
0,
0,
0, /* notify & notify_flag routine table */
0x1, /* MIDL flag */
0, /* Reserved3 */
0, /* Reserved4 */
0 /* Reserved5 */
};
static RPC_DISPATCH_FUNCTION hello_table[] =
{
hello_CtxOpen,
hello_CtxHello,
hello_CtxClose,
0
};
RPC_DISPATCH_TABLE hello_v1_0_DispatchTable =
{
3,
hello_table
};
#if !defined(__RPC_WIN32__)
#error Invalid build platform for this stub.
#endif
static const MIDL_PROC_FORMAT_STRING __MIDL_ProcFormatString =
{
0,
{
0x51, /* FC_OUT_PARAM */
#ifndef _ALPHA_
0x1, /* x86, MIPS & PPC stack size = 1 */
#else
0x2, /* Alpha stack size = 2 */
#endif
/* 2 */ NdrFcShort( 0x2 ), /* Type Offset=2 */
/* 4 */ 0x4e, /* FC_IN_PARAM_BASETYPE */
0x8, /* FC_LONG */
/* 6 */ 0x5b, /* FC_END */
0x5c, /* FC_PAD */
/* 8 */
0x4d, /* FC_IN_PARAM */
#ifndef _ALPHA_
0x1, /* x86, MIPS & PPC stack size = 1 */
#else
0x2, /* Alpha stack size = 2 */
#endif
/* 10 */ NdrFcShort( 0xa ), /* Type Offset=10 */
/* 12 */ 0x5b, /* FC_END */
0x5c, /* FC_PAD */
/* 14 */
0x50, /* FC_IN_OUT_PARAM */
#ifndef _ALPHA_
0x1, /* x86, MIPS & PPC stack size = 1 */
#else
0x2, /* Alpha stack size = 2 */
#endif
/* 16 */ NdrFcShort( 0xe ), /* Type Offset=14 */
/* 18 */ 0x5b, /* FC_END */
0x5c, /* FC_PAD */
0x0
}
};
static const MIDL_TYPE_FORMAT_STRING __MIDL_TypeFormatString =
{
0,
{
NdrFcShort( 0x0 ), /* 0 */
/* 2 */
0x11, 0x0, /* FC_RP */
/* 4 */ NdrFcShort( 0x2 ), /* Offset= 2 (6) */
/* 6 */ 0x30, /* FC_BIND_CONTEXT */
0xa0, /* Ctxt flags: via ptr, out, */
/* 8 */ 0x0, /* 0 */
0x0, /* 0 */
/* 10 */ 0x30, /* FC_BIND_CONTEXT */
0x41, /* Ctxt flags: in, can't be null */
/* 12 */ 0x0, /* 0 */
0x0, /* 0 */
/* 14 */
0x11, 0x0, /* FC_RP */
/* 16 */ NdrFcShort( 0x2 ), /* Offset= 2 (18) */
/* 18 */ 0x30, /* FC_BIND_CONTEXT */
0xe1, /* Ctxt flags: via ptr, in, out, can't be null */
/* 20 */ 0x0, /* 0 */
0x0, /* 0 */
0x0
}
};
#endif /* !defined(_M_IA64) && !defined(_M_AXP64)*/

View file

@ -1,78 +0,0 @@
#include <stdlib.h>
#include <stdio.h>
#include <ctype.h>
#include "ctx.h"
void CtxOpen( PCTXTYPE *pphContext,
long Value)
{
printf("CtxOpen(): Value=%d\n",Value);
*pphContext = (PCTXTYPE)midl_user_allocate( sizeof(CTXTYPE) );
**pphContext = Value;
}
void CtxHello( PCTXTYPE phContext )
{
printf("CtxHello(): Hello, World! Context value: %d\n", *phContext);
}
void CtxClose(PCTXTYPE *pphContext )
{
printf("CtxClose(): %d\n", **pphContext);
midl_user_free(*pphContext);
*pphContext = NULL;
}
void main()
{
RPC_STATUS status;
unsigned int cMinCalls = 1;
unsigned int cMaxCalls = 20;
int i;
status = RpcServerUseProtseqEp("ncacn_np", 20, "\\pipe\\hello", NULL);
if (status)
{
printf("RpcServerUseProtseqEp %x\n", status);
exit(status);
}
status = RpcServerRegisterIf(hello_v1_0_s_ifspec, NULL, NULL);
if (status)
{
printf("RpcServerRegisterIf %x\n", status);
exit(status);
}
status = RpcServerListen(1, 20, FALSE);
if (status)
{
printf("RpcServerListen %x", status);
exit(status);
}
scanf("%d", &i);
}
void __RPC_USER PCTXTYPE_rundown(
PCTXTYPE hContext)
{
PCTXTYPE pCtx = (PCTXTYPE)hContext;
printf("Context rundown: Value=%d \n", *pCtx);
midl_user_free(hContext);
}
void __RPC_FAR * __RPC_USER midl_user_allocate(size_t len)
{
return(malloc(len));
}
void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
{
free(ptr);
}

View file

@ -1,235 +0,0 @@
/*
* PROJECT: ReactOS Test applications
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/testsets/smss/movefile.cpp
* PURPOSE: Provides testing for the "move file after reboot"
* function of smss.exe/kernel32.dll
* PROGRAMMERS: Dmitriy Philippov (shedon@mail.ru)
*/
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include "windows.h"
#include <stdio.h>
#include <tchar.h>
#include "stdlib.h"
#include "string.h"
void Usage()
{
printf(" Usage: smssTest.exe -g|c|s|d \n \
g - generate test files \n \
c - check files after reboot \n \
s - show registry entry \n \
d - delete registry value \n");
}
int ShowRegValue()
{
BYTE lpBuff[255];
memset(lpBuff, 0, sizeof(lpBuff));
DWORD lSize = sizeof(lpBuff);
HKEY hKey;
LONG retValue;
// test registry entry
retValue = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Session Manager", 0, KEY_QUERY_VALUE, &hKey);
if( ERROR_SUCCESS != retValue ) {
printf("RegOpenKeyEx err=%ld \n", retValue);
return 1;
}
retValue = RegQueryValueEx(hKey, "PendingFileRenameOperations", NULL, NULL, lpBuff, &lSize);
if( ERROR_SUCCESS != retValue ) {
printf("RegQueryValueEx err=%ld \n", retValue);
lSize = 0;
}
printf("reg data: \n");
for(UINT i=0; i<lSize; i++) {
printf("%c", lpBuff[i]);
}
printf("\n");
RegCloseKey(hKey);
return 0;
}
int DeleteValue()
{
HKEY hKey;
LONG retValue;
// test registry entry
retValue = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Control\\Session Manager", 0, KEY_SET_VALUE, &hKey);
if( ERROR_SUCCESS != retValue ) {
printf("RegOpenKeyEx err=%ld \n", retValue);
return 1;
}
retValue = RegDeleteValue(hKey, "PendingFileRenameOperations");
if( ERROR_SUCCESS != retValue ) {
printf("RegDeleteValue err=%ld \n", retValue);
}
RegCloseKey(hKey);
return 0;
}
int Generate()
{
char sBuf[255];
DWORD dwSize;
HANDLE hFile = NULL;
BOOL fReturnValue;
const char szxReplacedFile[] = "c:\\testFileIsReplaced";
const char szxMovedFileWithRepl[] = "c:\\testFileShouldBeMovedW";
const char szxMovedFile[] = "c:\\testFileShouldBeMoved";
const char szxNewMovedFile[] = "c:\\testFileIsMoved";
const char szxDeletedFile[] = "c:\\testFileShouldBeDeleted";
memset(sBuf, 0xaa, sizeof(sBuf));
// create the first file for moving
hFile = CreateFile(
szxMovedFile,
FILE_ALL_ACCESS,
0,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(NULL == hFile) {
printf("Can't create the %s file, err=%ld \n", szxMovedFile, GetLastError());
return 1;
}
WriteFile(hFile, sBuf, sizeof(sBuf), &dwSize, NULL);
CloseHandle(hFile);
// create the second file for removing
hFile = CreateFile(
szxDeletedFile,
FILE_ALL_ACCESS,
0,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(NULL == hFile) {
printf("Can't create the %s file, err=%ld \n", szxDeletedFile, GetLastError());
return 1;
}
WriteFile(hFile, sBuf, sizeof(sBuf), &dwSize, NULL);
CloseHandle(hFile);
hFile = CreateFile(
szxReplacedFile,
FILE_ALL_ACCESS,
0,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(NULL == hFile) {
printf("Can't create the %s file, err=%ld \n", szxReplacedFile, GetLastError());
return 1;
}
WriteFile(hFile, sBuf, sizeof(sBuf), &dwSize, NULL);
CloseHandle(hFile);
hFile = CreateFile(
szxMovedFileWithRepl,
FILE_ALL_ACCESS,
0,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
if(NULL == hFile) {
printf("Can't create the %s file, err=%ld \n", szxMovedFileWithRepl, GetLastError());
return 1;
}
WriteFile(hFile, sBuf, sizeof(sBuf), &dwSize, NULL);
CloseHandle(hFile);
fReturnValue = MoveFileEx(
szxDeletedFile,
NULL,
MOVEFILE_DELAY_UNTIL_REBOOT);
if( !fReturnValue ) {
printf("Can't move the %s file, err=%ld \n", szxDeletedFile, GetLastError());
return 1;
}
ShowRegValue();
fReturnValue = MoveFileEx(
szxMovedFile,
szxNewMovedFile,
MOVEFILE_DELAY_UNTIL_REBOOT);
if( !fReturnValue ) {
printf("Can't move the %s file, err=%ld \n", szxMovedFile, GetLastError());
return 1;
}
ShowRegValue();
fReturnValue = MoveFileEx(
szxMovedFileWithRepl,
szxReplacedFile,
MOVEFILE_DELAY_UNTIL_REBOOT|MOVEFILE_REPLACE_EXISTING);
if( !fReturnValue ) {
printf("Can't move the %s file, err=%ld \n", szxMovedFileWithRepl, GetLastError());
return 1;
}
ShowRegValue();
return 0;
}
int Check()
{
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
if( argc<2 ) {
Usage();
return 1;
}
if( 0 == strncmp(argv[1], "-g", 2) )
{
// generate test files and registry values
return Generate();
}
else if( 0 == strncmp(argv[1], "-c", 2) )
{
// check generated files
return Check();
}
else if( 0 == strncmp(argv[1], "-s", 2) )
{
//
return ShowRegValue();
}
else if( 0 == strncmp(argv[1], "-d", 2) )
{
return DeleteValue();
}
else
{
Usage();
return 1;
}
return 0;
}

View file

@ -1,12 +0,0 @@
<module name="movefile" type="win32cui" installbase="system32" installname="movefiletest.exe">
<include base="movefile">.</include>
<define name="__USE_W32API" />
<define name="_WIN32_IE">0x0500</define>
<define name="_WIN32_WINNT">0x0600</define>
<define name="WINVER">0x0600</define>
<library>kernel32</library>
<library>advapi32</library>
<library>user32</library>
<file>movefile.cpp</file>
<file>movefile.rc</file>
</module>

View file

@ -1,9 +0,0 @@
#include <windows.h>
#include "resource.h"
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS Move File after reboot test\0"
#define REACTOS_STR_INTERNAL_NAME "movefiletest\0"
#define REACTOS_STR_ORIGINAL_FILENAME "movefiletest.exe\0"
#include <reactos/version.rc>

View file

@ -1,7 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
<group>
<directory name="movefile">
<xi:include href="movefile/movefile.rbuild" />
</directory>
</group>

View file

@ -1,10 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
<group>
<directory name="smss">
<xi:include href="smss/smss.rbuild" />
</directory>
<directory name="user32">
<xi:include href="user32/user32.rbuild" />
</directory>
</group>

View file

@ -1,145 +0,0 @@
/*
* Copyright 2006 Saveliy Tretiakov
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "windows.h"
#include "stdio.h"
#include "resource.h"
WCHAR WndClass[] = L"capicon_class";
HINSTANCE hInst;
INT testnum = 0;
LRESULT CALLBACK WndProc(HWND hWnd,
UINT msg,
WPARAM wParam,
LPARAM lParam)
{
HICON hIcon;
switch (msg)
{
case WM_GETICON:
if(testnum>2)
{
if(wParam == ICON_SMALL)
hIcon = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON2SM));
else if(wParam == ICON_BIG)
hIcon = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON2BIG));
else hIcon = (HICON)1;
if(!hIcon)
{
printf("LoadIcon() failed: %d\n", (INT)GetLastError());
break;
}
return (LRESULT)hIcon;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
INT main(INT argc, CHAR **argv)
{
HWND hWnd;
MSG msg;
WNDCLASSEX wcx;
UINT result;
if(argc<2)
{
printf("DrawCaption icon test.\n");
printf("USAGE: drawcap.exe <testnumber>\n\n");
printf("Available tests:\n"
"1. Class small icon\n"
"2. Class big icon\n"
"3. Class small icon + WM_GETICON\n"
"4. Class big icon + WM_GETICON\n"
"5. WM_GETICON only\n\n");
return 0;
}
testnum = atoi(argv[1]);
if(testnum < 1 || testnum > 5)
{
printf("Unknown test %d\n", testnum);
return 1;
}
hInst = GetModuleHandle(NULL);
memset(&wcx, 0, sizeof(wcx));
wcx.cbSize = sizeof(wcx);
wcx.style = CS_HREDRAW | CS_VREDRAW;
wcx.lpfnWndProc = (WNDPROC) WndProc;
wcx.hInstance = hInst;
wcx.hbrBackground = (HBRUSH)COLOR_WINDOW;
wcx.lpszClassName = WndClass;
if(testnum<5)wcx.hIcon = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON1BIG));
if(testnum == 1 || testnum == 3)
wcx.hIconSm = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON1SM));
if(!(result = RegisterClassEx(&wcx)))
{
printf("Shit! RegisterClassEx failed: %d\n",
(int)GetLastError());
return 1;
}
hWnd = CreateWindowEx(0,
WndClass,
L"DrawCaption icon test",
WS_OVERLAPPED|WS_THICKFRAME|WS_SYSMENU,
CW_USEDEFAULT,
CW_USEDEFAULT,
250,
100,
NULL,
0,
hInst,
NULL);
if(!hWnd)
{
printf("Shit! Can't create wnd!\n");
UnregisterClass(WndClass, hInst);
return 1;
}
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0 ))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnregisterClass(WndClass, hInst);
return 0;
}

View file

@ -1,13 +0,0 @@
#include <windows.h>
#include "resource.h"
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS DrawCaption icon test\0"
#define REACTOS_STR_INTERNAL_NAME "capicon\0"
#define REACTOS_STR_ORIGINAL_FILENAME "capicon.exe\0"
#include <reactos/version.rc>
ID_ICON1BIG ICON res\icon1big.ico
ID_ICON1SM ICON res\icon1sm.ico
ID_ICON2BIG ICON res\icon2big.ico
ID_ICON2SM ICON res\icon2sm.ico

View file

@ -1,289 +0,0 @@
/*
* Copyright 2006 Saveliy Tretiakov
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "windows.h"
#include "resource.h"
#include "stdio.h"
WCHAR CaptWndClass[] = L"captwnd_class";
HINSTANCE hInst;
INT testnum = 0;
//BOOL STDCALL (*DrawCaptionTemp) (
// HWND hwnd,
// HDC hdc,
// const RECT *rect,
// HFONT hFont,
// HICON hIcon,
// LPCWSTR str,
// UINT uFlags);
VOID CapTest(HWND hWnd,
HDC hDc,
LPRECT pR,
WCHAR *Text,
DWORD Flags,
WCHAR *AddonStr,
DWORD Addon)
{
WCHAR Buf[512];
lstrcpy(Buf, AddonStr);
if(lstrlen(Buf))lstrcat(Buf, L" | ");
lstrcat(Buf, Text);
DrawText( hDc, Buf, lstrlen(Buf), pR, DT_LEFT );
pR->top+=20;
pR->bottom+=20;
if(!DrawCaption(hWnd, hDc, pR, Flags | Addon))
{
printf("PAINT: DrawCaption failed: %d\n", (int)GetLastError());
}
pR->top+=30;
pR->bottom+=30;
}
VOID DrawCaptionTest(HWND hWnd, HDC hDc, WCHAR *AddonStr, DWORD Addon)
{
RECT Rect;
GetClientRect(hWnd, &Rect);
Rect.bottom = 30;
Rect.left = 10;
Rect.right-=10;
Rect.top = 10;
CapTest(hWnd, hDc, &Rect, L"DC_TEXT:", DC_TEXT, AddonStr, Addon);
CapTest(hWnd, hDc, &Rect,
L"DC_TEXT | DC_ACTIVE:",
DC_TEXT | DC_ACTIVE,
AddonStr, Addon);
CapTest(hWnd, hDc, &Rect,
L"DC_TEXT | DC_ICON:" ,
DC_TEXT | DC_ICON,
AddonStr, Addon);
CapTest(hWnd, hDc, &Rect,
L"DC_TEXT | DC_ACTIVE | DC_ICON:" ,
DC_TEXT | DC_ACTIVE | DC_ICON,
AddonStr, Addon);
CapTest(hWnd, hDc, &Rect,
L"DC_TEXT | DC_INBUTTON:" ,
DC_TEXT | DC_INBUTTON,
AddonStr, Addon);
CapTest(hWnd, hDc, &Rect,
L"DC_TEXT | DC_ACTIVE | DC_INBUTTON:" ,
DC_TEXT | DC_ACTIVE | DC_INBUTTON,
AddonStr, Addon);
CapTest(hWnd, hDc, &Rect,
L"DC_TEXT | DC_ICON | DC_INBUTTON:" ,
DC_TEXT | DC_ICON | DC_INBUTTON,
AddonStr, Addon);
CapTest(hWnd, hDc, &Rect,
L"DC_TEXT | DC_ACTIVE | DC_ICON | DC_INBUTTON:" ,
DC_TEXT | DC_ACTIVE | DC_ICON | DC_INBUTTON,
AddonStr, Addon);
}
LRESULT CALLBACK CaptWndProc(HWND hWnd,
UINT msg,
WPARAM wParam,
LPARAM lParam)
{
switch (msg)
{
case WM_PAINT:
{
HDC hDc;
PAINTSTRUCT Ps;
hDc = BeginPaint(hWnd, &Ps);
SetBkMode( hDc, TRANSPARENT );
switch(testnum)
{
case 1:
DrawCaptionTest(hWnd, hDc, L"", 0);
break;
case 2:
DrawCaptionTest(hWnd, hDc, L"DC_GRADIENT", DC_GRADIENT);
break;
case 3:
DrawCaptionTest(hWnd, hDc, L"DC_SMALLCAP", DC_SMALLCAP);
break;
case 4:
DrawCaptionTest(hWnd, hDc, L"DC_BUTTONS", DC_BUTTONS);
break;
case 5:
DrawCaptionTest(hWnd, hDc,
L"DC_GRADIENT | DC_SMALLCAP",
DC_GRADIENT | DC_SMALLCAP);
break;
case 6:
DrawCaptionTest(hWnd, hDc,
L"DC_GRADIENT | DC_BUTTONS",
DC_GRADIENT | DC_BUTTONS);
break;
case 7:
DrawCaptionTest(hWnd, hDc,
L"DC_BUTTONS | DC_SMALLCAP",
DC_BUTTONS | DC_SMALLCAP);
break;
case 8:
DrawCaptionTest(hWnd, hDc,
L"DC_BUTTONS | DC_SMALLCAP | DC_GRADIENT",
DC_BUTTONS | DC_SMALLCAP | DC_GRADIENT);
break;
}
EndPaint(hWnd, &Ps);
return 0;
}
case WM_DESTROY:
{
PostQuitMessage(0);
return 0;
}
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
INT main(INT argc, CHAR **argv)
{
HWND hWnd;
MSG msg;
WNDCLASSEX wcx;
UINT result;
HBRUSH hBr;
//HMODULE hLib;
if(argc<2)
{
printf("DrawCaption testcode.\n");
printf("USAGE: drawcap.exe <testnumber> [useicon]\n\n");
printf("Available tests:\n"
"1. DrawCaption test\n"
"2. DrawCaption test + DC_GRADIENT\n"
"3. DrawCaption test + DC_SMALLCAP\n"
"4. DrawCaption test + DC_BUTTONS\n"
"5. DrawCaption test + DC_GRADIENT | DC_SMALLCAP\n"
"6. DrawCaption test + DC_GRADIENT | DC_BUTTONS\n"
"7. DrawCaption test + DC_BUTTONS | DC_SMALLCAP\n"
"8. DrawCaption test + DC_BUTTONS | DC_SMALLCAP | DC_GRADIENT\n\n");
return 0;
}
testnum = atoi(argv[1]);
if(testnum < 1 || testnum > 8)
{
printf("Unknown test %d\n", testnum);
return 1;
}
hInst = GetModuleHandle(NULL);
//hLib = LoadLibrary(L"user32");
//if(!hLib)
//{
// printf("Shit! Can't load user32.dll\n");
// return 1;
//}
//DrawCaptionTemp = GetProcAddress(hLib, "DrawCaptionTempW");
//if(!DrawCaptionTemp)
//{
// printf("Shit! Can't get DrawCaptionTemp address\n");
// return 1;
//}
hBr = CreateSolidBrush(RGB(255, 255, 255));
if(!hBr)
{
printf("Shit! Can't create brush.");
return 1;
}
memset(&wcx, 0, sizeof(wcx));
wcx.cbSize = sizeof(wcx);
wcx.style = CS_HREDRAW | CS_VREDRAW;
wcx.lpfnWndProc = (WNDPROC) CaptWndProc;
wcx.hInstance = hInst;
wcx.hbrBackground = hBr;
wcx.lpszClassName = CaptWndClass;
if(argc > 2) wcx.hIconSm = LoadIcon(hInst, MAKEINTRESOURCE(ID_ICON1SM));
if(!(result = RegisterClassEx(&wcx)))
{
printf("Shit! RegisterClassEx failed: %d\n",
(int)GetLastError());
DeleteObject(hBr);
return 1;
}
hWnd = CreateWindowEx(0,
CaptWndClass,
L"DrawCaption test",
WS_OVERLAPPED|WS_THICKFRAME|WS_SYSMENU,
CW_USEDEFAULT,
CW_USEDEFAULT,
600,
470,
NULL,
0,
hInst,
NULL);
if(!hWnd)
{
printf("Shit! Can't create wnd!\n");
UnregisterClass(CaptWndClass, hInst);
DeleteObject(hBr);
return 1;
}
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0 ))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
DeleteObject(hBr);
UnregisterClass(CaptWndClass, hInst);
return 0;
}

View file

@ -1,11 +0,0 @@
#include <windows.h>
#include "resource.h"
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS DrawCaption test\0"
#define REACTOS_STR_INTERNAL_NAME "drawcap\0"
#define REACTOS_STR_ORIGINAL_FILENAME "drawcap.exe\0"
#include <reactos/version.rc>
ID_ICON1SM ICON res\icon1sm.ico

View file

@ -1,29 +0,0 @@
<module name="drawcap" type="win32cui" installbase="system32" installname="drawcap.exe">
<include base="drawcap">.</include>
<define name="__USE_W32API" />
<define name="UNICODE" />
<define name="_UNICODE" />
<define name="_WIN32_IE">0x0500</define>
<define name="_WIN32_WINNT">0x0600</define>
<define name="WINVER">0x0600</define>
<library>kernel32</library>
<library>user32</library>
<library>gdi32</library>
<file>drawcap.c</file>
<file>drawcap.rc</file>
</module>
<module name="capicon" type="win32cui" installbase="system32" installname="capicon.exe">
<include base="capicon">.</include>
<define name="__USE_W32API" />
<define name="UNICODE" />
<define name="_UNICODE" />
<define name="_WIN32_IE">0x0500</define>
<define name="_WIN32_WINNT">0x0600</define>
<define name="WINVER">0x0600</define>
<library>kernel32</library>
<library>user32</library>
<library>gdi32</library>
<file>capicon.c</file>
<file>capicon.rc</file>
</module>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 B

View file

@ -1,10 +0,0 @@
#ifndef _CAPICON_RESOURCE_H
#define _CAPICON_RESOURCE_H
#define ID_ICON1BIG 101
#define ID_ICON1SM 102
#define ID_ICON2BIG 103
#define ID_ICON2SM 104
#endif /* _CAPICON_RESOURCE_H */

View file

@ -1,387 +0,0 @@
/*
* PROJECT: ReactOS
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/testset/user32/kbdlayout/kbdlayout.c
* PURPOSE: Keyboard layout testapp
* COPYRIGHT: Copyright 2007 Saveliy Tretiakov
*/
#define UNICODE
#include<wchar.h>
#include <windows.h>
#include "resource.h"
LRESULT MainDialogProc(HWND hDlg, UINT Msg, WPARAM wParam, LPARAM lParam);
HINSTANCE hInst;
HWND hMainDlg;
typedef struct {
WNDPROC OrigProc;
WCHAR WndName[25];
} WND_DATA;
DWORD WINAPI ThreadProc(LPVOID lpParam)
{
DialogBoxParam(hInst,
MAKEINTRESOURCE(IDD_MAINDIALOG),
NULL,
(DLGPROC)MainDialogProc,
(LPARAM)NULL);
return 0;
}
INT WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
hInst = hInstance;
ThreadProc(0);
return 0;
}
int GetKlList(HKL **list)
{
HKL *ret;
int n;
n = GetKeyboardLayoutList(0, NULL);
ret = HeapAlloc(GetProcessHeap(), 0, sizeof(HKL)*n);
GetKeyboardLayoutList(n, ret);
*list = ret;
return n;
}
void FreeKlList(HKL *list)
{
HeapFree(GetProcessHeap(), 0, list);
}
void UpdateData(HWND hDlg)
{
WCHAR buf[KL_NAMELENGTH];
WCHAR buf2[512];
HWND hList;
HKL *klList, hKl;
int n, i,j;
GetKeyboardLayoutName(buf);
swprintf(buf2, L"Active: %s (%x)", buf, GetKeyboardLayout(0));
SetWindowText(GetDlgItem(hDlg, IDC_ACTIVE), buf2);
hList = GetDlgItem(hDlg, IDC_LIST);
SendMessage(hList, LB_RESETCONTENT, 0, 0);
n = GetKlList(&klList);
hKl = GetKeyboardLayout(0);
for(i = 0; i < n; i++)
{
swprintf(buf, L"%x", klList[i] );
j = SendMessage(hList, LB_ADDSTRING, 0, (LPARAM) buf);
SendMessage(hList, LB_SETITEMDATA, j, (LPARAM) klList[i]);
if(klList[i] == hKl) SendMessage(hList, LB_SETCURSEL, j, 0);
}
FreeKlList(klList);
}
void FormatMsg(WCHAR *format, ...)
{
WCHAR buf[255];
va_list argptr;
va_start(argptr, format);
_vsnwprintf(buf, sizeof(buf)-1, format, argptr);
MessageBox(0, buf, L"msg", 0);
va_end(argptr);
}
void FormatBox(HWND hWnd, DWORD Flags, WCHAR *Caption, WCHAR *Format, ...)
{
WCHAR buf[255];
va_list argptr;
va_start(argptr, Format);
_vsnwprintf(buf, sizeof(buf)-1, Format, argptr);
MessageBox(hWnd, buf, Caption, Flags);
va_end(argptr);
}
LRESULT CALLBACK WndSubclassProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
WND_DATA *data = (WND_DATA*)GetWindowLong(hwnd, GWL_USERDATA);
if(uMsg == WM_INPUTLANGCHANGE)
{
FormatMsg(L"%s: WM_INPUTLANGCHANGE lParam=%x wParam=%x\n", data->WndName, lParam, wParam);
UpdateData(hMainDlg);
//Pass message to defwindowproc
}
else if(uMsg == WM_INPUTLANGCHANGEREQUEST)
{
FormatMsg(L"%s: WM_INPUTLANGCHANGEREQUEST lParam=%x wParam=%x\n", data->WndName, lParam, wParam);
UpdateData(hMainDlg);
//Pass message to defwindowproc
}
return ( CallWindowProc( data->OrigProc, hwnd, uMsg, wParam, lParam) );
}
void SubclassWnd(HWND hWnd, WCHAR* Name)
{
WND_DATA *data = HeapAlloc(GetProcessHeap(), 0, sizeof(WND_DATA));
data->OrigProc = (WNDPROC)SetWindowLong( hWnd, GWL_WNDPROC, (LONG)WndSubclassProc);
wcsncpy(data->WndName, Name, 25);
SetWindowLong(hWnd, GWL_USERDATA, (LONG)data);
return;
}
DWORD GetActivateFlags(HWND hDlg)
{
DWORD ret = 0;
if(IsDlgButtonChecked(hDlg, IDC_KLF_REORDER))
ret |= KLF_REORDER;
if(IsDlgButtonChecked(hDlg, IDC_KLF_RESET))
ret |= KLF_RESET;
if(IsDlgButtonChecked(hDlg, IDC_KLF_SHIFTLOCK))
ret |= KLF_SHIFTLOCK;
if(IsDlgButtonChecked(hDlg, IDC_KLF_SETFORPROCESS))
ret |= KLF_SETFORPROCESS;
return ret;
}
DWORD GetLoadFlags(HWND hDlg)
{
DWORD ret = 0;
if(IsDlgButtonChecked(hDlg, IDL_KLF_ACTIVATE))
ret |= KLF_ACTIVATE;
if(IsDlgButtonChecked(hDlg, IDL_KLF_NOTELLSHELL))
ret |= KLF_NOTELLSHELL;
if(IsDlgButtonChecked(hDlg, IDL_KLF_REORDER))
ret |= KLF_REORDER;
if(IsDlgButtonChecked(hDlg, IDL_KLF_REPLACELANG))
ret |= KLF_REPLACELANG;
if(IsDlgButtonChecked(hDlg, IDL_KLF_SUBSTITUTE_OK))
ret |= KLF_SUBSTITUTE_OK;
if(IsDlgButtonChecked(hDlg, IDL_KLF_SETFORPROCESS))
ret |= KLF_SETFORPROCESS;
return ret;
}
UINT GetDelayMilliseconds(HWND hDlg)
{
WCHAR Buf[255];
UINT ret;
GetWindowText(GetDlgItem(hDlg, IDC_DELAY), Buf, sizeof(Buf));
swscanf(Buf, L"%d", &ret);
return ret*1000;
}
HKL GetSelectedLayout(HWND hDlg)
{
int n;
HWND hList;
hList = GetDlgItem(hDlg, IDC_LIST);
if((n = SendMessage(hList, LB_GETCURSEL, 0, 0)) != LB_ERR)
return (HKL) SendMessage(hList, LB_GETITEMDATA, n, 0);
else return INVALID_HANDLE_VALUE;
}
HKL GetActivateHandle(HWND hDlg)
{
if(IsDlgButtonChecked(hDlg, IDC_FROMLIST))
return GetSelectedLayout(hDlg);
else if(IsDlgButtonChecked(hDlg, IDC_HKL_NEXT))
return (HKL)HKL_NEXT;
return (HKL)HKL_PREV;
}
/***************************************************
* MainDialogProc *
***************************************************/
LRESULT MainDialogProc(HWND hDlg,
UINT Msg,
WPARAM wParam,
LPARAM lParam)
{
HKL hKl;
switch (Msg)
{
case WM_INITDIALOG:
{
WCHAR Buf[255];
UpdateData(hDlg);
hMainDlg = hDlg;
SubclassWnd(GetDlgItem(hDlg, IDC_LIST), L"List");
SubclassWnd(GetDlgItem(hDlg, IDC_EDIT1), L"Edit1");
SubclassWnd(GetDlgItem(hDlg, IDC_KLID), L"Klid");
SubclassWnd(GetDlgItem(hDlg, ID_CANCEL), L"CancelB");
SubclassWnd(GetDlgItem(hDlg, IDC_ACTIVATE), L"ActivateB");
SubclassWnd(GetDlgItem(hDlg, IDC_REFRESH), L"RefreshB");
SubclassWnd(GetDlgItem(hDlg, IDC_UNLOAD), L"UnloadB");
SubclassWnd(GetDlgItem(hDlg, IDC_LOAD), L"LoadB");
CheckRadioButton(hDlg, IDC_FROMLIST, IDC_FROMEDIT, IDC_FROMLIST);
SetWindowText(GetDlgItem(hDlg, IDC_KLID), L"00000419");
swprintf(Buf, L"Current thread id: %d", GetCurrentThreadId());
SetWindowText(GetDlgItem(hDlg, IDC_CURTHREAD), Buf);
SetWindowText(GetDlgItem(hDlg, IDC_DELAY), L"0");
return 0;
} /* WM_INITDIALOG */
case WM_COMMAND:
{
switch(LOWORD(wParam))
{
case ID_CANCEL:
{
EndDialog(hDlg, ERROR_CANCELLED);
break;
}
case IDC_ACTIVATE:
{
if((hKl = GetActivateHandle(hDlg)) != INVALID_HANDLE_VALUE)
{
Sleep(GetDelayMilliseconds(hDlg));
if(!(hKl = ActivateKeyboardLayout(hKl, GetActivateFlags(hDlg))))
FormatBox(hDlg, MB_ICONERROR, L"Error",
L"ActivateKeyboardLayout() failed. %d", GetLastError());
else UpdateData(hDlg);
//FormatBox(hDlg, 0, L"Activated", L"Prev - %x, err - %d.", hKl,
// GetLastError());
}
else MessageBox(hDlg, L"No item selected", L"Error", MB_ICONERROR);
break;
}
case IDC_UNLOAD:
{
if((hKl = GetSelectedLayout(hDlg)) != INVALID_HANDLE_VALUE)
{
Sleep(GetDelayMilliseconds(hDlg));
if(!UnloadKeyboardLayout(hKl))
FormatBox(hDlg, MB_ICONERROR, L"Error",
L"UnloadKeyboardLayout() failed. %d",
GetLastError());
else UpdateData(hDlg);
}
else MessageBox(hDlg, L"No item selected", L"Error", MB_ICONERROR);
break;
}
case IDC_LOAD:
{
WCHAR buf[255];
GetWindowText(GetDlgItem(hDlg, IDC_KLID), buf, sizeof(buf));
Sleep(GetDelayMilliseconds(hDlg));
if(!LoadKeyboardLayout(buf, GetLoadFlags(hDlg)))
FormatBox(hDlg, MB_ICONERROR, L"Error",
L"LoadKeyboardLayout() failed. %d",
GetLastError());
else UpdateData(hDlg);
break;
}
case IDC_REFRESH:
{
UpdateData(hDlg);
break;
}
case IDC_NEWTHREAD:
{
if(!CreateThread(NULL, 0, ThreadProc, NULL, 0, NULL))
{
FormatBox(hDlg, MB_ICONERROR, L"Error!",
L"Can not create thread (%d).", GetLastError());
}
}
case IDC_LIST:
{
if(HIWORD(wParam) == LBN_SELCHANGE)
{
WCHAR buf[25];
if((hKl = GetSelectedLayout(hDlg)) != NULL)
{
swprintf(buf, L"%x", hKl);
SetWindowText(GetDlgItem(hDlg, IDC_HANDLE), buf);
}
}
break;
}
}
return TRUE;
} /* WM_COMMAND */
case WM_INPUTLANGCHANGE:
{
FormatMsg(L"dlg WM_INPUTLANGCHANGE lParam=%x wParam=%x\n", lParam, wParam);
return FALSE;
}
case WM_INPUTLANGCHANGEREQUEST:
{
FormatMsg(L"dlg WM_INPUTLANGCHANGEREQUEST lParam=%x wParam=%x\n", lParam, wParam);
UpdateData(hDlg);
return FALSE;
}
case WM_CLOSE:
{
EndDialog(hDlg, ERROR_CANCELLED);
return TRUE;
} /* WM_CLOSE */
default:
return FALSE;
}
}

View file

@ -1,98 +0,0 @@
# Microsoft Developer Studio Project File - Name="kbdlayout" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=kbdlayout - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "kbdlayout.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "kbdlayout.mak" CFG="kbdlayout - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "kbdlayout - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "kbdlayout - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "kbdlayout - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x419 /d "NDEBUG"
# ADD RSC /l 0x419 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "kbdlayout - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x419 /d "_DEBUG"
# ADD RSC /l 0x419 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
# Begin Target
# Name "kbdlayout - Win32 Release"
# Name "kbdlayout - Win32 Debug"
# Begin Source File
SOURCE=.\kbdlayout.c
# End Source File
# Begin Source File
SOURCE=.\kbdlayout.rc
# End Source File
# Begin Source File
SOURCE=.\resource.h
# End Source File
# End Target
# End Project

View file

@ -1,13 +0,0 @@
<module name="kbdlayout" type="win32gui" installbase="system32" installname="kbdlayout.exe">
<include base="kbdlayout">.</include>
<define name="__USE_W32API" />
<define name="_UNICODE" />
<define name="_WIN32_IE">0x0500</define>
<define name="_WIN32_WINNT">0x0600</define>
<define name="WINVER">0x0600</define>
<library>kernel32</library>
<library>user32</library>
<library>gdi32</library>
<file>kbdlayout.c</file>
<file>kbdlayout.rc</file>
</module>

View file

@ -1,142 +0,0 @@
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// Russian resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
#ifdef _WIN32
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
#pragma code_page(1251)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_MAINDIALOG DIALOG DISCARDABLE 0, 0, 327, 194
STYLE DS_MODALFRAME | DS_CENTER | WS_CAPTION | WS_SYSMENU
CAPTION "Keyboard layout test"
FONT 8, "MS Sans Serif"
BEGIN
PUSHBUTTON "Close",ID_CANCEL,215,172,105,14
EDITTEXT IDC_EDIT1,7,140,199,47,ES_MULTILINE | ES_AUTOHSCROLL
LISTBOX IDC_LIST,124,60,84,46,LBS_NOINTEGRALHEIGHT | WS_VSCROLL |
WS_TABSTOP
LTEXT "Loaded layouts",IDC_STATIC,124,50,49,8
LTEXT "Active:",IDC_ACTIVE,7,127,114,10,SS_SUNKEN
PUSHBUTTON "Unload",IDC_UNLOAD,124,109,41,14
PUSHBUTTON "Activate",IDC_ACTIVATE,166,109,41,14
GROUPBOX "Activate Flags",IDC_STATIC,215,7,103,67
CONTROL "KLF_REORDER",IDC_KLF_REORDER,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,221,22,69,10
CONTROL "KLF_RESET",IDC_KLF_RESET,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,221,34,66,12
CONTROL "KLF_SETFORPROCESS",IDC_KLF_SETFORPROCESS,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,221,48,95,10
CONTROL "KLF_SHIFTLOCK",IDC_KLF_SHIFTLOCK,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,221,60,72,10
GROUPBOX "Activate layout",IDC_STATIC,216,77,103,50
CONTROL "From list",IDC_FROMLIST,"Button",BS_AUTORADIOBUTTON |
WS_GROUP,220,90,41,10
CONTROL "HKL_NEXT",IDC_HKL_NEXT,"Button",BS_AUTORADIOBUTTON,220,
101,53,10
CONTROL "HKL_PREV",IDC_HKL_PREV,"Button",BS_AUTORADIOBUTTON,220,
112,53,10
GROUPBOX "Load layout",IDC_STATIC,7,7,113,118
CONTROL "KLF_ACTIVATE",IDL_KLF_ACTIVATE,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,14,44,67,10
CONTROL "KLF_NOTELLSHELL",IDL_KLF_NOTELLSHELL,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,14,57,83,10
LTEXT "pwszKLID:",IDC_STATIC,14,17,35,8
EDITTEXT IDC_KLID,14,27,54,14,ES_AUTOHSCROLL
CONTROL "KLF_REORDER",IDL_KLF_REORDER,"Button",BS_AUTOCHECKBOX |
WS_TABSTOP,14,71,69,10
CONTROL "KLF_REPLACELANG",IDL_KLF_REPLACELANG,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,14,84,85,10
CONTROL "KLF_SUBSTITUTE_OK",IDL_KLF_SUBSTITUTE_OK,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,14,97,92,10
CONTROL "KLF_SETFORPROCESS",IDL_KLF_SETFORPROCESS,"Button",
BS_AUTOCHECKBOX | WS_TABSTOP,14,110,95,10
PUSHBUTTON "Load",IDC_LOAD,71,27,46,14
PUSHBUTTON "Refresh",IDC_REFRESH,124,124,83,12
GROUPBOX "Multithreading",IDC_STATIC,216,130,104,39
LTEXT "Current thread ID:",IDC_CURTHREAD,219,141,93,8
PUSHBUTTON "Create new thread",IDC_NEWTHREAD,234,152,71,12
GROUPBOX "Load\\Activate delay",IDC_STATIC,124,7,85,40
LTEXT "Delay (seconds):",IDC_STATIC,130,17,75,8
EDITTEXT IDC_DELAY,128,29,59,14,ES_AUTOHSCROLL
END
/////////////////////////////////////////////////////////////////////////////
//
// DESIGNINFO
//
#ifdef APSTUDIO_INVOKED
GUIDELINES DESIGNINFO DISCARDABLE
BEGIN
IDD_MAINDIALOG, DIALOG
BEGIN
LEFTMARGIN, 7
RIGHTMARGIN, 320
TOPMARGIN, 7
BOTTOMMARGIN, 187
END
END
#endif // APSTUDIO_INVOKED
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#include ""afxres.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END
#endif // APSTUDIO_INVOKED
#endif // Russian resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED

View file

@ -1,46 +0,0 @@
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by kbdlayout.rc
//
#define IDD_MAINDIALOG 101
#define ID_CANCEL 1000
#define IDC_EDIT1 1021
#define IDC_LIST 1022
#define IDC_ACTIVE 1023
#define IDC_EDIT2 1024
#define IDC_DELAY 1024
#define IDC_UNLOAD 1025
#define IDC_ACTIVATE 1026
#define IDC_KLF_REORDER 1027
#define IDC_KLF_RESET 1028
#define IDC_KLF_SETFORPROCESS 1029
#define IDC_KLF_SHIFTLOCK 1030
#define IDC_FROMLIST 1032
#define IDC_HKL_NEXT 1033
#define IDC_HKL_PREV 1034
#define IDL_KLF_ACTIVATE 1035
#define IDL_KLF_NOTELLSHELL 1036
#define IDC_KLID 1037
#define IDL_KLF_REORDER 1038
#define IDL_KLF_REPLACELANG 1039
#define IDL_KLF_SUBSTITUTE_OK 1040
#define IDL_KLF_SETFORPROCESS 1041
#define IDC_HKL_PREV2 1042
#define IDC_FROMEDIT 1042
#define IDC_LOAD 1043
#define IDC_REFRESH 1044
#define IDC_HANDLE 1046
#define IDC_CURTHREAD 1049
#define IDC_NEWTHREAD 1050
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 105
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1051
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif

View file

@ -1,163 +0,0 @@
/*
* Copyright 2006 Saveliy Tretiakov
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* This testapp demonstrates WS_SYSMENU + WS_EX_DLGMODALFRAME
* behavior and shows that DrawCaption does care
* about WS_EX_DLGMODALFRAME and WS_EX_TOOLWINDOW
*/
#include "windows.h"
#include "stdio.h"
#include "resource.h"
WCHAR WndClass[] = L"sysicon_class";
LRESULT CALLBACK WndProc(HWND hWnd,
UINT msg,
WPARAM wParam,
LPARAM lParam)
{
switch (msg)
{
case WM_PAINT:
{
HDC hDc;
PAINTSTRUCT Ps;
RECT Rect;
GetClientRect(hWnd, &Rect);
Rect.left = 10;
Rect.top = 10;
Rect.right-=10;
Rect.bottom = 25;
hDc = BeginPaint(hWnd, &Ps);
SetBkMode( hDc, TRANSPARENT );
DrawCaption(hWnd, hDc, &Rect, DC_GRADIENT | DC_ACTIVE | DC_TEXT | DC_ICON);
EndPaint(hWnd, &Ps);
return 0;
}
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd, msg, wParam, lParam);
}
int APIENTRY WinMain(HINSTANCE hInst,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
HWND hWnd1, hWnd2, hWnd3;
MSG msg;
WNDCLASSEX wcx;
UINT result;
memset(&wcx, 0, sizeof(wcx));
wcx.cbSize = sizeof(wcx);
wcx.lpfnWndProc = (WNDPROC) WndProc;
wcx.hInstance = hInst;
wcx.hbrBackground = (HBRUSH)COLOR_WINDOW;
wcx.lpszClassName = WndClass;
if(!(result = RegisterClassEx(&wcx)))
{
return 1;
}
/* WS_EX_DLGMODALFRAME */
hWnd1 = CreateWindowEx(WS_EX_DLGMODALFRAME,
WndClass,
L"WS_SYSMENU | WS_EX_DLGMODALFRAME",
WS_CAPTION | WS_SYSMENU ,
CW_USEDEFAULT,
CW_USEDEFAULT,
400,
100,
NULL,
0,
hInst,
NULL);
if(!hWnd1)
{
return 1;
}
ShowWindow(hWnd1, SW_SHOW);
UpdateWindow(hWnd1);
hWnd2 = CreateWindowEx(WS_EX_TOOLWINDOW,
WndClass,
L"WS_SYSMENU | WS_EX_TOOLWINDOW",
WS_CAPTION | WS_SYSMENU ,
CW_USEDEFAULT,
CW_USEDEFAULT,
400,
100,
NULL,
0,
hInst,
NULL);
if(!hWnd2)
{
return 1;
}
ShowWindow(hWnd2, SW_SHOW);
UpdateWindow(hWnd2);
hWnd3 = CreateWindowEx(0,
WndClass,
L"WS_SYSMENU ",
WS_CAPTION | WS_SYSMENU ,
CW_USEDEFAULT,
CW_USEDEFAULT,
400,
100,
NULL,
0,
hInst,
NULL);
if(!hWnd3)
{
return 1;
}
ShowWindow(hWnd3, SW_SHOW);
UpdateWindow(hWnd3);
while(GetMessage(&msg, NULL, 0, 0 ))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnregisterClass(WndClass, hInst);
return 0;
}

View file

@ -1,13 +0,0 @@
<module name="sysicon" type="win32gui" installbase="system32" installname="sysicon.exe">
<include base="capicon">.</include>
<define name="__USE_W32API" />
<define name="UNICODE" />
<define name="_UNICODE" />
<define name="_WIN32_IE">0x0500</define>
<define name="_WIN32_WINNT">0x0600</define>
<define name="WINVER">0x0600</define>
<library>kernel32</library>
<library>user32</library>
<library>gdi32</library>
<file>sysicon.c</file>
</module>

View file

@ -1,13 +0,0 @@
<?xml version="1.0"?>
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
<group>
<directory name="drawcaption">
<xi:include href="drawcaption/drawcaption.rbuild" />
</directory>
<directory name="sysicon">
<xi:include href="sysicon/sysicon.rbuild" />
</directory>
<directory name="kbdlayout">
<xi:include href="kbdlayout/kbdlayout.rbuild" />
</directory>
</group>