Compare commits

...

80 Commits

Author SHA1 Message Date
WindowsNT351
1166c60d51
Update README.md 2025-08-25 21:08:48 +08:00
WindowsNT351
fd0359a37c 2.02 Readme 2025-08-25 21:04:56 +08:00
WindowsNT351
484fc1b738
Update README.md 2025-08-24 19:50:08 +08:00
WindowsNT351
2c7fb2ee94
Update README.md 2025-08-24 19:06:11 +08:00
WindowsNT351
62c66fec6c
Update README.md 2025-08-24 19:01:07 +08:00
WindowsNT351
e9baf36447 202C102 2025-08-24 18:59:26 +08:00
WindowsNT351
70f2860221
Update README.md 2025-08-23 13:08:14 +08:00
WindowsNT351
7451b9cdb2
Update README.md 2025-08-23 12:20:10 +08:00
WindowsNT351
f6aa765b4d Update README.md 2025-08-22 21:35:29 +08:00
WindowsNT351
47aa52ee2a Update README 2025-08-22 21:32:58 +08:00
WindowsNT351
4c73dfbffc
Update README.md 2025-08-22 21:08:33 +08:00
WindowsNT351
6393084f54
Update README.md 2025-08-22 20:59:51 +08:00
WindowsNT351
426d4b8e54
Update README.md 2025-08-22 20:41:59 +08:00
WindowsNT351
3c16010d41
Update README.md 2025-08-22 20:19:41 +08:00
WindowsNT351
b50be14f3b
Update README.md 2025-08-22 20:18:29 +08:00
WindowsNT351
e7330cd0fe
Update README.md 2025-08-22 20:18:06 +08:00
WindowsNT351
8f25400991
Update README.md 2025-08-22 20:17:22 +08:00
WindowsNT351
c8fc4b101c 202C101 2025-08-22 16:01:40 +08:00
WindowsNT351
002e7b3c5b
Update README.md 2025-08-21 15:43:12 +08:00
WindowsNT351
0fe5b9320f
Update README.md 2025-08-21 15:40:53 +08:00
WindowsNT351
ee96f06234
Update README.md 2025-08-21 15:38:16 +08:00
WindowsNT351
b9be8f4746 update readme 2025-08-21 15:16:45 +08:00
WindowsNT351
afa21246ae 202B105 2025-08-21 15:08:59 +08:00
WindowsNT351
c952d07516 202B105 2025-08-20 20:30:09 +08:00
WindowsNT351
0d833b1313
202B105 2025-08-20 16:21:24 +08:00
WindowsNT351
e646930fe4 202B105 2025-08-19 16:45:54 +08:00
WindowsNT351
b90ea3d6f8
202B105 2025-08-18 21:34:03 +08:00
WindowsNT351
5581c18bd8 202B105 2025-08-18 14:36:08 +08:00
WindowsNT351
54ffedacee 202B104 2025-08-10 18:58:44 +08:00
WindowsNT351
5fe72cef2a 202B102 2025-07-09 16:21:42 +08:00
WindowsNT351
7f435ff783
Update README_EN.md 2025-04-20 11:14:30 +08:00
WindowsNT351
42c21b6a89
Update README.md 2025-04-20 11:14:12 +08:00
WindowsNT351
5f858be3cf
Update README_EN.md 2025-02-07 21:41:20 +08:00
WindowsNT351
3e46772429
Update README.md 2025-02-07 21:41:02 +08:00
WindowsNT351
259f2c563a
Update README_EN.md 2025-02-07 21:40:15 +08:00
WindowsNT351
045d733578
Update README.md 2025-02-07 21:39:51 +08:00
WindowsNT351
f44c8768a2
Update README_EN.md 2025-02-07 21:37:30 +08:00
WindowsNT351
81f96c3ddf
Update README.md 2025-02-07 21:36:15 +08:00
WindowsNT351
61ae773f22 readme 2025-02-07 21:32:42 +08:00
WindowsNT351
290cb992e4
Update README_EN.md 2025-02-07 21:29:26 +08:00
WindowsNT351
0baca08d13
Update README.md 2025-02-07 21:20:52 +08:00
WindowsNT351
c9817c23e5
Update README_EN.md 2024-08-27 13:59:03 +08:00
WindowsNT351
661025fe1e
Update README.md 2024-08-27 13:58:19 +08:00
WindowsNT351
7390ed79d7
Update README.md 2024-08-27 13:57:41 +08:00
WindowsNT351
11a9b235a5
Update README.md 2024-08-23 16:23:22 +08:00
WindowsNT351
78a2ebccf5
Update README_EN.md 2024-08-21 20:03:16 +08:00
WindowsNT351
0258a742ae
Update README.md 2024-08-21 16:14:39 +08:00
WindowsNT351
7dfea0158c
Update README_EN.md 2024-08-21 16:12:32 +08:00
WindowsNT351
0a6c025148
Update README_EN.md 2024-08-21 16:06:32 +08:00
WindowsNT351
645dc67cac
Update README.md 2024-08-21 16:00:48 +08:00
WindowsNT351
f485f1e31d
Update README.md 2024-08-21 15:53:49 +08:00
WindowsNT351
00be57c2d3
Update README.md 2024-08-21 15:24:57 +08:00
WindowsNT351
3e3ff63cdc
Update README.md 2024-08-21 15:24:36 +08:00
WindowsNT351
bda64c81a8
Update README.md 2024-08-21 15:12:35 +08:00
WindowsNT351
78af0daa47
Update README.md 2024-08-21 15:12:02 +08:00
WindowsNT351
711c11e0e2 Update cetl.png 2024-08-21 14:29:51 +08:00
WindowsNT351
e09fea8a0b
Update README_EN.md 2024-08-21 14:25:28 +08:00
WindowsNT351
66a6df7902
Update README.md 2024-08-14 19:50:33 +08:00
WindowsNT351
a0a71f9d81 201C101 2024-08-14 17:21:29 +08:00
WindowsNT351
628838bdf4
Update README_EN.md 2024-08-08 18:04:44 +08:00
WindowsNT351
d0c435e777
Update README_EN.md 2024-08-08 18:04:28 +08:00
WindowsNT351
ed3c72c32b
Update README.md 2024-08-08 18:03:05 +08:00
WindowsNT351
7433f0f309 Update cetl.png 2024-08-08 18:01:43 +08:00
WindowsNT351
61ce5e589f
Update README_EN.md 2024-08-08 17:56:29 +08:00
WindowsNT351
358e0cbfeb
Update README_EN.md 2024-07-24 15:15:33 +08:00
WindowsNT351
7153c8532e
Update README.md 2024-07-24 15:14:59 +08:00
WindowsNT351
284da074ce
Update README.md 2024-07-24 12:50:46 +08:00
WindowsNT351
b411e92c6e
Update README_EN.md 2024-07-24 12:47:26 +08:00
WindowsNT351
d7a1ddfa64
Create README_EN.md 2024-07-24 12:46:38 +08:00
WindowsNT351
aca0ac35ba 201B103 2024-07-23 17:51:17 +08:00
WindowsNT351
15ce1d12c7 Merge branch 'main' of https://github.com/WindowsNT351/CE-Collections-2.0 2024-07-23 17:11:22 +08:00
WindowsNT351
65277e2906
Update README.md 2024-07-20 21:56:46 +08:00
WindowsNT351
78f53ca0da 201B103 2024-07-20 21:47:25 +08:00
WindowsNT351
6ede10e4f1
201B103 2024-07-20 21:46:13 +08:00
WindowsNT351
48ed4e73cc
201B103 2024-07-20 21:45:01 +08:00
WindowsNT351
2e9d8f4b8b
Update README.md 2024-07-11 18:14:40 +08:00
WindowsNT351
0d2a52cf81
Update README.md 2024-07-10 22:48:22 +08:00
WindowsNT351
56e6ecd2d4
Update README.md 2024-07-10 22:42:58 +08:00
WindowsNT351
1dc6113314
Update README.md 2024-07-10 22:40:09 +08:00
WindowsNT351
0cf8203cca
for readme 2024-07-10 22:12:43 +08:00
146 changed files with 5720 additions and 3073 deletions

View File

@ -1,5 +1,5 @@
/*CEVCHECK.EXE for CECollections P2.0 2.01*/
/*Copyright 351Workshop 2022-2024*/
/*CEVCHECK.EXE for CECollections 2.02*/
/*Copyright 351Workshop 2022-2025*/
/*Build on Tubro C++*/
/*Run on x86 DOS*/
@ -11,17 +11,17 @@ int main(int argc, char **argv)
{
if (argc == 1)
{
printf("\nWindows CE video support checking program\n\n");
printf("\nWindows CE video & CPU support checking program\n\n");
printf("Usage: cevcheck [CEVER]\n");
printf("CEVER sample: 211STD\n\n");
printf("Return: VESASupport*10+MobileSupport\n\n");
printf("Last build:ver.201B101 Copyright 351Workshop 2022-2024\n");
printf("Return: NormolCPUSpt*100 + LegacyDisp*10 + InverDisp\n\n");
printf("Last build:ver.202B102 Copyright 351Workshop 2022-2025\n");
return -1;
}
if(!(argv[1][0] >= '0' && argv[1][0] <= '9'))
return 100;
return 200;
char CEID[10] = {0};
strcpy(CEID, argv[1]);
@ -32,6 +32,7 @@ int main(int argc, char **argv)
char CEEdion[10] = { 0 };
strncpy(CEEdion, CEID + 3, 3);
int currentCPUSupport = 1;
int currentVESASupport = 1;
int currentHalfSupport = 0;
@ -41,10 +42,16 @@ int main(int argc, char **argv)
else
currentVESASupport = 0;
if (iCEVer <= 210)
currentCPUSupport=0;
else
currentCPUSupport=1;
if ((CEEdion[0] == 'S' && CEEdion[1] == 'P' && CEEdion[2] == 0) || (CEEdion[0] == 'P' && CEEdion[1] == 'P' && CEEdion[2] == 'C' && CEEdion[3] == 0))
currentHalfSupport = 1;
else
currentHalfSupport = 0;
return currentVESASupport * 10 + currentHalfSupport;
printf("%d",currentCPUSupport * 100 + currentVESASupport * 10 + currentHalfSupport);
return currentCPUSupport * 100 + currentVESASupport * 10 + currentHalfSupport;
}

Binary file not shown.

View File

@ -611,7 +611,8 @@ main_error:
XmsFreeExtendedMemory(usBlockHandle);
}
printf("\n\n Press any key to cancel.\n");
//printf("\n\n Press any key to cancel.\n");
printf("\n\n ==============Press any key to cancel==============\n ");
__asm
{
push dx
@ -751,7 +752,7 @@ static void usage( char *pszProgramNameArg )
" treated as the name of the file.\n"
" It is an error for <pattern> to match multiple files\n"
" when <destination> specifies a file.\n"
"For CE Collections - Last built with ver.2.01-Beta1-02",
"For CE Collections - Last built with ver.2.01-Beta1-03",
pszProgram );
}
@ -873,6 +874,8 @@ static int LoadImage( BOOL bVerbose,
long int bootType;
unsigned len;
char cReturnStri[60]={0};
strcpy(cReturnStri,"\r \r\n ");
// Find the largest Extended Memory block and allocate it
@ -900,8 +903,8 @@ static int LoadImage( BOOL bVerbose,
fprintf(stderr, " ");
if( bVerbose )
{
fprintf(stderr,cReturnStri);
// Print info about memory available
printf( "Total free extended memory = %u, largest block = %u\n",
usTotalFree, usLargestBlock);
}
@ -912,6 +915,7 @@ static int LoadImage( BOOL bVerbose,
if( xmsError != XMS_SUCCESS )
{
fprintf(stderr,cReturnStri);
printf( "Error allocating extended memory - %s\n",
XmsErrorString(xmsError));
@ -932,7 +936,7 @@ static int LoadImage( BOOL bVerbose,
if( xmsError != XMS_SUCCESS )
{
fprintf(stderr, "\r \r");
fprintf(stderr,cReturnStri);
printf("Error locking extended memory - %s\n", XmsErrorString(xmsError));
XmsFreeExtendedMemory(usBlockHandle);
@ -950,7 +954,7 @@ static int LoadImage( BOOL bVerbose,
if( bVerbose )
{
fprintf(stderr, "\r \r");
fprintf(stderr,cReturnStri);
printf("Block allocated at 0x%lX\n", ulLinearAddress);
}
@ -976,7 +980,7 @@ static int LoadImage( BOOL bVerbose,
if( xmsError != XMS_SUCCESS )
{
fprintf(stderr, "\r \r");
fprintf(stderr,cReturnStri);
printf("Error zeroing extended memory - %s\n", XmsErrorString(xmsError));
if( !bParallelDownload && !bSerialDownload )
_close(hImage);
@ -1010,6 +1014,7 @@ static int LoadImage( BOOL bVerbose,
if( pszFileName )
{
fprintf(stderr,cReturnStri);
if( bSerialDownload )
printf("Loading image %s via serial port.\r\n",pszFileName);
else
@ -1027,6 +1032,7 @@ static int LoadImage( BOOL bVerbose,
}
else
{
fprintf(stderr,cReturnStri);
if( bSerialDownload )
printf("Loading host default image via serial port.\r\n");
else
@ -1071,7 +1077,11 @@ static int LoadImage( BOOL bVerbose,
}
if( bVerbose ) printf("Sending boot packet: ");
if( bVerbose )
{
fprintf(stderr,cReturnStri);
printf("Sending boot packet: ");
}
usIndex=0;
@ -1082,7 +1092,11 @@ static int LoadImage( BOOL bVerbose,
return FALSE;
}
if( bVerbose ) printf("%x ",BootPacket[usIndex]);
if( bVerbose )
{
fprintf(stderr,cReturnStri);
printf("%x ",BootPacket[usIndex]);
}
if( bSerialDownload )
{
@ -1103,12 +1117,14 @@ static int LoadImage( BOOL bVerbose,
if( hImage == -1 )
{
fprintf(stderr,cReturnStri);
printf("%s: Error opening file - %s\n", pszFileName, _strerror(NULL));
return FALSE;
}
if( (lImageSize = _filelength(hImage)) == -1 )
{
fprintf(stderr,cReturnStri);
printf("%s: Error obtaining file size - %s\n", pszFileName, _strerror(NULL));
if( !bParallelDownload && !bSerialDownload )
_close(hImage);
@ -1118,6 +1134,7 @@ static int LoadImage( BOOL bVerbose,
if( bVerbose )
{
fprintf(stderr,cReturnStri);
printf("Loading %s, size = %ld\n", pszFileName, lImageSize);
DisplayCEOSVersion( pszFileName ); // Extract Version Number from image if available
}
@ -1129,6 +1146,7 @@ static int LoadImage( BOOL bVerbose,
if( DownloadRead( hImage, ucBuffer, usReadSize, bParallelDownload) != usReadSize )
{
fprintf(stderr,cReturnStri);
printf("Error reading signature - %s\n", _strerror(NULL));
if( !bParallelDownload && !bSerialDownload )
_close(hImage);
@ -1138,6 +1156,7 @@ static int LoadImage( BOOL bVerbose,
if( memcmp(ucBuffer, ucSignature, sizeof(ucSignature)) != 0 )
{
fprintf(stderr,cReturnStri);
printf("Error invalid signature\nData: ");
for( i = 0; i < (int)usReadSize; i++ )
printf("%x ",ucBuffer[i]);
@ -1154,6 +1173,7 @@ static int LoadImage( BOOL bVerbose,
if( bVerbose )
{
fprintf(stderr,cReturnStri);
printf( "Image physical start = 0x%8.8lX, size = %ld\n",
*(PULONG)&ucBuffer[sizeof(ucSignature)],
*(PULONG)&ucBuffer[sizeof(ucSignature) + sizeof(ULONG)]);
@ -1172,7 +1192,7 @@ static int LoadImage( BOOL bVerbose,
if( usAmountRead != 3 * sizeof(ULONG) )
{
fprintf(stderr, "\r \r");
fprintf(stderr,cReturnStri);
printf("Error reading header - %s\n", XmsErrorString(xmsError));
if( !bParallelDownload && !bSerialDownload )
_close(hImage);
@ -1195,14 +1215,14 @@ static int LoadImage( BOOL bVerbose,
(ulSectionAddress + ulSectionSize) >
(ulLinearAddress + (ULONG)usLargestBlock * 1024) )
{
fprintf(stderr, "\r \r");
fprintf(stderr,cReturnStri);
printf(
"Error image section doesn't fit in allocated block\n"
"Block allocated at 0x%lX, size = %ld\n"
"Section physical start = 0x%8.8lX, size = %ld\n"
"Memory too low in your VM might cause this.\n"
" Block allocated at 0x%lX, size = %ld\n"
" Section physical start = 0x%8.8lX, size = %ld\n"
" Memory too low in your VM might cause this.\n"
"\n"
">> Increase memory may fix this.\n",
" >> Increase memory may fix this.\n",
ulLinearAddress, (ULONG)usLargestBlock * 1024,
ulSectionAddress, ulSectionSize);
@ -1214,7 +1234,7 @@ static int LoadImage( BOOL bVerbose,
if( bVerbose )
{
fprintf(stderr, "\r \r");
fprintf(stderr,cReturnStri);
printf(
"Section physical start = 0x%8.8lX, size = %ld\n",
ulSectionAddress, ulSectionSize);
@ -1236,7 +1256,7 @@ static int LoadImage( BOOL bVerbose,
if( usAmountRead != usReadSize )
{
fprintf(stderr, "\r \r");
fprintf(stderr,cReturnStri);
printf("Error reading section - %s\n", XmsErrorString(xmsError));
if( !bParallelDownload && !bSerialDownload )
_close(hImage);
@ -1261,7 +1281,7 @@ static int LoadImage( BOOL bVerbose,
if( xmsError != XMS_SUCCESS )
{
fprintf(stderr, "\r \r");
fprintf(stderr,cReturnStri);
printf("Error moving extended memory - %s\n", XmsErrorString(xmsError));
if( !bParallelDownload && !bSerialDownload )
_close(hImage);
@ -1274,7 +1294,7 @@ static int LoadImage( BOOL bVerbose,
#if 0
if( ulChecksum != ulSectionChecksum )
{
fprintf(stderr, "\r \r");
fprintf(stderr,cReturnStri);
printf(
"Bad checksum 0x%8.8lX, expected 0x%8.8lX\n",
ulChecksum, ulSectionChecksum);
@ -1305,7 +1325,7 @@ static int LoadImage( BOOL bVerbose,
out dx, al
pop dx
}
fprintf(stderr, "\r \r");
fprintf(stderr,cReturnStri);
// Indicate success

File diff suppressed because it is too large Load Diff

Binary file not shown.

13
DOS/VESATEST.exe/bld.bat Normal file
View File

@ -0,0 +1,13 @@
@REM
@REM Copyright (c) Microsoft Corporation. All rights reserved.
@REM
@REM
@REM Use of this sample source code is subject to the terms of the Microsoft
@REM license agreement under which you licensed this sample source code. If
@REM you did not accept the terms of the license agreement, you are not
@REM authorized to use this sample source code. For the terms of the license,
@REM please see the license agreement between you and Microsoft or, if applicable,
@REM see the LICENSE.RTF on your install media or the root of your tools installation.
@REM THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
@REM
cl vesatest.c

View File

@ -0,0 +1,59 @@
@REM
@REM Copyright (c) Microsoft Corporation. All rights reserved.
@REM
@REM
@REM Use of this sample source code is subject to the terms of the Microsoft
@REM license agreement under which you licensed this sample source code. If
@REM you did not accept the terms of the license agreement, you are not
@REM authorized to use this sample source code. For the terms of the license,
@REM please see the license agreement between you and Microsoft or, if applicable,
@REM see the LICENSE.RTF on your install media or the root of your tools installation.
@REM THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
@REM
@ECHO OFF
@REM Note: Please read the README.TXT in this directory for build instructions
@REM for loadcepc.
@REM
@REM The environment variable WINCEROOT must be set. The assembler
@REM "ml" used for TRANSFER.ASM requires this program.
if "%_WINCEROOT%"=="" goto ERROR2
PROMPT *** 16-bit dev mode - type exit to return to normal ***$_%prompt%
@REM Locate the 16 bit dev tools. Try local drive, then Windows CE tree
@REM and finally, the \\boneyard share.
if not exist %HOMEDRIVE%\msvc goto ENLIST_PATH
set __MSVCDIR=%HOMEDRIVE%\msvc
goto PATH_DONE
:ENLIST_PATH
if not exist %_WINCEROOT%\sdk\vc150.win goto SHARE_PATH
set __MSVCDIR=%_WINCEROOT%\sdk\vc150.win
goto PATH_DONE
:SHARE_PATH
if not exist \\boneyard\rellang\vc150.win\msvc goto ERROR
set __MSVCDIR=\\boneyard\rellang\vc150.win\msvc
@REM Setup PATH, DevDir, LIB, and INCLUDE locations.
:PATH_DONE
set PATH=%__MSVCDIR%\bin;%PATH%;%_WINCEROOT%\sdk\bin\i386;C:\MASM\BIN
set MSDevDir=%__MSVCDIR%
set LIB=%__MSVCDIR%\lib
set INCLUDE=%__MSVCDIR%\include
goto DONE
:ERROR
echo ERROR: vc150.win path NOT found.
goto DONE
:ERROR2
echo ERROR: WINCEROOT must be set.
:DONE
command

View File

@ -0,0 +1,22 @@
@REM
@REM Copyright (c) Microsoft Corporation. All rights reserved.
@REM
@REM
@REM Use of this sample source code is subject to the terms of the Microsoft
@REM license agreement under which you licensed this sample source code. If
@REM you did not accept the terms of the license agreement, you are not
@REM authorized to use this sample source code. For the terms of the license,
@REM please see the license agreement between you and Microsoft or, if applicable,
@REM see the LICENSE.RTF on your install media or the root of your tools installation.
@REM THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
@REM
@echo off
prompt 16-bit dev mode - type exit to return to normal$_%prompt%
if exist %_WINCEROOT%\sdk\vc150.win set __MSVCDIR=%_WINCEROOT%\sdk\vc150.win
if not exist %_WINCEROOT%\sdk\vc150.win set __MSVCDIR=\\boneyard\rellang\vc150.win\msvc
set PATH=%__MSVCDIR%\bin;%PATH%;%_WINCEROOT%\sdk\bin\i386
set MSDevDir=%__MSVCDIR%
set lib=%__MSVCDIR%\lib
set include=%__MSVCDIR%\include

View File

@ -0,0 +1,19 @@
@REM
@REM Copyright (c) Microsoft Corporation. All rights reserved.
@REM
@REM
@REM Use of this sample source code is subject to the terms of the Microsoft
@REM license agreement under which you licensed this sample source code. If
@REM you did not accept the terms of the license agreement, you are not
@REM authorized to use this sample source code. For the terms of the license,
@REM please see the license agreement between you and Microsoft or, if applicable,
@REM see the LICENSE.RTF on your install media or the root of your tools installation.
@REM THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
@REM
@echo off
SET _WINCEROOT=C:\WINCE600
%comspec% /k setupen2.bat

View File

@ -0,0 +1,28 @@
@REM
@REM Copyright (c) Microsoft Corporation. All rights reserved.
@REM
@REM
@REM Use of this sample source code is subject to the terms of the Microsoft
@REM license agreement under which you licensed this sample source code. If
@REM you did not accept the terms of the license agreement, you are not
@REM authorized to use this sample source code. For the terms of the license,
@REM please see the license agreement between you and Microsoft or, if applicable,
@REM see the LICENSE.RTF on your install media or the root of your tools installation.
@REM THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
@REM
@REM set __MSVCDIR=\\boneyard\boneyard-dfs\us\rellang\vc150.win\msvc
@REM
@REM set PATH=%__MSVCDIR%\bin;%PATH%;%_WINCEROOT%\sdk\bin\i386
@REM set MSDevDir=%__MSVCDIR%
@REM set lib=%__MSVCDIR%\lib
@REM set include=%__MSVCDIR%\include
@REM
@REM changed to the following code to allow exiting from 16-bit development mode back to the main 32 bit dev mode window
@REM setupen2.bat also checks for vc1.5 being installed on the local HD (under %_WINCEROOT%\sdk\vc150.win) and uses that if found
@REM else it goes to corpnet (under \\boneyard\rellan\vc150.win\msvc)
@REM
@echo off
%comspec% /k setupen2.bat

170
DOS/VESATEST.exe/vesatest.c Normal file
View File

@ -0,0 +1,170 @@
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES.
//
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define TRUE 1
#define FALSE 0
typedef int BOOL;
typedef unsigned char BYTE, *LPBYTE, UCHAR, *PUCHAR;
typedef unsigned int USHORT, *PUSHORT;
typedef unsigned long ULONG, *PULONG;
typedef unsigned short WORD, *PWORD;
typedef unsigned long DWORD, *PDWORD;
typedef signed char INT8;
typedef unsigned char UINT8;
typedef signed short INT16;
typedef unsigned short UINT16;
typedef signed int INT32;
typedef unsigned int UINT32;
#pragma pack(1)
typedef struct _VESA_GENERAL_INFO
{
UCHAR szSignature[4];
WORD wVersion;
UCHAR far * pszVendor;
DWORD dwCapabilities;
WORD far * pModeList;
WORD wTotalMemory;
WORD wOemSoftwareRev;
UCHAR far* pszVenderName;
UCHAR far* pszProductName;
UCHAR far* pszProductRev;
UCHAR ucReserved[222];
UCHAR ucOemData[256];
} VESA_GENERAL_INFO;
typedef struct _VESA_MODE_INFO
{
WORD wModeAttributes; /* Mode attributes */
UCHAR ucWindowAAttributes; /* Window A attributes */
UCHAR ucWindowBAttributes; /* Window B attributes */
WORD wWindowGranularity; /* Window granularity in k */
WORD wWindowSize; /* Window size in k */
WORD wWindowASegment; /* Window A segment */
WORD wWindowBSegment; /* Window B segment */
DWORD pWindowSchemeFunction; /* Pointer to window function */
WORD wBytesPerScanLine; /* Bytes per scanline */
WORD wXResolution; /* Horizontal resolution */
WORD wYResolution; /* Vertical resolution */
UCHAR ucXCharSize; /* Character cell width */
UCHAR ucYCharSize; /* Character cell height */
UCHAR ucNumberOfPlanes; /* Number of memory planes */
UCHAR ucBitsPerPixel; /* Bits per pixel */
UCHAR ucNumberOfBanks; /* Number of CGA style banks */
UCHAR ucMemoryModel; /* Memory model type */
UCHAR ucBankSize; /* Size of CGA style banks */
UCHAR ucNumberOfImagePages; /* Number of images pages */
UCHAR ucReserved1; /* Reserved */
UCHAR ucRedMaskSize; /* Size of direct color red mask */
UCHAR ucRedFieldPosition; /* Bit posn of lsb of red mask */
UCHAR ucGreenMaskSize; /* Size of direct color green mask */
UCHAR ucGreenFieldPosition; /* Bit posn of lsb of green mask */
UCHAR ucBlueMaskSize; /* Size of direct color blue mask */
UCHAR ucBlueFieldPosition; /* Bit posn of lsb of blue mask */
UCHAR ucRsvdMaskSize; /* Size of direct color res mask */
UCHAR ucRsvdFieldPosition; /* Bit posn of lsb of res mask */
UCHAR ucDirectColorModeInfo; /* Direct color mode attributes */
/* VESA 2.0 variables */
DWORD dwPhysBasePtr; /* physical address for flat frame buffer */
UCHAR ucReserved2[212]; /* Pad to 256 byte block size */
} VESA_MODE_INFO;
#pragma pack()
int listedModes=0;
void ListVideoModes(void)
{
VESA_GENERAL_INFO vesaInfo, far *pVesaInfo = &vesaInfo;
WORD far * ModePtr;
int ValidModeCount = 0;
vesaInfo.szSignature[0] = 'V';
vesaInfo.szSignature[1] = 'B';
vesaInfo.szSignature[2] = 'E';
vesaInfo.szSignature[3] = '2';
__asm
{
push es
mov ax, 04F00h ; Get VESA info
les di, pVesaInfo ; Pointer to info buffer
int 10h ; check for VESA
pop es
}
//printf("Vesa BIOS Version: %d.%d\n", vesaInfo.wVersion >> 8, vesaInfo.wVersion & 0xff);
ModePtr = vesaInfo.pModeList;
while (*ModePtr != 0xffff)
{
VESA_MODE_INFO modeInfo, far *pModeInfo = &modeInfo;
WORD modeNumber = *ModePtr++;
__asm
{
push es
mov cx, modeNumber ; mode to request info on
les di, pModeInfo ; pointer to info buffer
mov ax, 04f01h ; get MODE info
int 10h
pop es
}
if (modeInfo.ucNumberOfPlanes == 1 &&
modeInfo.dwPhysBasePtr != 0 &&
modeInfo.ucBitsPerPixel != 15)
{
if(!(modeInfo.ucBitsPerPixel == 16 &&
(modeInfo.ucRedMaskSize != 5 ||
modeInfo.ucGreenMaskSize != 6 ||
modeInfo.ucBlueMaskSize != 5)))
{
if ((ValidModeCount % 5) == 0)
{
//printf("\n");
}
/*printf(" %4dx%4dx%2d",
modeInfo.wXResolution,
modeInfo.wYResolution,
modeInfo.ucBitsPerPixel);*/
ValidModeCount++;
}
}
}
//printf("\n\nNumber of valid FLAT driver modes: %d\n", ValidModeCount);
listedModes=ValidModeCount;
}
int main(int argc, char **argv)
{
ListVideoModes();
if(listedModes==0)
{
system("cls");
printf("Your video card doesn't support VESA,please choose another one!\n");
getch();
while(1);
}
printf("VESATEST_201B103 - VESA check succesfuly\n");
}

Binary file not shown.

Binary file not shown.

404
README.md
View File

@ -1,58 +1,354 @@
### CE Collections 2.0
## 什么是CE Collections 2.0<br />
CE Collections 2.0集合了几乎所有的CE镜像和模拟器包括使用Loadcepc引导的x86Bin镜像、使用DeviceEmulator引导的ArmBin镜像和适用于Windows NT的Shell模拟器。<br />
## 如何使用
将iso载入虚拟光驱或虚拟机里推荐Windows XP SP3因为Windows PPC 2000模拟器无法在NT6.x上运行打开根目录下的WNT\MENU.exe选择想要开启的Windows CE版本单击Run即可打开模拟器<br />
注意在这里只能打开以DeviceEmulator或ShellEmulator为基础的模拟器若想引导x86Loadcepc请在虚拟机内引导iso进入到引导菜单后选择想要的版本用鼠标单击或使用键盘<br />
在引导早期的CE时菜单可能会询问是否使用高分辨率模式这是因为现代虚拟机无法正常模拟当时的显卡导致早期CE只能用低分辨率模式如果想使用高分辨率模式请使用PCEM或者86Box等可以模拟当时的硬件的模拟器推荐使用PCEM中的S3 ViRGE<br />
## QA:
Q:从光盘引导后选择Windows CE 2.x到Windows 3.x黑屏 A:分辨率可能选错了在VMware等虚拟机中需要使用低分辨率模式另外VMware新版本在模拟老系统时非常卡也有可能导致黑屏。<br />
Q:我已经使用了PCem但是依旧用不了高分辨率 A:在PCem中需要选择S3 ViRGE显卡搭配性能大于等于486/33的CPU才能使用高分辨率。<br />
Q:PCem中无法引导光盘 A:使用7Zip等压缩软件打开ISO文件解压[boot]下的img文件并从软盘引导。<br />
Q:关机怎么用不了 A:真就用不了。<br />
Q:在CEPC引导器中选择完系统后显示Error image section doesn't fit in allocated block A:内存太小了,调大内存。<br />
Q:Windows EC 2013引导后黑屏 A:创建虚拟机时不要使用VMware的DOS换用Windows XP。<br />
Q:Windows Mobile分辨率太抽象了 A:换另一个分辨率选项试试。<br />
Q:Shell Emulator无法多个一起启动 A:不要多个Shell Emulator一起启动若不小心一起启动请注销或重启并运行[CDROM]:\WNT\200HPC\ceu.reg。<br />
Q:Windows PPC 2000没法在Windows Vista及以上系统工作 A:没办法Windows API不兼容所以最好的体验Shell Emulator的系统是Windows XP。
Q:我的Windows CE/Mobile实体机不起动了你能帮帮我吗 A:6<br />
<div align="center">
<img alt="LOGO" src="./WNT/menu3.exe/res/about.bmp" /><br />
<h1>CE Collections -2.02-</h1>
<p>不止一个合集</p>
<p>
English version: <a href="./README_EN.md">https://github.com/WindowsNT351/CE-Collections/blob/main/README_EN.md</a><br />
</p>
</div>
---
# ✏️ 什么是 CE Collections
CE Collections 集合了几乎所有基于 CE 内核的官方Windows版本例如 Windows CE Core,Windows Mobile,Windows Phone等的镜像和模拟器。
镜像包括:
- 使用 Loadcepc 引导的 x86Bin 镜像
- 使用 DeviceEmulator 引导的 ArmBin 镜像
- 使用 XDE Emulator 引导的 ArmBin 镜像
模拟器包括:
- 适用于 Windows 7-11 的 <a href="https://github.com/WindowsNT351/Whitebox">Whitebox</a> 模拟器
- 适用于 Windows XP-11 的 Arm DeviceEmulator 模拟器
- 适用于 Windows 7 - 8.1 的 XDE Emulator 模拟器
- 适用于 Windows NT(4.0-11,部分版本不支持新的Windows版本) 的独立 Shell 模拟器
# 📥 如何使用
## WinNT平台模拟器使用方法
1. 在插入光盘之前启动宿主操作系统NT4.0-Win11
2. 插入光盘并等待弹出菜单,如果没有,运行[CD(DVD)ROM]\WNT\Menu3.exe。
3. 选择要启动的操作系统(模拟器)。注意,当使用不同的主机操作系统时,会有一些不同的限制。
- Windows NT 4.0 可用Shell Emulator这是Shell Emulator的最佳宿主操作系统。
- Windows 2000 - XP 可以Shell Emulatorx64宿主系统上不能运行Auto PC 1.0和ARM DeviceEmulator。
- Windows 7 - 8.1 可用Shell EmulatorPocket PC 2000和x64宿主系统上的Auto PC 1.0除外ARM DeviceEmulator、XDE Emulator和Whitebox Emulator。
- Windows 10 - 11 可用Shell EmulatorPocket PC 2000和x64宿主系统上的Auto PC 1.0除外ARM DeviceEmulator和Whitebox Emulator。
<img src="./menuwnt.png" width="900px;" alt=""/>
4. 完成!
## CEPC平台使用方法
**注意CEPC平台并不能启动全部镜像或模拟器。**
1. 插入光盘(或启动软盘)并从中启动。
2. 选择要启动的操作系统,[下一页]和[上一页]按键位于右下角和左下角。注意,启动镜像时存在一些限制。
- 全部镜像
- 请使用大于64MB以上的内存否则有些过大的镜像不能装载进内存或可用运行用内存过小推荐使用128MB。
- Windows CE 2.0-2.10
- 对于PCem、VMware、VBox、Qemu现代实体机或其他现代虚拟机这些镜像无法正常启动。
- 对于86Box请使用WinChip CPU并关闭动态重编译器。
- 对于实体机请使用486或Pentium586CPU。
<img src="./menudos.png" width="800px;" alt=""/>
3. 选择想使用的分辨率或确认启动。请注意,启动镜像有时存在一些限制。
- VGA8BPP显示驱动
- 对于VMware、VBox、Qemu或其他现代虚拟机只能使用低分辨率模式。
- 对于86Box PCem或实体机务必使用S3视频卡WinCE2.0使用S3Trio64其他版本使用S3Virge这样能开启高分辨率否则只能使用低分辨率。
- Windows Mobile 的VESA显示驱动
- 由于Windows Mobile显示为竖向有些显卡在遇到此分辨率时会显示错误发生这种情况时请尝试使用另一个分辨率。
<img src="./menudos2.png" width="800px;" alt=""/>
<img src="./menudos3.png" width="800px;" alt=""/>
4. 完成!
# 🔧 CE-Collections 各部分是如何工作的
## WinNT Platform
1. 插入光盘,自动打开[CD(DVD)ROM]:\WNT\Menu3.exe
2. Menu3.exe加载显示[CD(DVD)ROM]:\WNT\menu.enus配置文件加载[CD(DVD)ROM]:\CECV20.D0版本配置文件。
3. 选择要启动的模拟器/镜像
- Shell Emulator类
1. 使用shellmgr [模拟器种类] [路径] [主程序名称]。
2. shellmgr将模拟器复制到系统用户TEMP文件夹。
3. shellmgr检测宿主系统是否符合当前模拟器。
4. shellmgr对于不同模拟器做准备工作。
- WinCE 1.0 设置需要的环境变量
- HPC/PPC 2.x 替换模板注册表内模拟器路径,合并注册表
- PPC 2000 替换模板注册表内模拟器路径,合并注册表(不同的目录结构)
- APC 1.0 替换模板注册表内模拟器路径合并注册表加载WCEFS.sys驱动如果是Windows Vista以上系统循环终止ApcHook.sys(如果不终止会导致系统蓝屏)。
5. shellmgr启动对应的主程序。
6. shellmgr等待主程序关闭。
7. shellmgr卸载装载的驱动删除临时文件。
- ARM DeviceEmulator类
1. 直接使用DeviceEmulator /video [适用于本镜像的分辨率] /memsize 256
- CEPC WhiteboxEmulator类
1. 直接使用Whitebox [分辨率选择见CEPC相比于DOSCEPC此处区分更详细] /M:[对应的86Box配置文件] [NK.bin]
- XDE Emulator类
1. 使用xdemgr [XDE版本] [NK.bin]。
2. xdemgr检测宿主系统是否符合当前模拟器。
3. xdemgr复制XDE的VMM.sys(系统为32位)或VMM64.sys(系统为64位)到TEMP文件夹并加载。
4. xdemgr复制XDE的配置文件到TEMP文件夹。
5. xdemgr启动XDE模拟器。
6. xdemgr等待XDE关闭。
7. xdemgr卸载驱动删除临时文件。
## CEPC Platform
1. 插入光盘/启动软盘并从中引导至MS-DOS 7.1。
2. 加载LOGO.sys显示启动logo。加载光驱驱动IDE
3. 检测D:是否为CE-Collections光盘若不是遍历寻找。
4. 打开[CD(DVD)ROM]:\DOS\Menu.bat加载[CD(DVD)ROM]:\CECV20.D0版本配置文件。
5. 用户选择启动的镜像。
6. 自动检测选择的镜像为何种镜像2.0-2.10/2.11-2.12 HPC2000/3.0-2013/WinMobile
- 2.0-2.10
1. 显示警告提示框。
2. 使用Loadcepc /D:3 [NK.bin]
- 2.11-2.12 HPC2000
1. 显示分辨率选择提示框。
2. 高分辨率使用Loadcepc /D:3 [NK.bin]
低分辨率使用Loadcepc /D:0 [NK.bin](此分辨率几乎不可用)
- 3.0-2013
1. 显示确认启动提示框。
2. 使用Loadcepc /L:800x600x16 [NK.bin]
- WinMobile
1. 显示分辨率选择提示框。
2. 修复分辨率使用Loadcepc /L:175x240x16 [NK.bin]
原始分辨率使用Loadcepc /L:320x400x16 [NK.bin]
### Loadcepc是什么
Loadcepc是Windows CE x86镜像的引导器Bootloader起到将NK.bin加载至内存设置显示分辨率跳转到指定地址的作用。
DOS只是CE启动的跳板CE启动后DOS提供的中断例程和驻留在内存的程序将不可用x86CE不是基于DOS的。
# ❓ QA
Q: 在 86Box 或 PCem 中无法引导光盘
A: 请使用 7Zip 等压缩软件打开 ISO 文件,解压 [boot] 文件夹中的 img 文件,然后从软盘引导。
Q: 在 CEPC 引导器中选择完系统后显示 “Error image section doesn't fit in allocated block”
A: 内存可能设定过小,请适当调大内存。
Q: Windows EC 2013 引导后黑屏
A: 内存可能设定过小,请适当调大内存。
Q: 为什么我在WinNT Loader里面打开某个版本后没有反应
A: 可能是窗口在Menu背后打开或者宿主系统版本低于本模拟器所需的版本。
Q: 为什么整体内容是英文的?
A: 因为英文镜像资源较全,构建也较完善,所以选择了英文版镜像;菜单等内容也相应采用英文格式。
Q: 我的 Windows CE/Mobile 实体机无法启动,能帮忙解决吗? / 能帮我安装一下这个WinCE软件吗
A: 无法回答。
Q: 你能把其他 Windows 系统集成进来吗?
A: 请看项目名称——答案自明。
## 以下是本项目集成的CE镜像和模拟器
CEPC:<br />
? Windows CE 2.11<br />
√ Windows CE 2.12<br />
√ Windows CE 3.0<br />
√ Windows CE 4.0(Thin Client)<br />
√ Windows CE 4.1(Thin Client)<br />
√ Windows CE 4.2(Thin Client)<br />
√ Windows CE 5(Thin Client,IP Phone)<br />
√ Windows CE 6 [R3](Thin Client,IP Phone)<br />
√ Windows EC 7(Thin Client,Silverlight)<br />
√ Windows EC 2013(Thin Client,Silverlight)<br />
√ Windows HPC 2000<br />
√ Windows Mobile 2002 PPC<br />
√ Windows Mobile 2002 SP<br />
√ Windows Mobile 2003 PPC<br />
√ Windows Mobile 2003 SP<br />
√ Windows Mobile 2003 PPC SE<br />
√ Windows Mobile 2003 SP SE<br />
# 🔨 本项目集成的 CE 镜像和模拟器
| | | | CE-Collections Supporting | | |
|---------------------------|---------|--------------|-----------------------------------|----------------------|----------------------|
| | Version | Core Version | Name | Shell | Emulator |
| | 1.x | 1.00 | Windows CE 1.00 | ----- | Shell Emulator |
| | | 1.01 | Windows CE 1.01 | ----- | Shell Emulator |
| | 2.x | 2.00 | Windows CE 2.0(or 2.01?) | ----- | CEPC |
| | | | Handheld PC 2.0 | ----- | Shell Emulator |
| | | 2.01 | Auto PC 1.0 | ----- | Shell Emulator |
| | | | Palm-size PC 1.0 | ----- | Shell Emulator |
| | | 2.10 | Windows CE 2.10 | ----- | CEPC |
| | | 2.11 | Windows CE 2.11 | ----- | CEPC |
| | | | Palm-size PC 1.1<br>(Simplified Chinese) | ----- | Shell Emulator |
| | | | Palm-size PC 1.2 | ----- | Shell Emulator |
| | | | Handheld PC 3.0 | ----- | Shell Emulator |
| | | 2.12 | Windows CE 2.12 | ----- | CEPC |
| | 3.x | 3.00 | Windows CE 3.0 | ----- | CEPC |
| | | | Pocket PC 2000 | ----- | Shell Emulator |
| | | | Handheld PC 2000 | ----- | CEPC |
| | | | Windows Mobile 2002 | Pocket PC | CEPC |
| | | | | Smart Phone | CEPC |
| | 4.x | 4.00 | Windows CE 4.0 | Standard Shell | CEPC |
| | | | | Thin Client | CEPC |
| | | 4.10 | Windows CE 4.1 | Standard Shell | CEPC |
| | | | | Thin Client | CEPC |
| | | 4.20 | Windows CE 4.2 | Standard Shell | CEPC |
| | | | | Thin Client | CEPC |
| | | | Windows Mobile 2003 | Pocket PC | CEPC |
| | | | | Smart Phone | CEPC |
| | | 4.21 | Windows Mobile 2003 SE | Pocket PC | CEPC |
| | | | | Smart Phone | CEPC |
| | 5.x | 5.00 | Windows CE 5.0 | Standard Shell | CEPC |
| | | | | IP Phone | CEPC |
| | | | | Thin Client | CEPC |
| | | | Networked Media Device 5.0 | ----- | CEPC |
| | | 5.10 | Windows Mobile 5.0 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| Windows <br>CE Famliy | | | Windows Mobile 5.2 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| | | 5.20 | Windows Mobile 6.0 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| | | | Windows Mobile 6.0.2 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| | | | Windows Mobile 6.1 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| | | | Windows Mobile 6.1.4 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| | | | Windows Mobile 6.5 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| | | | Windows Mobile 6.5.3 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| | 6.x | 6.00 | Windows CE 6.0<br>(RTM&R2&R3) | Standard Shell | CEPC |
| | | | | IP Phone | CEPC |
| | | | | Thin Client | CEPC |
| | | | | NMD UI(5.0) | CEPC |
| | 7.x | 7.00 | Windows Embedded <br>Compact 7.0 | Standard Shell | CEPC |
| | | | | Thin Client | CEPC |
| | | | | Silverlight ThemeA | CEPC |
| | | | | Silverlight ThemeB | CEPC |
| | | | | Silverlight ThemeC | CEPC |
| | | | | Silverlight ThemeD | CEPC |
| | | | Automotive Embedded 7 | ----- | CEPC |
| | | | Windows Phone 7 | ----- | XDE 1.0 |
| | | | Windows Phone 7 NoDo | ----- | XDE 1.0 |
| | | 7.10 | Windows Phone 7.5 | ----- | XDE "1.2" |
| | | | Windows Phone 7.5 Refresh | ----- | XDE "1.2" |
| | | | Windows Phone 7.8 | ----- | XDE "1.2" |
| | 8.x | 8.00 | Windows Embedded <br>Compact 2013 | Mini Shell | CEPC |
| | | | | Silverlight ThemeA | CEPC |
| | | | | Silverlight ThemeB | CEPC |
| | | | | Silverlight ThemeC | CEPC |
| | | | | Silverlight ThemeD | CEPC |
# 关于
## 开发团队 / 贡献者
<div class="center" >
<table>
<td>
主开发者<br />
- <a href="https://www.351workshop.top/">351 - 351Workshop@Bilibili</a><br />
赞助<br />
- <a href="https://space.bilibili.com/432808178">IBM_Official@Bilibili</a><br />
- <a href="https://www.zhihu.com/people/peng-an-dr-quest/posts">蓬岸@知乎</a><br />
</td>
<td>
镜像 / 开发工具提供<br />
- <a href="https://space.bilibili.com/432808178">IBM_Official@Bilibili</a><br />
- <a href="https://www.zhihu.com/people/peng-an-dr-quest/posts">蓬岸@知乎</a><br />
- <a href="https://alexisgaming95.neocities.org/">lucss21a@Discord</a><br />
美工<br />
- <a href="https://space.bilibili.com/1756824708">WinPad - とある科学の手机副屏@Bilibili</a><br />
</td>
<td>
协助开发<br />
- <a href="https://space.bilibili.com/648710692">Inter - -INTER_INIT-@Bilibili</a><br />
- <a href="https://space.bilibili.com/437201853">Zesa - Zesa_IO1i0lO@Bilibili</a><br />
- <a href="https://space.bilibili.com/410046866">不务正业的金苹果@Bilibili</a><br />
- <a href="https://space.bilibili.com/2057331843">DZY20070614@Bilibili</a><br />
</td>
</table>
</div>
<p align="center">
开发团队 ONEW Studio QQ 群981893945 —— 欢迎加入!
</p>
## 特别感谢
- ONEW Studio<br />
- <a href="http://panretro.com">厦门市远东在线技术研究院</a><br />
- <a href="https://www.compumuseum.com/">网页里的电脑博物馆</a><br />
## 使用到的其他开源项目
- DOS-LOGO: http://retro.timb.us/Documents/Software/DOS-LOGO.html
- Whitebox: https://github.com/WindowsNT351/Whitebox
# ⚒️ SDK及其他相关工具下载
### Windows CE 1.x
#### Windows CE 1.0x
[Microsoft Visual C++ For Windows CE Version 1.0](https://archive.org/details/msvcceu.100)<br />
<br />
ARM Emulator:<br />
√ Windows Mobile 5.0 PPC<br />
√ Windows Mobile 5.0 SP<br />
√ Windows Mobile 6.0 PPC<br />
√ Windows Mobile 6.0 SP<br />
√ Windows Mobile 6.1 PPC<br />
√ Windows Mobile 6.1 SP<br />
√ Windows Mobile 6.5 PPC<br />
√ Windows Mobile 6.5 SP<br />
### Windows CE 2.x
#### Windows CE 2.00
Microsoft Windows CE Embedded Toolkit<br />
[Microsoft Handheld PC 2.0 Platform SDK](https://archive.org/details/wincesdk)<br />
#### Windows CE 2.01
Microsoft Palm-size PC 1.0 Platform SDK: [Programming Windows CE Disc](https://archive.org/details/mspress_programmingwindowsce_0970002166)<br />
Microsoft Auto PC 1.0 Platform SDK: [Windows CE Developers Conference DevCon 99 Conference CD](https://archive.org/details/windowscedevcon99conferencecd)<br />
#### Windows CE 2.10
[Microsoft Windows CE 2.10 Enhancement Pack for Windows CE Embedded Toolkit](https://www.betaarchive.com/database/view_release.php?uuid=0bef77bc-078b-468d-9ed0-18c51508948d)<br />
#### Windows CE 2.11
[Microsoft Windows CE 2.11 Platform Builder](https://archive.org/details/MicrosoftWindowsCEPlatformBuilder2.11Disc1.iso.7z)<br />
[Microsoft Palm-size PC 1.1 Platform SDK](https://web.archive.org/web/20051218093617/http://download.microsoft.com/download/wincepalm/pdasdk/1.1/WCE/CN/PPC_SDK(CHS).zip)<br />
Microsoft Palm-size PC 1.2 Platform SDK: [Windows CE Developers Conference DevCon 99 Conference CD](https://archive.org/details/windowscedevcon99conferencecd)<br />
Microsoft Handheld PC 3.0(HPC Pro) Platform SDK: [Windows CE Developers Conference DevCon 99 Conference CD](https://archive.org/details/windowscedevcon99conferencecd)<br />
#### Windows CE 2.12
[Microsoft Windows CE 2.12 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=e73feaeb-c4dc-4915-9b16-1692c269d3b5)<br />
<br />
Shell Emulator:<br />
√ Windows CE 1.0 Beta 2<br />
√ Windows CE 1.0 Beta 3<br />
√ Windows CE 1.0 RTM<br />
√ Windows CE 2.00<br />
√ Windows CE 2.11 Palm<br />
√ Windows CE HPC 3<br />
√ Windows PPC 2000<br />
### Windows CE 3.x
#### Windows CE 3.00
[Microsoft Windows CE 3.0 Platform Builder(Part 1)](https://archive.org/details/ms-wince-pb30)<br />
[Microsoft Windows CE 3.0 Platform Builder(Part 2)](https://archive.org/details/ms-wince-pb30_5-11)<br />
[Microsoft Pocket PC 2000(Palm-size PC 3.0) Platform SDK(Backup)](https://pan.baidu.com/s/14ykCvhJfTmiYzloPs6ApRg) 提取码6zjx<br />
[Microsoft Handheld PC 2000 SDK](https://archive.org/details/hpc2ksdkusa)<br />
[Microsoft Smart Phone 2002 SDK](https://archive.org/download/windows-mobile-sdks-2023/smartphone_2002_sdk.exe)<br />
[Microsoft Pocket PC 2002 SDK](https://archive.org/download/windows-mobile-sdks-2023/ppc2002_sdk.exe)<br />
<br />
### Windows CE 4.x
#### Windows CE 4.00
[Microsoft Windows CE.net 4.0 Platform Builder Emulation Edition(Backup)](https://www.123pan.com/s/KDyhTd-zTPN3) 提取码:eGCt<br />
[Microsoft Windows CE.net 4.0 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=51000b20-9a15-4403-8b56-c3759aa682b7)<br />
#### Windows CE 4.10
[Microsoft Windows CE.net 4.1 Platform Builder Emulation Edition](https://archive.org/details/winceemul41)<br />
[Microsoft Windows CE.net 4.1 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=fc6d66f5-e047-4303-9f0e-82e7f1de6645)<br />
#### Windows CE 4.20
[Microsoft Windows CE.net 4.2 Platform Builder Emulation Edition](https://archive.org/details/winceemul42)<br />
[Microsoft Windows CE.net 4.2 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=2b657ca7-2b53-4aac-8b1e-446b5669fda9)<br />
[Microsoft Windows Mobile 2003 SDK](https://archive.org/download/WMSDK/Microsoft%20Pocket%20PC%202003%20SDK.msi)<br />
#### Windows CE 4.21
[Microsoft Windows Mobile 2003 SE Images](https://archive.org/download/WMSDK/WM2003SEimages.msi)<br />
<br />
### Windows CE 5.x
#### Windows CE 5.00
[Microsoft Windows CE.net 5.0 Platform Builder](https://archive.org/details/en_win_ce_net_cd1)<br />
[Microsoft Windows CE.net 5.0 Networked Media Device Feature Pack](https://www.hpcfactor.com/downloads/2011/Windows_CE_5.0_Networked_Media_Device_Feature_Pack/version_1.0)<br />
#### Windows CE 5.10
[Microsoft Windows Mobile 5.0 SDK](https://archive.org/download/WMSDK/Windows%20Mobile%205.0%20Pocket%20PC%20SDK.msi)<br />
[Microsoft Windows Mobile 5.2 Images](https://web.archive.org/web/20130219020835/http://download.microsoft.com/download/c/b/b/cbb8bc58-07b9-46bb-86ba-d12bb0d9b1d9/efp.msi)<br />
#### Windows CE 5.20
[Microsoft Windows Mobile 6 Professional SDK](https://web.archive.org/web/20200108141243*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Professional%20SDK.msi)<br />
[Microsoft Windows Mobile 6 Standard SDK](https://web.archive.org/web/20200108142416*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Standard%20SDK.msi)<br />
[Microsoft Windows Mobile 6.0.2 Professional SDK](https://web.archive.org/web/20231105012934*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Professional%20SDK%20Refresh.msi)<br />
[Microsoft Windows Mobile 6.0.2 Standard SDK](https://web.archive.org/web/20220707014038*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Standard%20SDK%20Refresh.msi)<br />
[Microsoft Windows Mobile 6.1 Standard Images](https://web.archive.org/web/20130330025109/http://download.microsoft.com/download/d/c/7/dc73c8e7-f9c3-49de-821f-5588eeefcac4/Windows%20Mobile%206.1%20Standard%20Images%20(USA).msi)<br />
[Microsoft Windows Mobile 6.1 Professional Images](https://web.archive.org/web/20130330025531/http://download.microsoft.com/download/d/c/7/dc73c8e7-f9c3-49de-821f-5588eeefcac4/Windows%20Mobile%206.1%20Professional%20Images%20(USA).msi)<br />
[Microsoft Windows Mobile 6.1.4 Professional Images](https://archive.org/download/WMSDK/Windows%20Mobile%206.1.4%20Professional%20Images%20%28USA%29.msi)<br />
[Microsoft Windows Mobile 6.1.4 Standard Images](https://archive.org/download/WMSDK/Windows%20Mobile%206.1.4%20Standard%20Images%20%28USA%29.msi)<br />
[Microsoft Windows Mobile 6.5 Professional DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5%20Professional%20Developer%20Tool%20Kit%20%28USA%29.msi)<br />
[Microsoft Windows Mobile 6.5 Standard DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5%20Standard%20Developer%20Tool%20Kit%20%28USA%29.msi)<br />
[Microsoft Windows Mobile 6.5.3 Professional DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5.3%20Professional%20DTK.msi)<br />
[Microsoft Windows Mobile 6.5.3 Standard DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5.3%20Standard%20DTK.msi)<br />
<br />
### Windows CE 6.x
#### Windows CE 6.00
[Microsoft Windows Embedded CE 6.0 Platform Builder](https://archive.org/details/en_windows_embedded_ce_6.0_dvd)<br />
[Microsoft Windows Embedded CE 6.0 Platform Builder R2](https://archive.org/details/windows-embedded-ce-6.0-r2)<br />
[Microsoft Windows Embedded CE 6.0 Platform Builder R3](https://archive.org/details/en_windows_embedded_ce_6.0_r3_dvd__x16-28730)<br />
<br />
### Windows CE 7.x
#### Windows CE 7.00
[Microsoft Windows Embedded Compact 7.0 Platform Builder](https://archive.org/details/WindowsEmbeddedCompact7)<br />
[Microsoft Windows Embedded Automotive 7.0 Platform Builder](https://archive.org/details/windows-embedded-automotive-7)<br />
[Microsoft Windows Phone 7 SDK](https://archive.org/download/wpdt-rtm-en-1/WPDT_RTM_en1.iso)<br />
#### Windows CE 7.10
[Microsoft Windows Phone 7.1 SDK](https://archive.org/download/wpsdkv-71-en-1_202303/WPSDKv71_en1.iso)<br />
<br />
### Windows CE 8.x
#### Windows CE 8.00
[Microsoft Windows Embedded Compact 2013 Platform Builder](https://archive.org/details/en_windows_embedded_compact_2013_x86_x64_dvd_2247108)
## 🤝友情链接
[WinPad的CEShellCollection](https://github.com/WinPad1993/Windows_CE_Win32_Shell_Emulator_Collection_in_a_WindowsPE)<br />
👆点击戳一下WinPad<br />
[Inter的PenPointOS模拟器](https://github.com/Inter1006/PenPointOS_Vbox/tree/main)<br />
👆点击戳一下Inter<br />
<br /><br /><br /><br />
Copyright 351Workshop 2022-2025

333
README_EN.md Normal file
View File

@ -0,0 +1,333 @@
<div align="center">
<img alt="LOGO" src="./WNT/menu3.exe/res/about.bmp" /><br />
<h1>CE Collections -2.02-</h1>
<p>Not just a simple collection.</p>
</div>
---
# ✏️ What is CE Collections?
CE Collections gathers almost all the official images and emulators based on the CE kernel (such as Windows CE Core Windows Mobile and Windows Phone).
The image includes:
- x86Bin images booted via Loadcepc.
- ArmBin images booted via DeviceEmulator.
- ArmBin images booted via XDE Emulator.
The emulator includes:
- <a href="https://github.com/WindowsNT351/Whitebox">Whitebox</a> Emulator compatible with Windows 7 - 11.
- Arm DeviceEmulator Emulator compatible with Windows XP - 11.
- XDE Emulator Emulator compatible with Windows 7 - 8.1.
- Standalone Shell Emulator Emulator compatible with Windows NT(4.0 - 11, some of them don't support newer Windows).
# 📥 How to use?
## WinNT Platform Emulator usage
1. Boot the host OS(NT4.0 - Win11) before you Insert the disc.
2. Insert the disc and wait the Menu pop out, if not, please run [CD(DVD)ROM]:\WNT\Menu3.exe.
3. Select the OS(emulator) you want to start up. Please notice that there is some diffrent limitations when you're using diffrent host OS.
- for Windows NT 4.0, you can use emulators based on Shell Emulator, this is the best host OS to use Shell Emulator.
- for Windows 2000 - XP, you can use emulators based on Shell Emulator(except Auto PC 1.0 on x64 OS) and ARM Device Emulator.
- for Windows 7 - 8.1, you can use emulator based on Shell Emulator(except Pocket PC 2000, and Auto PC 1.0 on x64 OS) ARM Device Emulator XDE Emulator and Whitebox Emulator.
- for Windows 10 - 11, you can use emulator based on Shell Emulator(except Pocket PC 2000, and Auto PC 1.0 on x64 OS) ARM Device Emulator and Whitebox Emulator.
4. Done! Enjoy your Windows CE.
<img src="./menuwnt.png" width="900px;" alt=""/>
## CEPC Platform Emulator usage
**Attention! CEPC Platform cannot boot all the images!**
0. Make sure you have more than 64MB memory, lower than 64MB may cause the image can't be loaded into the memory. We suggest to use 128MB memory to use CEPC.
1. Insert the disc(or boot floppy) and boot from it.
2. Select the OS you want to boot, the [Next Page] and the [Previous Page] are in the bottom right and bottom left corner.Please notice that there is some limitations when you're booting 2.0-2.10 images.
- for PCem VMware VBox Qemu modern real machine or other modern VMs, these image won't boot properly.
- for 86Box, please use WinChip CPU without Dynamic Recompiler.
- for old real machine, please use 486 or Pentium(586) CPU.
<img src="./menudos.png" width="800px;" alt=""/>
3. Select the resolution you want. Please notice that there is some limitations when you're booting 2.0-3.0 images which using VGA8BPP display driver.
- for VMware VBox Qemu or other modern VMs, you can only use the Low Resolution mode.
- for 86Box PCem or real machine, please use S3 video card(particular S3Trio64 for WinCE2.0 or S3Virge for higher version) as much as possible to use the High Resolution, if not, you can only use the Low Resolution.
<img src="./menudos2.png" width="800px;" alt=""/>
<img src="./menudos3.png" width="800px;" alt=""/>
4. Done! Enjoy your Windows CE.
# 🔧 How does CE-Collections works?
## WinNT Platform
1. Insert the disc, Autorun will start [CD(DVD)ROM]:\WNT\Menu3.exe.
2. Menu3.exe load and display [CD(DVD)ROM]:\WNT\menu.enus configuration file, and load [CD(DVD)ROM]:\CECV20.D0 version config file.
3. Choose the emulator / image you want to boot(start).
- Shell Emulator Family
1. Run shellmgr [Type of emulator] [Path to emulator] [Main executable file path].
2. Shellmgr copy the whole emulator files into TEMP(User or System) folder。
3. Shellmgr check does the host OS is the required OS.
4. Shellmgr doing preparation works.
- for WinCE 1.0: Set the required environment variable.
- for HPC/PPC 2.x: Replace the path to emulator in the REG file, Merge the REG file.
- for PPC 2000: Replace the path to emulator in the REG file, Merge the REG file.(diffrent file structure)
- for APC 1.0Replace the path to emulator in the REG file, Merge the REG file, load WCEFS.sys driver. If the host is vista or higher, kill ApcHook.sys driver(if doen't do that will cause BSOD)。
5. Shellmgr start the main executable file.
6. Shellmgr wait for the main progrom closed.
7. Shellmgr unload the driver and delete the TEMP files.
- ARM DeviceEmulator Fmaily
1. Run DeviceEmulator /video [resolution] /memsize 256
- CEPC WhiteboxEmulator Family
1. Run Whitebox [resolution, see CEPC. But much more detailed for each image here] /M:[86Box config file] [NK.bin]
- XDE Emulator Family
1. Run xdemgr [XDE Version] [NK.bin]。
2. Xdemgr check does the host OS is the required OS。
3. Xdemgr copy VMM.sys(if host OS is x86) or VMM64.sys(if host OS is AMD64) of XDE Emulator to TEMP folder and load it.
4. Xdemgr copy the config file of XDE Emulator into TEMP folder.
5. Xdemgr start XDE Emulator.
6. Xdemgr wait for the Emulator closed。
7. Xdemgr unload the driver and delete the TEMP files.
## CEPC Platform
1. Insert the disc / boot floppy disk, boot MS-DOS 7.1 from it。
2. Load LOGO.sys display startup logo. Load CD(DVD)ROM driver(IDE)。
3. Detect is D: drive a CE-Collections disc, if not, find the disc ergodic。
4. Start [CD(DVD)ROM]:\DOS\Menu.bat, Load [CD(DVD)ROM]:\CECV20.D0 version config file.
5. Choose the image to load.
6. Auto detect which type is the image(2.0-2.10/2.11-2.12 HPC2000/3.0-2013/WinMobile)。
- 2.0-2.10
1. Display the Warning Dialog.
2. Run Loadcepc /D:3 [NK.bin]
- 2.11-2.12 HPC2000
1. Display the Resolution Choosing Dialog.
2. High Resolution use Loadcepc /D:3 [NK.bin]
Low Resolution use Loadcepc /D:0 [NK.bin] (this resolution almost unusable)
- 3.0-2013
1. Display the Confirm Dialog.
2. Run Loadcepc /L:800x600x16 [NK.bin]
- WinMobile
1. Display the Resolution Choosing Dialog.
2. Fixed Resolution use Loadcepc /L:175x240x16 [NK.bin]
Original Resolution use Loadcepc /L:320x400x16 [NK.bin]
### What is Loadcepc?
Loadcepc is Bootloader for Windows CE x86 images, it will load the NK.bin into memory, set the resolution, and jump to the boot address.
DOS is just a springboard for CE, after CE booted, the interrupt of DOS won't work after that, x86CE does't based on DOS.
# ❓ QA
Q: I cannot boot the disc in 86Box or PCem.
A: Please use 7Zip or another compression tool to open the ISO file, extract the img file from the [boot] folder, and then boot from a floppy disk.
Q: In the CEPC bootloader, after selecting a system, it shows “Error image section doesn't fit in allocated block”.
A: The memory might be set too low; please increase the memory allocation.
Q: After booting Windows EC 2013, the screen is black.
A: The memory might be set too low; please increase the memory allocation.
Q: Why there is no any activities after I choose a version in WinNT Menu?
A: The emulator may display behind the Menu, or the host OS is not the required OS for the emulator.
Q: My physical Windows CE/Mobile device doesnt boot, can you help solve this? / Can you install this WinCE software for me?
A: Well, I can't answer that.
Q: Can you integrate other Windows OS?
A: Just look at the project name the answer is self-evident.
# 🔨 CE Images and Emulators Integrated in this Project
| | | | CE-Collections Supporting | | |
|---------------------------|---------|--------------|-----------------------------------|----------------------|----------------------|
| | Version | Core Version | Name | Shell | Emulator |
| | 1.x | 1.00 | Windows CE 1.00 | ----- | Shell Emulator |
| | | 1.01 | Windows CE 1.01 | ----- | Shell Emulator |
| | 2.x | 2.00 | Windows CE 2.0(or 2.01?) | ----- | CEPC |
| | | | Handheld PC 2.0 | ----- | Shell Emulator |
| | | 2.01 | Auto PC 1.0 | ----- | Shell Emulator |
| | | | Palm-size PC 1.0 | ----- | Shell Emulator |
| | | 2.10 | Windows CE 2.10 | ----- | CEPC |
| | | 2.11 | Windows CE 2.11 | ----- | CEPC |
| | | | Palm-size PC 1.1<br>(Simplified Chinese) | ----- | Shell Emulator |
| | | | Palm-size PC 1.2 | ----- | Shell Emulator |
| | | | Handheld PC 3.0 | ----- | Shell Emulator |
| | | 2.12 | Windows CE 2.12 | ----- | CEPC |
| | 3.x | 3.00 | Windows CE 3.0 | ----- | CEPC |
| | | | Pocket PC 2000 | ----- | Shell Emulator |
| | | | Handheld PC 2000 | ----- | CEPC |
| | | | Windows Mobile 2002 | Pocket PC | CEPC |
| | | | | Smart Phone | CEPC |
| | 4.x | 4.00 | Windows CE 4.0 | Standard Shell | CEPC |
| | | | | Thin Client | CEPC |
| | | 4.10 | Windows CE 4.1 | Standard Shell | CEPC |
| | | | | Thin Client | CEPC |
| | | 4.20 | Windows CE 4.2 | Standard Shell | CEPC |
| | | | | Thin Client | CEPC |
| | | | Windows Mobile 2003 | Pocket PC | CEPC |
| | | | | Smart Phone | CEPC |
| | | 4.21 | Windows Mobile 2003 SE | Pocket PC | CEPC |
| | | | | Smart Phone | CEPC |
| | 5.x | 5.00 | Windows CE 5.0 | Standard Shell | CEPC |
| | | | | IP Phone | CEPC |
| | | | | Thin Client | CEPC |
| | | | Networked Media Device 5.0 | ----- | CEPC |
| | | 5.10 | Windows Mobile 5.0 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| Windows <br>CE Famliy | | | Windows Mobile 5.2 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| | | 5.20 | Windows Mobile 6.0 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| | | | Windows Mobile 6.0.2 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| | | | Windows Mobile 6.1 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| | | | Windows Mobile 6.1.4 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| | | | Windows Mobile 6.5 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| | | | Windows Mobile 6.5.3 | Pocket PC | Device Emulator |
| | | | | Smart Phone | Device Emulator |
| | 6.x | 6.00 | Windows CE 6.0<br>(RTM&R2&R3) | Standard Shell | CEPC |
| | | | | IP Phone | CEPC |
| | | | | Thin Client | CEPC |
| | | | | NMD UI(5.0) | CEPC |
| | 7.x | 7.00 | Windows Embedded <br>Compact 7.0 | Standard Shell | CEPC |
| | | | | Thin Client | CEPC |
| | | | | Silverlight ThemeA | CEPC |
| | | | | Silverlight ThemeB | CEPC |
| | | | | Silverlight ThemeC | CEPC |
| | | | | Silverlight ThemeD | CEPC |
| | | | Automotive Embedded 7 | ----- | CEPC |
| | | | Windows Phone 7 | ----- | XDE 1.0 |
| | | | Windows Phone 7 NoDo | ----- | XDE 1.0 |
| | | 7.10 | Windows Phone 7.5 | ----- | XDE "1.2" |
| | | | Windows Phone 7.5 Refresh | ----- | XDE "1.2" |
| | | | Windows Phone 7.8 | ----- | XDE "1.2" |
| | 8.x | 8.00 | Windows Embedded <br>Compact 2013 | Mini Shell | CEPC |
| | | | | Silverlight ThemeA | CEPC |
| | | | | Silverlight ThemeB | CEPC |
| | | | | Silverlight ThemeC | CEPC |
| | | | | Silverlight ThemeD | CEPC |
# About
## Develoment Team / Contributor
<div class="center" >
<table>
<td>
Developer<br />
- <a href="https://www.351workshop.top/">351 - 351Workshop@Bilibili</a><br />
Sponsor<br />
- <a href="https://space.bilibili.com/432808178">IBM_Official@Bilibili</a><br />
- <a href="https://www.zhihu.com/people/peng-an-dr-quest/posts">蓬岸@知乎</a><br />
</td>
<td>
Image / Develoment Tools Providing<br />
- <a href="https://space.bilibili.com/432808178">IBM_Official@Bilibili</a><br />
- <a href="https://www.zhihu.com/people/peng-an-dr-quest/posts">蓬岸@知乎</a><br />
- <a href="https://alexisgaming95.neocities.org/">lucss21a@Discord</a><br />
Artworks<br />
- <a href="https://space.bilibili.com/1756824708">WinPad - とある科学の手机副屏@Bilibili</a><br />
</td>
<td>
Development Helper<br />
- <a href="https://space.bilibili.com/648710692">Inter - -INTER_INIT-@Bilibili</a><br />
- <a href="https://space.bilibili.com/437201853">Zesa - Zesa_IO1i0lO@Bilibili</a><br />
- <a href="https://space.bilibili.com/410046866">不务正业的金苹果@Bilibili</a><br />
- <a href="https://space.bilibili.com/2057331843">DZY20070614@Bilibili</a><br />
</td>
</table>
</div>
## Thanks to
- ONEW Studio<br />
- <a href="http://panretro.com">Fareast Online Research</a><br />
- <a href="https://www.compumuseum.com/">Compumuseum</a><br />
## Other opensource project used in the project
- DOS-LOGO: http://retro.timb.us/Documents/Software/DOS-LOGO.html
- Whitebox: https://github.com/WindowsNT351/Whitebox
# ⚒️ SDK and other toolkits download
### Windows CE 1.x
#### Windows CE 1.0x
[Microsoft Visual C++ For Windows CE Version 1.0](https://archive.org/details/msvcceu.100)<br />
<br />
### Windows CE 2.x
#### Windows CE 2.00
Microsoft Windows CE Embedded Toolkit<br />
[Microsoft Handheld PC 2.0 Platform SDK](https://archive.org/details/wincesdk)<br />
#### Windows CE 2.01
Microsoft Palm-size PC 1.0 Platform SDK: [Programming Windows CE Disc](https://archive.org/details/mspress_programmingwindowsce_0970002166)<br />
Microsoft Auto PC 1.0 Platform SDK: [Windows CE Developers Conference DevCon 99 Conference CD](https://archive.org/details/windowscedevcon99conferencecd)<br />
#### Windows CE 2.10
[Microsoft Windows CE 2.10 Enhancement Pack for Windows CE Embedded Toolkit](https://www.betaarchive.com/database/view_release.php?uuid=0bef77bc-078b-468d-9ed0-18c51508948d)<br />
#### Windows CE 2.11
[Microsoft Windows CE 2.11 Platform Builder](https://archive.org/details/MicrosoftWindowsCEPlatformBuilder2.11Disc1.iso.7z)<br />
[Microsoft Palm-size PC 1.1 Platform SDK](https://web.archive.org/web/20051218093617/http://download.microsoft.com/download/wincepalm/pdasdk/1.1/WCE/CN/PPC_SDK(CHS).zip)<br />
Microsoft Palm-size PC 1.2 Platform SDK: [Windows CE Developers Conference DevCon 99 Conference CD](https://archive.org/details/windowscedevcon99conferencecd)<br />
Microsoft Handheld PC 3.0(HPC Pro) Platform SDK: [Windows CE Developers Conference DevCon 99 Conference CD](https://archive.org/details/windowscedevcon99conferencecd)<br />
#### Windows CE 2.12
[Microsoft Windows CE 2.12 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=e73feaeb-c4dc-4915-9b16-1692c269d3b5)<br />
<br />
### Windows CE 3.x
#### Windows CE 3.00
[Microsoft Windows CE 3.0 Platform Builder(Part 1)](https://archive.org/details/ms-wince-pb30)<br />
[Microsoft Windows CE 3.0 Platform Builder(Part 2)](https://archive.org/details/ms-wince-pb30_5-11)<br />
[Microsoft Pocket PC 2000(Palm-size PC 3.0) Platform SDK(Backup)](https://pan.baidu.com/s/14ykCvhJfTmiYzloPs6ApRg) Key 6zjx<br />
[Microsoft Handheld PC 2000 SDK](https://archive.org/details/hpc2ksdkusa)<br />
[Microsoft Smart Phone 2002 SDK](https://archive.org/download/windows-mobile-sdks-2023/smartphone_2002_sdk.exe)<br />
[Microsoft Pocket PC 2002 SDK](https://archive.org/download/windows-mobile-sdks-2023/ppc2002_sdk.exe)<br />
<br />
### Windows CE 4.x
#### Windows CE 4.00
[Microsoft Windows CE.net 4.0 Platform Builder Emulation Edition(Backup)](https://www.123pan.com/s/KDyhTd-zTPN3) Key eGCt<br />
[Microsoft Windows CE.net 4.0 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=51000b20-9a15-4403-8b56-c3759aa682b7)<br />
#### Windows CE 4.10
[Microsoft Windows CE.net 4.1 Platform Builder Emulation Edition](https://archive.org/details/winceemul41)<br />
[Microsoft Windows CE.net 4.1 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=fc6d66f5-e047-4303-9f0e-82e7f1de6645)<br />
#### Windows CE 4.20
[Microsoft Windows CE.net 4.2 Platform Builder Emulation Edition](https://archive.org/details/winceemul42)<br />
[Microsoft Windows CE.net 4.2 Platform Builder](https://www.betaarchive.com/database/view_release.php?uuid=2b657ca7-2b53-4aac-8b1e-446b5669fda9)<br />
[Microsoft Windows Mobile 2003 SDK](https://archive.org/download/WMSDK/Microsoft%20Pocket%20PC%202003%20SDK.msi)<br />
#### Windows CE 4.21
[Microsoft Windows Mobile 2003 SE Images](https://archive.org/download/WMSDK/WM2003SEimages.msi)<br />
<br />
### Windows CE 5.x
#### Windows CE 5.00
[Microsoft Windows CE.net 5.0 Platform Builder](https://archive.org/details/en_win_ce_net_cd1)<br />
[Microsoft Windows CE.net 5.0 Networked Media Device Feature Pack](https://www.hpcfactor.com/downloads/2011/Windows_CE_5.0_Networked_Media_Device_Feature_Pack/version_1.0)<br />
#### Windows CE 5.10
[Microsoft Windows Mobile 5.0 SDK](https://archive.org/download/WMSDK/Windows%20Mobile%205.0%20Pocket%20PC%20SDK.msi)<br />
[Microsoft Windows Mobile 5.2 Images](https://web.archive.org/web/20130219020835/http://download.microsoft.com/download/c/b/b/cbb8bc58-07b9-46bb-86ba-d12bb0d9b1d9/efp.msi)<br />
#### Windows CE 5.20
[Microsoft Windows Mobile 6 Professional SDK](https://web.archive.org/web/20200108141243*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Professional%20SDK.msi)<br />
[Microsoft Windows Mobile 6 Standard SDK](https://web.archive.org/web/20200108142416*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Standard%20SDK.msi)<br />
[Microsoft Windows Mobile 6.0.2 Professional SDK](https://web.archive.org/web/20231105012934*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Professional%20SDK%20Refresh.msi)<br />
[Microsoft Windows Mobile 6.0.2 Standard SDK](https://web.archive.org/web/20220707014038*/http://download.microsoft.com/download/f/2/3/f232f773-7edc-4300-be07-d3b76a5b3a91/Windows%20Mobile%206%20Standard%20SDK%20Refresh.msi)<br />
[Microsoft Windows Mobile 6.1 Standard Images](https://web.archive.org/web/20130330025109/http://download.microsoft.com/download/d/c/7/dc73c8e7-f9c3-49de-821f-5588eeefcac4/Windows%20Mobile%206.1%20Standard%20Images%20(USA).msi)<br />
[Microsoft Windows Mobile 6.1 Professional Images](https://web.archive.org/web/20130330025531/http://download.microsoft.com/download/d/c/7/dc73c8e7-f9c3-49de-821f-5588eeefcac4/Windows%20Mobile%206.1%20Professional%20Images%20(USA).msi)<br />
[Microsoft Windows Mobile 6.1.4 Professional Images](https://archive.org/download/WMSDK/Windows%20Mobile%206.1.4%20Professional%20Images%20%28USA%29.msi)<br />
[Microsoft Windows Mobile 6.1.4 Standard Images](https://archive.org/download/WMSDK/Windows%20Mobile%206.1.4%20Standard%20Images%20%28USA%29.msi)<br />
[Microsoft Windows Mobile 6.5 Professional DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5%20Professional%20Developer%20Tool%20Kit%20%28USA%29.msi)<br />
[Microsoft Windows Mobile 6.5 Standard DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5%20Standard%20Developer%20Tool%20Kit%20%28USA%29.msi)<br />
[Microsoft Windows Mobile 6.5.3 Professional DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5.3%20Professional%20DTK.msi)<br />
[Microsoft Windows Mobile 6.5.3 Standard DKT](https://archive.org/download/WMSDK/Windows%20Mobile%206.5.3%20Standard%20DTK.msi)<br />
<br />
### Windows CE 6.x
#### Windows CE 6.00
[Microsoft Windows Embedded CE 6.0 Platform Builder](https://archive.org/details/en_windows_embedded_ce_6.0_dvd)<br />
[Microsoft Windows Embedded CE 6.0 Platform Builder R2](https://archive.org/details/windows-embedded-ce-6.0-r2)<br />
[Microsoft Windows Embedded CE 6.0 Platform Builder R3](https://archive.org/details/en_windows_embedded_ce_6.0_r3_dvd__x16-28730)<br />
<br />
### Windows CE 7.x
#### Windows CE 7.00
[Microsoft Windows Embedded Compact 7.0 Platform Builder](https://archive.org/details/WindowsEmbeddedCompact7)<br />
[Microsoft Windows Embedded Automotive 7.0 Platform Builder](https://archive.org/details/windows-embedded-automotive-7)<br />
[Microsoft Windows Phone 7 SDK](https://archive.org/download/wpdt-rtm-en-1/WPDT_RTM_en1.iso)<br />
#### Windows CE 7.10
[Microsoft Windows Phone 7.1 SDK](https://archive.org/download/wpsdkv-71-en-1_202303/WPSDKv71_en1.iso)<br />
<br />
### Windows CE 8.x
#### Windows CE 8.00
[Microsoft Windows Embedded Compact 2013 Platform Builder](https://archive.org/details/en_windows_embedded_compact_2013_x86_x64_dvd_2247108)
<br /><br /><br /><br />
Copyright 351Workshop 2022-2025

BIN
TimeLine.xlsx Normal file

Binary file not shown.

21
WNT/hiderun.exe/main.cpp Normal file
View File

@ -0,0 +1,21 @@
#include <stdlib.h>
#include <stdio.h>
#include <afxwin.h>
#include <iostream>
using namespace std;
#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )
int main(int argc, char **argv)
{
if(argc<=1)
return 1;
char batBuffer[120] = { 0 };
for (int i = 0; i < argc - 2; i++)
{
strcat_s(batBuffer, argv[i + 2]);
strcat_s(batBuffer, " ");
}
cout << batBuffer << endl;
ShellExecute(NULL, "open", argv[1], batBuffer, NULL, SW_HIDE);
return 0;
}

View File

@ -1 +0,0 @@
Build2553 - 5RC2

View File

@ -1,104 +0,0 @@
// DigHelp.cpp: 实现文件
//
#include "pch.h"
#include "menu2.h"
#include "DigHelp.h"
#include "afxdialogex.h"
// DigHelp 对话框
IMPLEMENT_DYNAMIC(DigHelp, CDialogEx)
DigHelp::DigHelp(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_DIALOG1, pParent)
{
}
DigHelp::~DigHelp()
{
}
void DigHelp::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_STATIC1, m_text1);
}
BEGIN_MESSAGE_MAP(DigHelp, CDialogEx)
ON_BN_CLICKED(IDOK, &DigHelp::OnBnClickedOk)
ON_BN_CLICKED(IDCANCEL, &DigHelp::OnBnClickedCancel)
ON_BN_CLICKED(IDC_BUTTON1, &DigHelp::OnBnClickedButton1)
END_MESSAGE_MAP()
// DigHelp 消息处理程序
void DigHelp::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
CDialogEx::OnOK();
}
void DigHelp::OnBnClickedCancel()
{
// TODO: 在此添加控件通知处理程序代码
CDialogEx::OnCancel();
}
int beforeNum = 0;
TCHAR lpPath_[255] = { 0 };
void DigHelp::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
int maxInfo = GetPrivateProfileInt(L"sug", L"maxInfo", -1, lpPath_);
TCHAR currentInfo[255] = { 0 };
srand(time(0));
int curNum = 0;
do {
curNum = rand() % maxInfo; // 生成随机数
} while (curNum==beforeNum);
beforeNum = curNum;
TCHAR currentID[255] = { 0 };
wsprintf(currentID, L"%d", curNum);
GetPrivateProfileString(L"sug", currentID, NULL, currentInfo, 255, lpPath_);
m_text1.SetWindowText(currentInfo);
}
BOOL DigHelp::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: 在此添加额外的初始化
ShowWindow(SW_NORMAL);
CRect rtDesk;
CRect rtDlg;
::GetWindowRect(::GetDesktopWindow(), &rtDesk);
GetWindowRect(&rtDlg);
int iXpos = rtDesk.Width() / 2 - rtDlg.Width() / 2;
int iYpos = rtDesk.Height() / 2 - rtDlg.Height() / 2;
SetWindowPos(NULL, iXpos, iYpos, 0, 0, SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
GetCurrentDirectory(MAX_PATH, lpPath_);
wsprintf(lpPath_, L"%s\\menu.enus", lpPath_);
int maxInfo = GetPrivateProfileInt(L"sug", L"maxInfo", -1, lpPath_);
TCHAR currentInfo[255] = { 0 };
srand(time(0));
int randomNum = rand()%maxInfo; // 生成随机数
beforeNum = randomNum;
TCHAR currentID[255] = { 0 };
wsprintf(currentID, L"%d", randomNum);
GetPrivateProfileString(L"sug", currentID, NULL, currentInfo, 255, lpPath_);
m_text1.SetWindowText(currentInfo);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}

View File

@ -1,29 +0,0 @@
#pragma once
// DigHelp 对话框
class DigHelp : public CDialogEx
{
DECLARE_DYNAMIC(DigHelp)
public:
DigHelp(CWnd* pParent = nullptr); // 标准构造函数
virtual ~DigHelp();
// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_DIALOG1 };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedOk();
afx_msg void OnBnClickedCancel();
afx_msg void OnBnClickedButton1();
virtual BOOL OnInitDialog();
CStatic m_text1;
};

Binary file not shown.

Binary file not shown.

View File

@ -1,22 +0,0 @@
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.pch
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\vc141.pdb
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\pch.obj
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2dlg.obj
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.obj
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\dighelp.obj
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\about.obj
c:\users\351\documents\visual studio 2017\projects\cec20\release\menu2.exe
c:\users\351\documents\visual studio 2017\projects\cec20\release\menu2.pdb
c:\users\351\documents\visual studio 2017\projects\cec20\release\menu2.ipdb
c:\users\351\documents\visual studio 2017\projects\cec20\release\menu2.iobj
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.res
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\cl.command.1.tlog
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\cl.read.1.tlog
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\cl.write.1.tlog
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\link.command.1.tlog
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\link.read.1.tlog
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\link.write.1.tlog
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\menu2.write.1u.tlog
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\rc.command.1.tlog
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\rc.read.1.tlog
c:\users\351\documents\visual studio 2017\projects\cec20\menu2\release\menu2.tlog\rc.write.1.tlog

View File

@ -1,7 +0,0 @@
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Platforms\Win32\PlatformToolsets\v141_xp\Toolset.targets(39,5): warning MSB8051: 面向 Windows XP 的支持已被弃用,将来的 Visual Studio 版本不再提供该支持。请访问 https://go.microsoft.com/fwlink/?linkid=2023588获取详细信息。
正在生成代码
0 of 263 functions ( 0.0%) were compiled, the rest were copied from previous compilation.
0 functions were new in current compilation
0 functions had inline decision re-evaluated but remain unchanged
已完成代码的生成
menu2.vcxproj -> C:\Users\351\Documents\Visual Studio 2017\Projects\cec20\Release\menu2.exe

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,2 +0,0 @@
#TargetFrameworkVersion=v4.0:PlatformToolSet=v141_xp:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit:WindowsTargetPlatformVersion=7.0
Release|Win32|C:\Users\351\Documents\Visual Studio 2017\Projects\cec20\|

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,112 +0,0 @@
// about.cpp: 实现文件
//
#include "pch.h"
#include "menu2.h"
#include "about.h"
#include "afxdialogex.h"
// about 对话框
IMPLEMENT_DYNAMIC(about, CDialogEx)
about::about(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_ABOUT_DIALOG, pParent)
{
}
about::~about()
{
}
void about::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_STATICVER, m_textver);
DDX_Control(pDX, IDC_EDIT1, m_edit1);
}
BEGIN_MESSAGE_MAP(about, CDialogEx)
ON_BN_CLICKED(IDOK, &about::OnBnClickedOk)
END_MESSAGE_MAP()
// about 消息处理程序
void about::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
CDialogEx::OnOK();
}
TCHAR* AsciiToUnicode(char *str)
{
DWORD dwNum = 0;
dwNum = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
TCHAR* pwHostName = new TCHAR[dwNum];
MultiByteToWideChar(CP_ACP, 0, str, -1, pwHostName, dwNum);
return pwHostName;
}
TCHAR lpPath__[255] = { 0 };
BOOL about::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: 在此添加额外的初始化
ShowWindow(SW_NORMAL);
CRect rtDesk;
CRect rtDlg;
::GetWindowRect(::GetDesktopWindow(), &rtDesk);
GetWindowRect(&rtDlg);
int iXpos = rtDesk.Width() / 2 - rtDlg.Width() / 2;
int iYpos = rtDesk.Height() / 2 - rtDlg.Height() / 2;
SetWindowPos(NULL, iXpos, iYpos, 0, 0, SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER);
wsprintf(lpPath__, L"..\\CECD0.20");
HANDLE hFile = CreateFile(
lpPath__, // 文件名
GENERIC_READ, // 读权限
0, // 不共享
NULL, // 安全属性
OPEN_EXISTING, // 打开已存在的文件
FILE_ATTRIBUTE_NORMAL, // 文件属性
NULL // 模板文件的句柄
);
if (hFile == INVALID_HANDLE_VALUE) {
MessageBox(L"ERROR");
return 1;
}
// 确定文件大小
DWORD dwFileSize = GetFileSize(hFile, NULL);
// 分配内存读取文件
char buffer[255] = { 0 };
DWORD dwRead = 0;
// 读取文件内容
if (ReadFile(hFile, buffer, dwFileSize, &dwRead, NULL)) {
buffer[dwFileSize] = '\0'; // 添加字符串终止符
}
// 关闭文件句柄
CloseHandle(hFile);
m_textver.SetWindowText(AsciiToUnicode(buffer));
m_edit1.SetWindowText( L"Name Bilibili ID\r\n"
"351 351Workshop\r\n"
"Inter -INTER_INIT-\r\n"
"WinPad とある科学の手机副屏\r\n"
"GoldApple 不务正业的金苹果\r\n"
"DZY DZY20070614\r\n"
"Zesa LinuxMEMZ\r\n"
"XJBLMNP(?");
//HWND hWndEdit1 = m_edit1.GetSafeHwnd();
//::SendMessage(hWndEdit1, EM_LINESCROLL, 0, 3);
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}

View File

@ -1,29 +0,0 @@
#pragma once
// about 对话框
class about : public CDialogEx
{
DECLARE_DYNAMIC(about)
public:
about(CWnd* pParent = nullptr); // 标准构造函数
virtual ~about();
// 对话框数据
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_ABOUT_DIALOG };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnBnClickedOk();
virtual BOOL OnInitDialog();
CStatic m_textver;
afx_msg void OnStnClicked65535();
CEdit m_edit1;
};

View File

@ -1,133 +0,0 @@
// Win9x:
//
// The CRT now uses several "W" versions of functions which is more practial to require
// the use of the Microsoft Layer for Unicode (MSLU) for Windows 9x to implement it. The
// unicows.dll (for 9x) should be placed in the program folder with the .exe if using it.
// unicows.dll is only loaded on 9x platforms. The way Win9x works without the MSLU is
// that several "W" version of functions are located in kernel32.dll but they are just a
// stub that returns failure code. To implement the unicode layer (unicows) the unicode.lib
// must be linked prior to the other libs that should then linked in after unicode.lib.
// The libraries are:
//
// kernel32.lib advapi32.lib user32.lib gdi32.lib shell32.lib comdlg32.lib
// version.lib mpr.lib rasapi32.lib winmm.lib winspool.lib vfw32.lib
// secur32.lib oleacc.lib oledlg.lib sensapi.lib
//
#include <windows.h>
// pull items from ntdef.h
#define NT_SUCCESS(Status) (((NTSTATUS)(Status)) >= 0)
typedef _Return_type_success_(return >= 0) LONG NTSTATUS;
//
// implementation of replacement function for GetModuleHandleExW
//
extern "C" BOOL WINAPI ImplementGetModuleHandleExW(DWORD dwFlags, LPCWSTR lpModuleName, HMODULE* phModule)
{
// check flag combinations
if (phModule == NULL ||
dwFlags & ~(GET_MODULE_HANDLE_EX_FLAG_PIN | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT | GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS) ||
((dwFlags & GET_MODULE_HANDLE_EX_FLAG_PIN) && (dwFlags & GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT)) ||
(lpModuleName == NULL && (dwFlags & GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS))) {
SetLastError(ERROR_INVALID_PARAMETER);
return FALSE;
}
// check if to get by address
if (dwFlags & GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS) {
*phModule = NULL;
typedef PVOID(NTAPI *LPFN_RtlPcToFileHeader)(PVOID PcValue, PVOID * BaseOfImage);
const HMODULE hmodkernel32 = GetModuleHandleW(L"kernel32");
const LPFN_RtlPcToFileHeader pfnRtlPcToFileHeader = reinterpret_cast<LPFN_RtlPcToFileHeader>(GetProcAddress(hmodkernel32, "RtlPcToFileHeader"));
if (pfnRtlPcToFileHeader) {
// use RTL function (nt4+)
pfnRtlPcToFileHeader((PVOID)lpModuleName, (PVOID*)phModule);
}
else {
// query memory directly (win9x)
MEMORY_BASIC_INFORMATION mbi;
if (VirtualQuery((PVOID)lpModuleName, &mbi, sizeof(mbi)) >= offsetof(MEMORY_BASIC_INFORMATION, AllocationProtect)) {
*phModule = reinterpret_cast<HMODULE>(mbi.AllocationBase);
}
}
}
else {
// standard getmodulehandle - to see if loaded
*phModule = GetModuleHandleW(lpModuleName);
}
// check if module found
if (*phModule == NULL) {
SetLastError(ERROR_DLL_NOT_FOUND);
return FALSE;
}
// check if reference needs updating
if ((dwFlags & GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT) == 0) {
typedef NTSTATUS(NTAPI *LPFN_LdrAddRefDll)(ULONG Flags, PVOID BaseAddress);
#define LDR_ADDREF_DLL_PIN 0x00000001
const HMODULE hmodntdll = GetModuleHandleW(L"ntdll");
const LPFN_LdrAddRefDll pfnLdrAddRefDll = reinterpret_cast<LPFN_LdrAddRefDll>(GetProcAddress(hmodntdll, "LdrAddRefDll"));
if (pfnLdrAddRefDll) {
// update dll reference
if (!NT_SUCCESS(pfnLdrAddRefDll((dwFlags & GET_MODULE_HANDLE_EX_FLAG_PIN) ? LDR_ADDREF_DLL_PIN : 0, *phModule))) {
SetLastError(ERROR_GEN_FAILURE);
return FALSE;
}
}
else if (dwFlags & GET_MODULE_HANDLE_EX_FLAG_PIN) {
SetLastError(ERROR_NOT_SUPPORTED);
return FALSE;
}
else {
WCHAR *filename;
if ((filename = reinterpret_cast<WCHAR*>(VirtualAlloc(NULL, MAX_PATH * sizeof(WCHAR), MEM_COMMIT, PAGE_READWRITE))) != NULL) {
DWORD ret = GetModuleFileNameW(*phModule, filename, MAX_PATH);
if (ret < MAX_PATH) {
*phModule = LoadLibraryW(filename);
}
else *phModule = NULL;
VirtualFree(filename, 0, MEM_RELEASE);
// ensure load library success
if (*phModule == NULL) {
return FALSE;
}
}
else {
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
return FALSE;
}
}
}
return TRUE;
}
//
// implementation of replacement function for SetFilePointerEx
//
extern "C" BOOL WINAPI ImplementSetFilePointerEx(HANDLE hFile, LARGE_INTEGER liDistanceToMove, PLARGE_INTEGER lpNewFilePointer, DWORD dwMoveMethod)
{
DWORD ret = SetFilePointer(hFile, liDistanceToMove.LowPart, &liDistanceToMove.HighPart, dwMoveMethod);
if (ret == INVALID_SET_FILE_POINTER) {
if (GetLastError() != NO_ERROR) {
return FALSE;
}
}
// check if provide file location
if (lpNewFilePointer) {
lpNewFilePointer->LowPart = ret;
lpNewFilePointer->HighPart = liDistanceToMove.HighPart;
}
// success
return TRUE;
}

View File

@ -1,49 +0,0 @@
#pragma once
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料
#endif
#include "targetver.h"
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的
// 关闭 MFC 的一些常见且经常可放心忽略的隐藏警告消息
#define _AFX_ALL_WARNINGS
#include <afxwin.h> // MFC 核心组件和标准组件
#include <afxext.h> // MFC 扩展
#include <afxdisp.h> // MFC 自动化类
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h> // MFC 对 Internet Explorer 4 公共控件的支持
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC 对 Windows 公共控件的支持
#endif // _AFX_NO_AFXCMN_SUPPORT
#include <afxcontrolbars.h> // MFC 支持功能区和控制条
#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif

View File

@ -1,250 +0,0 @@
.386
.MODEL flat, stdcall
USE_W_STRINGS EQU 1 ; Flag on which GetModuleHandle version to use
USE_WIN9X EQU 1 ; Flag on if to include Win9x specific requirements
EXTRN STDCALL ImplementGetModuleHandleExW@12 : PROC
EXTRN STDCALL ImplementSetFilePointerEx@20 : PROC
;; Declare functions that we will call statically
IF USE_W_STRINGS
EXTRN STDCALL _imp__GetModuleHandleW@4 : DWORD
ELSE
EXTRN STDCALL _imp__GetModuleHandleA@4 : DWORD
ENDIF
EXTRN STDCALL _imp__GetProcAddress@8 : DWORD
.DATA
;; Override the import symbols from kernel32.dll
__imp__InitializeSListHead@4 DWORD DownlevelInitializeSListHead
__imp__GetModuleHandleExW@12 DWORD DownlevelGetModuleHandleExW
__imp__EncodePointer@4 DWORD DownlevelEncodeDecodePointer
__imp__DecodePointer@4 DWORD DownlevelEncodeDecodePointer
;__imp__HeapSetInformation@16 dd DownlevelHeapSetInformation
__imp__SetFilePointerEx@20 DWORD ImplementSetFilePointerEx@20
EXTERNDEF STDCALL __imp__InitializeSListHead@4 : DWORD
EXTERNDEF STDCALL __imp__GetModuleHandleExW@12 : DWORD
EXTERNDEF STDCALL __imp__EncodePointer@4 : DWORD
EXTERNDEF STDCALL __imp__DecodePointer@4 : DWORD
;EXTERNDEF STDCALL __imp__HeapSetInformation@16 : DWORD
EXTERNDEF STDCALL __imp__SetFilePointerEx@20 : DWORD
; For Win9x support - need to change return value to TRUE for the crt startup
IF USE_WIN9X
__imp__InitializeCriticalSectionAndSpinCount@8 DWORD DownlevelInitializeCriticalSectionAndSpinCount
EXTERNDEF STDCALL __imp__InitializeCriticalSectionAndSpinCount@8 : DWORD
ENDIF
CONST SEGMENT
IF USE_W_STRINGS
kszKernel32 DB 'k', 00H, 'e', 00H, 'r', 00H, 'n', 00H, 'e', 00H, 'l', 00H, '3', 00H, '2', 00H, 00H, 00H
kszAdvApi32 DB 'a', 00H, 'd', 00H, 'v', 00H, 'a', 00H, 'p', 00H, 'i', 00H, '3', 00H, '2', 00H, 00H, 00H
ELSE
kszKernel32 DB "kernel32", 00H
kszAdvApi32 DB "advapi32", 00H
ENDIF
kszInitializeSListHead DB "InitializeSListHead", 00H
kszGetModuleHandleExW DB "GetModuleHandleExW", 00H
kszInitializeCriticalSectionAndSpinCount DB "InitializeCriticalSectionAndSpinCount", 00H
kszGetVersion DB "GetVersion", 00H
; Windows XP and Server 2003 and later have RtlGenRandom, which is exported as SystemFunction036.
; If needed, we could fall back to CryptGenRandom(), but that will be much slower
; because it has to drag in the entire crypto API.
; (See also: https://blogs.msdn.microsoft.com/michael_howard/2005/01/14/cryptographically-secure-random-number-on-windows-without-using-cryptoapi/)
; kszSystemFunction036 DB "SystemFunction036", 00H
CONST ENDS
.CODE
; C++ translation:
; extern "C" VOID WINAPI DownlevelInitializeSListHead(PSLIST_HEADER pHead)
; {
; const HMODULE hmodKernel32 = ::GetModuleHandleW(L"kernel32");
; typedef decltype(InitializeSListHead)* pfnInitializeSListHead;
; const pfnInitializeSListHead pfn = reinterpret_cast<pfnInitializeSListHead>(::GetProcAddress(hmodKernel32, "InitializeSListHead"));
; if (pfn)
; {
; // call WinAPI function
; pfn(pHead);
; }
; else
; {
; // fallback implementation for downlevel
; pHead->Alignment = 0;
; }
; }
DownlevelInitializeSListHead PROC
;; Get a handle to the DLL containing the function of interest.
push OFFSET kszKernel32
IF USE_W_STRINGS
call DWORD PTR _imp__GetModuleHandleW@4 ; Returns the handle to the library in EAX.
ELSE
call DWORD PTR _imp__GetModuleHandleA@4 ; Returns the handle to the library in EAX.
ENDIF
;; Attempt to obtain a pointer to the function of interest.
push OFFSET kszInitializeSListHead ; Push 2nd parameter (string containing function's name).
push eax ; Push 1st parameter (handle to the library).
call DWORD PTR _imp__GetProcAddress@8 ; Returns the pointer to the function in EAX.
;; Test for success, and call the function if we succeeded.
test eax, eax ; See if we successfully retrieved a pointer to the function.
je SHORT FuncNotSupported ; Jump on failure (ptr == 0), or fall through in the most-likely case.
jmp eax ; We succeeded (ptr != 0), so tail-call the function.
;; The dynamic call failed, presumably because the function isn't available.
;; So do what _RtlInitializeSListHead@4 (which is what we jump to on uplevel platforms) does,
;; which is to set pHead->Alignment to 0. It is a QWORD-sized value, so 32-bit code must
;; clear both of the DWORD halves.
FuncNotSupported:
mov edx, DWORD PTR [esp+4] ; get pHead->Alignment
xor eax, eax
mov DWORD PTR [edx], eax ; pHead->Alignment = 0
mov DWORD PTR [edx+4], eax
ret 4
DownlevelInitializeSListHead ENDP
; C++ translation:
; extern "C" BOOL WINAPI DownlevelGetModuleHandleExW(DWORD dwFlags, LPCTSTR lpModuleName, HMODULE* phModule)
; {
; const HMODULE hmodKernel32 = ::GetModuleHandleW(L"kernel32");
; typedef decltype(GetModuleHandleExW)* pfnGetModuleHandleExW;
; const pfnGetModuleHandleExW pfn = reinterpret_cast<pfnGetModuleHandleExW>(::GetProcAddress(hmodKernel32, "GetModuleHandleExW"));
; if (pfn)
; {
; // call WinAPI function
; return pfn(dwFlags, lpModuleName, phModule);
; }
; else
; {
; // fallback for downlevel: return failure
; return FALSE;
; }
; }
DownlevelGetModuleHandleExW PROC
;; Get a handle to the DLL containing the function of interest.
push OFFSET kszKernel32
IF USE_W_STRINGS
call DWORD PTR _imp__GetModuleHandleW@4 ; Returns the handle to the library in EAX.
ELSE
call DWORD PTR _imp__GetModuleHandleA@4 ; Returns the handle to the library in EAX.
ENDIF
;; Attempt to obtain a pointer to the function of interest.
push OFFSET kszGetModuleHandleExW ; Push 2nd parameter (string containing function's name).
push eax ; Push 1st parameter (handle to the library).
call DWORD PTR _imp__GetProcAddress@8 ; Returns the pointer to the function in EAX.
;; Test for success, and call the function if we succeeded.
test eax, eax ; See if we successfully retrieved a pointer to the function.
je SHORT FuncNotSupported ; Jump on failure (ptr == 0), or fall through in the most-likely case.
jmp eax ; We succeeded (ptr != 0), so tail-call the function.
;; The dynamic call failed, presumably because the function isn't available.
;; The basic VS 2015 CRT (used in a simple Win32 app) only calls this function
;; in try_cor_exit_process(), as called from common_exit (both in exit.cpp),
;; where it uses it to attempt to get a handle to the module mscoree.dll.
;; Since we don't care about managed apps, that attempt should rightfully fail.
;; If this turns out to be used in other contexts, we'll need to revisit this
;; and implement a proper fallback.
FuncNotSupported:
jmp ImplementGetModuleHandleExW@12
DownlevelGetModuleHandleExW ENDP
DownlevelEncodeDecodePointer proc
mov eax, [esp+4]
ret 4
DownlevelEncodeDecodePointer endp
; DownlevelHeapSetInformation proc
; mov eax, 1
; ret 10h
; DownlevelHeapSetInformation endp
; DownlevelSystemFunction036 PROC
; int 3 ; break --- stub unimplemented
; ret 8
; DownlevelSystemFunction036 ENDP
; Win9x section
IF USE_WIN9X
; here we need to return 1 for the crt startup code which checks the return value which on 9x is "none" (throws exception instead)
; This section will change the imported function on the first call for NT based OS so that every call doesn't require additional processing.
DownlevelInitializeCriticalSectionAndSpinCount proc
push OFFSET kszKernel32
IF USE_W_STRINGS
call DWORD PTR _imp__GetModuleHandleW@4 ; Returns the handle to the library in EAX.
ELSE
call DWORD PTR _imp__GetModuleHandleA@4 ; Returns the handle to the library in EAX.
ENDIF
;; Save copy of handle
push eax
;; Attempt to obtain a pointer to the function of interest.
push OFFSET kszInitializeCriticalSectionAndSpinCount ; Push 2nd parameter (string containing function's name).
push eax ; Push 1st parameter (handle to the library).
call DWORD PTR _imp__GetProcAddress@8 ; Returns the pointer to the function in EAX.
;; Test for success, and call the function if we succeeded.
test eax, eax ; See if we successfully retrieved a pointer to the function.
jz SHORT FuncNotSupported ; Jump on failure (ptr == 0), or fall through in the most-likely case.
;; save address and get back kernel32 handle
xchg dword ptr [esp],eax
;; Attempt to obtain a pointer to the function of interest.
push OFFSET kszGetVersion ; Push 2nd parameter (string containing function's name).
push eax ; Push 1st parameter (handle to the library).
call DWORD PTR _imp__GetProcAddress@8 ; Returns the pointer to the function in EAX.
;; See if function exists
test eax,eax
jz SHORT FuncNotSupported
;; call GetVersion
call eax
;; check if win9x
test eax,80000000h
pop eax ; get back address of InitializeCriticalSectionAndSpinCount function
jz WinNT
;; for Win9x we need to call and then change return code
push [esp+8] ; Copy the 1st parameter (+4 for IP return address, +4 for fist param)
push [esp+8] ; Copy the 2nd parameter (recall esp moves on push)
call eax
mov eax,1
ret 8
WinNT:
;; Change the call address for next calls and call directly
mov __imp__InitializeCriticalSectionAndSpinCount@8,eax
jmp eax
;; We should never end up here but if we do, fail the call
FuncNotSupported:
pop eax
xor eax,eax
ret 8
DownlevelInitializeCriticalSectionAndSpinCount endp
ENDIF
END

View File

@ -1,5 +0,0 @@
[1]
fat=0
name="CE"
cmd="DeviceEmulator.exe"
para="..\ARMV4\WM65PPC.bin"

View File

@ -1,107 +0,0 @@

// menu2.cpp: 定义应用程序的类行为。
//
#include "pch.h"
#include "framework.h"
#include "menu2.h"
#include "menu2Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// Cmenu2App
BEGIN_MESSAGE_MAP(Cmenu2App, CWinApp)
ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()
// Cmenu2App 构造
Cmenu2App::Cmenu2App()
{
// 支持重新启动管理器
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
// TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
}
// 唯一的 Cmenu2App 对象
Cmenu2App theApp;
// Cmenu2App 初始化
BOOL Cmenu2App::InitInstance()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。 否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
AfxEnableControlContainer();
// 创建 shell 管理器,以防对话框包含
// 任何 shell 树视图控件或 shell 列表视图控件。
CShellManager *pShellManager = new CShellManager;
// 激活“Windows Native”视觉管理器以便在 MFC 控件中启用主题
CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
Cmenu2Dlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: 在此放置处理何时用
// “确定”来关闭对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置处理何时用
// “取消”来关闭对话框的代码
}
else if (nResponse == -1)
{
TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n");
TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n");
}
// 删除上面创建的 shell 管理器。
if (pShellManager != nullptr)
{
delete pShellManager;
}
#if !defined(_AFXDLL) && !defined(_AFX_NO_MFC_CONTROLS_IN_DIALOGS)
ControlBarCleanUp();
#endif
// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
// 而不是启动应用程序的消息泵。
return FALSE;
}

View File

@ -1,32 +0,0 @@

// menu2.h: PROJECT_NAME 应用程序的主头文件
//
#pragma once
#ifndef __AFXWIN_H__
#error "include 'pch.h' before including this file for PCH"
#endif
#include "resource.h" // 主符号
// Cmenu2App:
// 有关此类的实现,请参阅 menu2.cpp
//
class Cmenu2App : public CWinApp
{
public:
Cmenu2App();
// 重写
public:
virtual BOOL InitInstance();
// 实现
DECLARE_MESSAGE_MAP()
};
extern Cmenu2App theApp;

Some files were not shown because too many files have changed in this diff Show More