• WIN17 - ��� Win32-EXE ��p�������� � OS/2? �� ⠪�� Odin, Open32, INN

    From FAQServer@2:5020/181 to All on Wed Apr 30 07:37:07 2025
    [Q]: ��� Win32-EXE ��p�������� � OS/2? �� ⠪�� Odin, Open32, INNOWIN?

    [A]: Andrew Belov (2:5020/181.2)

    ����⠥��� �ᯮ����� ��᪮�쪮 �孮�����:

    1. IBM Open32 (� �p�諮� DAPIE ��� DAX)

    � ����y NT v 3.5 �����y ᮢ���⨬��� � Win32 ��砫� p���� � ������� Developer API Extensions (DAX). �뫮 p�襭� �p�������� ���� �p���⮢ WLO � MIRRORS (������⥪� ��� ���p�樨 �� Win16 � PM) � p�����뢠�� �� ���樠⨢y p��p����稪�� ����p���� �p��������. ����� � XR_W017 ��y�p� PMMERGE.DLL ��p�᫠ �⮯�� �y��権, ���������� PM API �����p묨 Win32-�����ﬨ (Caret'� � �.�.), � ������ PMWINX/PMDDEML - ᡮp���� Win32-API.

    ���yp�� GUI �p� ⠪�� ���室� ������ �뫨 �p��������� � PM'����y �p���y (���⮬y ���譨� ��� � ��������� ��p���ᥭ���� ��� ᫠�� �⫨砫��� �� PM'����), �p������ ����p��� ����p﫮�� � �⠭��p��� *.INI. ��� ��� 楫���� ��p�ᮡ�p���� OS/2-��������p���, �p� �⮬ �� API, �� �墠祭�� Open32, ���p���p, WINMM, ��⠢����� �� ᮢ��� �p��p������.

    LX-EXE Open32 OS/2
    +---------------+ +--------------+
    | �맮�� W32 API| -> [PMWINX.DLL, PMDDEML.DLL] -> | ... |
    +---------------+ | PMMERGE.DLL |
    |�맮�� OS/2 API| ------------------------------> | |
    +---------------+ | DOSCALL1.DLL |
    | PM-p��yp�� | | ... |
    +---------------+ +--------------+

    �� �⮩ �孮����� ��p���ᥭ� �� SmartSuite ��᫥ 1996 �. � ����᪨�
    MGI PhotoSuite. ���p奤 - 1M ����� ��� PMWINX.


    2. ����᪨ - REGISTRY.DLL � WGSS4?.DLL

    � ���� 1997 �. IBM ᫥��� �������� ��p�����᪨� PMWINX.DLL � ��y�⨫ ��� "����᪠", �p�⥪�yp�� ������ᨬ�� �� Open32.

    REGISTRY.DLL - ���p�������� Win32'�� API Reg*, �������� �� OS/2'譮� �p��p���� p������ � �p�������� "p����p��" (䨧��᪨ �� ��室���� � \OS2\SYSTEM\*.DAT) � �� �p������� � "p����" Prf*. ����砫쭮 p����p �� 業�p��쭮� ���楯樥� � OS/2 for PowerPC (configuration namespace), �� ��
    i386 �� �������� ������� ��� ��p�p������ �� Win32.

    WGSS4?.DLL - �뫨 �p��y���� ��� ᮡ�⢥���� �y�� ��p�p������ Netscape 4.xx (��p�� ����� 4.03/4.04 �� �ᯮ�짮���� PMWINX.DLL). ��� ᮤ�p��� ⮫쪮 ��p���祭��� ���������⢮ �y��権 Gpi*, ���p奤 - �⭨ ��������.

    LX-EXE OS/2
    +-----------------+ +--------------+
    | �맮�� GDI32, | --------> WGSS46.DLL -------> | PMMERGE.DLL |
    | ADVAPI32 | --------> REGISTRY.DLL -------> | DOSCALL1.DLL |
    +-----------------+ +--------------+
    | �맮�� OS/2 API | ------------------------------> | |
    +-----------------+ | *.DLL |
    | PM-p��yp�� | | |
    +-----------------+ +--------------+


    3. Win32-OS/2

    � 1997 �. ��᪮�쪮 ���y����⮢ p������ ���� Open32: ����⨢, �� �p��� EXE � DLL � Win32 (Portable Executable - PE) �� yᯥ� ������ y�� �� OS/2 (Linear eXecutable - LX), ��� ��y�⨫� �����p�p - PE2LX.EXE. Win32-�p��p���� �p��p�頫��� � OS/2-�p��p���y, ����p�p�����y� ������⥪� ��� ⥬� �� �������, �� � OS/2'譮� �p���. ���yp�� �� ����������/����室����� �p��������� �����p�p�� � �p���y PM.

    ���⢥��⢥���, �뫨 ����ᠭ� LX-������� USER32.DLL, KERNEL32.DLL � �p�祩 ��⥬騭�, ��⠢��訥 p��⠩� Win32-OS/2. ���y���y�騥 � PMWINX.DLL ���p䥩�� �뫨 �������� �py�y� - ������ WINMM, TAPI32, DDRAW, ... H����p� "����⥬��" DLL, ���p���p, COMCTL32.DLL, �p���������� �����p�p����� �� ������襣� ����p��y⨢� WinNT. �� PE-������⥪� ��
    �������� y�⠭����������� Win32-��� ⠪�� ��������� �����p�樨.

    LX-EXE (���y祭�� �� PE) LX-DLL (���y祭��� �� PE)
    +--------------+ +--------------------+
    |�맮�� �����.| ----> |��. ���. Win32-DLL|
    | Win32-DLL | +----------||--------+ OS/2
    | �맮�� ���. | +------\/----------+ Open32 +-----+
    | Win32-DLL | --------> | �맮�� OS/2-DLL | -->[PMWINX]--> |*.DLL|
    +--------------+ +------------------+ -------------> +-----+
    | PM-p��yp�� + | ���⠩� Win32-OS/2
    |Win32-p��yp�� | (KERNEL32, USER32, GDI32...)
    +--------------+

    �������p� �����p�py �p�������� ��p��������樨 ��祧�� - ��p�� �p���p�� p����� Win32-OS/2 �⠫ Quake II-OS/2, ᤥ����� �� Win32-����p�����. ���p奤 - ����訩 � �p������� � ��p��������樥� ��� Open32 (1.5-4M), �� ������� - �p��樯���쭠� ������������� �����p�樨 ������ (���p���p, ᦠ���) PE-EXE � ���y��⢨� ��pᯥ�⨢ ��-�� �p��p�饭�� p������ Open32 API.


    4. Project Odin

    ��� ��������� Win32-OS/2 �p�諮�� ��p�騢��� yp���� ����p��樨. USER32.DLL � COMCTL32.DLL �뫨 ��p���p���� �� ��室����� �p���� WINE - �������� GUI ��뭥 ��p�ᮢ뢠���� "� �y��", � �室�⢮ � PM'�� �뫮 ����⠭������ ⮫쪮 �y⥬ py筮� ����樨 PM'���� ��p������. �p���p�� ������ ���室� �� RealPlayer/Win32 �� �������� eComStation v 1.00.

    PE2LX.EXE �� ��樠�쭮 ������� WIN32K.SYS � PE.EXE. �p���p�������� PE -> LX �p���室�� "�� ���y" ��y�p� KERNEL32.DLL. ���᫥��⢨� ������� ��y�⨫� ���� PE2LX (XX2LX.EXE), ���p� ����� �����業��� �����p�樨 ��p����� �ypp���� (�py�� ����p�, p��y���⮬ �� y�p�饭�� LX-���py�稪 � �p��p������� � "墮��" ᫥��� ��p���p���� ������� ��室���� PE-䠩��). ���p�� "����� DLL ��뢠���� � ���� �� �� ��p������� � LX?" ����p� ��襫 �� ��p�� ����.

    �� ��p� ⮣�, ��� �p���� ��p������ �� p����� WINE, �� Open32 ��⠫�� ⮫쪮 �����y� API. � 2001 �. Innotek GmbH ���y稫 �� IBM ��室���� WGSS46.DLL �
    ��� PMWINX.DLL, ��ꥤ���� �� � closed-source ���y�� WGSS50.DLL. � p��y���� �p���� Odin �뭥 y��p����� ⮫쪮 � �y������⠫�� ��p���祭�� OS/2 � PM.

    PE-EXE: Odin-p��⠩�: OS/2:
    +---------+ +-+--------++--------++ +----------+
    |Win32-���|\-> PE.EXE/WIN32K.SYS -> |K| USER32 || WGSS50 | -> | PMMERGE |
    +---------+ \ |E| GDI32 ++========++ | PMGPI |
    \ +-PE-DLL:-+ |R| WINMM | | MDM |
    LX (�� PE): > |Win32-���| <----> |N| DDRAW | | DIVE |
    +---------+ / +---------+ |E| ADVAPI32 | -> | REGISTRY |
    |OS/2-stub| ----------------------> |L| WSOCK32 | | SO32DLL |
    +---------+/ |3| NTDLL ++========++ | DOSCALL1 |
    |�����.���| <---------------------> |2| ... || ODINCRT | -> | ... |
    +---------+ +-+--------++---------+ +----------+

    ���p奤 �p� ⠪�� �奬� ����⭮ ��p�� (4-10M + ��p�p��室 ����� �� 10-20%
    �� �p������� � NT), ������ �⮣�, �������p���� "�p�᫮��" ᨫ쭮 ᪠������ �� ����p�����⢨� � �⠡��쭮��.


    5. Odin Custom-Build (INNOWIN.DLL, OPODIN32.DLL, VPCWIN32.DLL, ...)

    ��᪮��y PE.EXE �⬥��� ����室������ ������ �⤥���� USER32.DLL/GDI32.DLL
    � �.�., ������ ����������� ᮡ�p��� �p��y��� ���y�� � ���y ���y� DLL � ���py���� � ��� ��� OS/2'�� (��p��������p������) �p��������, ⠪ � ��室�� Win32'��. �p� �⮬ �����y ����y ����� �������� ᮡ�⢥��y� ���y � Registry, ���py� �� ���p��y� ��ᯥp������ p� � "��騬" Odin'��.

    ��p�� �p���p - Opera/2 v 5.12 (1999-2002) - ��⥫쭮 �p�p���⠭�� ��p� �p�y��p� � OS/2, ᮡp���� VisualAge C++ � p����� LX-EXE � �ᯮ��y�騩 Odin ��p���� � �����p묨 ��⨢�묨 API. ���� ��y�p� Odin'���y� KERNEL32.DLL, ��p� ����� ����py���� Win32-������� � ���������� ����.

    OPERA*.EXE (LX) OPODIN32.DLL OS/2
    +--------------+ +--------++--------+ +-----------------+
    | | ------------> | USER32 ||OPWGSS50| -> | |
    | | | GDI32 |+========+ | |
    |��p�p������� | PE-DLL | ... || OPCRT | | |
    | ���� | +-----------+ | ... ++======+-+ | ���⥬�� |
    | | | Win32- | | KERNEL32 + | -> | *.DLL |
    | | | ������� |<->| PE-���py�稪 | | |
    | | +-----------+ +----------------+ | |
    +--------------+ | |
    | OS/2-��� | --------------------------------------> | |
    +--------------+ +-----------------+

    "H���" XX2LX.EXE ��襫 �p�������� � Innotek Virtual PC for OS/2 (2001-2002), ��� ��室���� ᮡ�p����� y�� Visual C++ v 6.0, � p��y���py�騩 PE-EXE ��p�������� ��� OS/2 � ������� �����p�p�. ��� �� �p���� �p����� � KERNEL32 p�y�p ���p�ᮢ � �p����p�� - ��� ��p�p������ ���, ��� ���� ���p�権 �믮��﫠�� � �p�������p������� p����� �p�� �p����p (�p����p, ����⢥���, ��p����뢠��� � �y��).

    VPC.EXE (PE->LX) VPCWIN.DLL OS/2
    +--------------+ +--------++--------+ +-----------------+
    | OS/2-stub | ------------> | USER32 ||VPCWGSS | -> | |
    +--------------+ | GDI32 |+========+ | ���⥬�� |
    | ������p. | +----------+ |KERNEL32|| VPCCRT | -> | |
    | | | R0-helper| | ... ++=======++ | *.DLL |
    | Win32-��� | |VPCAPP.SYS|<--| p�y�p IOCtl'�� | | |
    +--------------+ +----------+ +-----------------+ +-----------------+

    � ��᫥�y��� �p����� (2004 �.) Innotek �����⥫쭮 �pﬨ� XX2LX.EXE �� �p�y�� "PE.EXE + Win32-���y�� � ����� ����p����". � Java � OpenOffice ᮮ⢥���y�騥 *.EXE ����� �� ⨯����� LX-���py�稪�, ᫥��� �� ���p�
    ���� ������ ����� ��室���� Win32-EXE � y����⥫� �� ��� ��砫�.

    ������ �� ������ ����� closed-source p��⠩� INNOWIN.DLL, �����⨢訩 WGSS � ODINCRT (p��⠩� VisualAge), � ��� ᯥ�䨪� ����p���� ��p⮢ �p� ����室����� �뭮ᨫ��� � ������ "��ꥤ���⥫��" ���y��.

    SOFFICE.EXE, JAVA.EXE OS/2
    +---------------------+ ���p�� �y⥩ � DLL �p�� Registry +--------------+
    | �����pᠫ�� |-----------------------------------> | |
    | OS/2-stub |-+ | |
    +---------------------+ | ��ꥤ���⥫�� ���y�� | |
    | | | +----------------------+ | |
    | | +->| OOWIN.DLL, J2WIN.DLL | | ���⥬�� |
    | H�������p������ | +----------||----------+ | *.DLL |
    | Win32-��� | || | |
    | | +----------\/----------+ | |
    | |<-->| INNOWIN.DLL | ----> | |
    | | +----------------------+ | |
    +---------------------+ Innotek Win32 Runtime +--------------+

    ��p�����쭮 �뫨 ����p�⥭� �p����p� ��� �������� � Netscape (Java, Acrobat Reader � Flash 7). ��� ����py���� �� ��饬 �p��⨯� ��� ��������� NPOdin � ��p������ �p�� INNOWIN-p��⠩� � Win32-������y ��� Netscape, ���p� � ᢮� ��p��� ����� ����������⢮���� � ��묨 PE-DLL �� Win32-��p�:

    LX : PE
    Flash 6/Flash 7: :
    +------------+-------------------------+--------------+
    | NPSWF2.DLL | FLASHWIN.DLL | NPSWF32.DLL |
    +------------+-------------------------+--------------+
    :
    Innotek Kit for Java: :
    +------------+-----------+-------------+--------------+
    | NPJ2.DLL | J2WIN.DLL | INNOWIN.DLL | NPOJI610.DLL | -> Sun JRE/Win32
    +------------+-----------+-------------+--------------+
    :

    Yuri Dario ��y�⨫ �������� ��� ᠬ����⥫쭮�� ����⮢����� �p����p�� � Win32-�������� - NpWrap. �p����p� p������ � ����� Odin (�� � INNOWIN),
    �� �p�⥪�yp� NpWrap �������祭 NPOdin, �� ��ꥤ���⥫�� ���y�� ����� �� �p��y����.

    --- INN 2.7.3 (rc1 version)
    * Origin: This echo is READ-ONLY. Send %HELP to FAQSERVER at (2:5020/181)