mirror of
https://github.com/reactos/reactos.git
synced 2024-07-14 08:26:08 +00:00
Move testsets from reactos to rostests (into a "win32" directory for now). 1/2
svn path=/trunk/; revision=26011
This commit is contained in:
parent
2199ae9003
commit
102ccaa64d
|
@ -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>
|
||||
|
|
|
@ -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__*/
|
|
@ -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__
|
|
@ -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;
|
||||
}
|
|
@ -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");
|
||||
}
|
|
@ -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__*/
|
|
@ -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__
|
|
@ -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");
|
||||
}
|
|
@ -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);
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
//file hello.idl
|
||||
[
|
||||
implicit_handle(handle_t hBinding)
|
||||
]
|
||||
interface hello
|
||||
{
|
||||
|
||||
}
|
|
@ -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
|
||||
|
||||
|
|
@ -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 );
|
||||
|
||||
}
|
|
@ -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)*/
|
||||
|
|
@ -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)*/
|
||||
|
|
@ -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);
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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>
|
|
@ -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>
|
||||
|
||||
|
|
@ -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>
|
|
@ -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>
|
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
|
|
@ -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;
|
||||
}
|
|
@ -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
|
||||
|
||||
|
|
@ -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 |
|
@ -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 */
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -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
|
|
@ -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>
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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;
|
||||
}
|
|
@ -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>
|
|
@ -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>
|
Loading…
Reference in a new issue