Timo Kinnunen
Särkiniementie 16 A 41
70700 Kuopio
Finland

Klikkaa tästä palataksesi takaisin Timon Serverimaailma etusivulle - Click here to return back to the front page of Timos' Serverimaailma homesite

Klikkaa tästä palataksesi takaisin Timon suomenkielisten DOS ja OS/2-oppaiden valintasivulle - Click this link to Return back to The Page of Timo's Finnish DOS and OS/2 manuals

Klikkaa tästä palataksesi takaisin sivulle Tietoo - Click this link to Return back to the page of Information

Win32-OS/2 projekti

Johdanto

Win32-OS/2 -projektin työn tarkoituksena on mahdollistaa 32 -bittisten Windows -sovellusten ajo OS/2 järjestelmässä niin, että ne toimivat kuitenkin aitojen OS/2 sovellusten tapaan. Järjestelmävaatimuksena on mielummin hieman päivitetty OS/2 Warp 4.0 kuin OS/2 Warp 3.0, jota pitäisi päivittää 32 -tason päivityskorjausversiolla. Tarjolla on ilmainen PE2LX -kääntäjä, jolla Windows -sovellusten EXE ja DLL -tiedostot voidaan muuntaa OS/2 -sovelluksiksi. Periaate on se, että sovellus on ensin asennettuna Windows 95 järjestelmään, josta se sitten "käännetään" OS/2 järjestelmään, ja mukaan liitetään sellaiset "aidot" Windows -kirjastot, joita sovellukset saattavat kutsua tietyissä tilanteissa, ja joita ei siis käännetä lainkaan. Tietenkään tämä ei ratkaise kaikkia ongelmia, koska useimmat 32-bittiset Windows -sovellukset kirjautuvat Windows -järjestelmän rekistereihin, ja jotkut niistä vaativat tiettyjä (aitoja) Windows -kirjasto -ja aputiedostoja toimiakseen, tai esimerkiksi kokonaista Windows 95 järjestelmää. Useimat Windows 95, tai Windows NT järjestelmiin kuuluvista pienehköistä varusohjelmista eivät toimi moitteetta - tai ne eivät toimi ollenkaan. Toisaalta esimerkiksi Paint-, Calc-, NotePad, -ja Write -sovellusten kääntämisestä ei olisi mitään hyötyäkään, koska ne ovat kuitenkin aika askeettisia, ja niiden todellinen käyttöarvo lähes mitätön - ja niiden 16-bittiset vastineet WIN-OS2 -järjestelmän kautta ajettuina ovat paljon monipuolisempia, ja toimivat myös varmasti. Työryhmä on jo nyt tuottanut kokoelman työkaluja, ja dynaamisia kirjastotiedostoja, joiden avulla käyttäjät voivat kääntää Win32 (eli WIN95/WinNT) ohjelmia aidoiksi OS/2 ohjelmiksi, joita voidaan ajaa suoraan OS/2 järjestelmässä ilman, että tarvittaisiin Windows -järjestelmää, tai WIN-OS2 -tukea. Ohjelmisto on vapaasti kaikkien käyttäjien saatavissa, ja käytettävissä. Ohjelmisto toimitetaan arkistona WIN32OS2.ZIP. Koska varsinaista asennusohjelmaa ei ole, sinun tulisi tietää,miten tällaisia tiedostoja käsitellään. Se purkautuu esimerkiksi Unzip.EXE ohjelmalla, ja kiintolevyllesi luodaan /BIN -hakemisto - mikä kannattaa huomioida oletushakemistoa valittaeesa, sekä myös purkutiedoston sijainnin suhteen. Mukana seuraavat ohjeet, sekä OS/2 komentotiedostot (CMD), joilla voidaan muuntaa Quake II -peli, jonka on valmistanut Id Software. Lisätietoja saat SuperSiten kotisivulta, jossa pitäisi olla linkki myös projektiin. Ellei projektia enää olisikaan käynnissä, niin paljon muuta (kaupallista) mielenkiintoista täältä voi imuroida - ja ennenkaikkea täältä saa enemmän tietoja.

Mitä OS/2 järjestelmältäsi vaaditaan?

Jotta 32-bittiset, käännetyt Windows -sovelukset toimisivat, täytyy järjestelmässäsi olla asennettuna Open32, ja siitä syystä järjestelmäversiovaatimus on OS/2 Warp 4.0, jossa on tehty FixPak 4 -päivitys, tai uudempi, sekä os2krnl -korjaus. Jos sinulla on OS/2 Warp 3.0, täytyy siihen olla tehty vähintään FixPak 26. Imuroituna se on kuitenkin varsin laaja kokonaisuus, ja vaatii levykkeiden luomista, ja siihen sopivaa ohjelmaa. Tämä merkitsee tiettyjä esivalmisteluja, ja jopa epäonnistumisen riskejä. Tällaisia seikkoja kuitenkin vaaditaan, jos halutaan Win32 -sovellusten toimivan. Käännösohjelman nimi on PE2LX, ja koska se toimii OS/2 komentoriviviltä, täytyy käsiteltävän ohjelmiston olla jo valmiiksi asennettuna toimivaan Windows 95 tai Windows NT järjestelmään, koska käsiteltävien sovellusten asennus OS/2 järjestelmään suoraan ei onnistu. Tämä tarkoittaa sitä, että sovellus asenetaan ensin normaalisti Windows -järjestelmään, ja vasta senjälkeen se muunnetaan toimimaan OS/2 järjestelmässä. Windows -järjestelmän on mielellään sijaittava samassa koneessa kuin OS/2, ja lisäksi viimeksimainitusta täytyy olla pääsy edelisten partitioihin. Tätä tarkoitusta varten tarjolla on IFS -ajureita, joilla OS/2 voi lukea Windows95/NT -partitoita - eli tarvitset ajurit VFAT ja NTFS -tiedostojärjestelmien lukua varten.

Missä tapauksissa käännösohjelma ei toimi, tai tuota haluttua tulosta?

Se, että PE2LX toimii - eli onnistuu kääntämään ohjelman, tai kirjaston, ei vielä sinällään merkitse mitään, koska juju on saada esimerkiksi jokin tietty EXE -tiedosto ladatuksi muistiin oikein, ja toimimaan siellä. Seuraavissa tapauksissa kääntäjä ei toimi:

1. Yrität kääntää 16-bittistä Windows -ohjelmaa. Näitä ei kuitenkaan tueta, joten ne eivät todennäköisesti myöskään toimi.

2. Ohjelma käyttää resurssia, jota ei vielä täysin kyetä tukemaan, kuten "version" -resurssi.

3. Ohjelmatiedostossa on jotakin vialla. Tavallisesti ongelmia syntyy kun ohjelma on luotu Borlandin linkerillä, mutta syynä voi olla myös se, että ohjelma on vioittunut jollakin tavalla.

Monien ajonaikaisten Windows -kirjastotiedostojen toimintakyky on vielä puutteellinen, tai niiden ominaisuuksia on haluttu rajoittaa. Tässä käydään niistä läpi vain pari. Esimerkiksi advapi32.DLL, joka liittyy turvallisuuteen ja rekistereihin, on tarkoitettu tukemaan rekisteritoimintoja, mutta ei Windows NT turvalisuusominaisuuksia. gdi32.DLL tiedoston kaikkia grafiikkojen (GDI) -API -toimintoja tuetaan. Erillistapauksena on comctl32.DLL kirjasto, joka sinun tulisi kääntää itse, ja tämän kirjaston saat toimivasta Windows -järjestelmästä, tai purkamalla Windows 95 asennuslevykkeeltä. Huomaa, että asennuslevykkeeltä saatava versio järjestelmän perusasennuksesta ei ehkä kelpaa, vaan sen on oltava päivitys. comdlg.DLL kirjasto kykenee toimimaan täydellisesti Open32 -systeemissä, ja winsock.DLL sisältää TCP/IP -tuen. Oman lukunsa muodostavat resurssit (Resources), jotka ovat mm. kuvakkeita, valikoita, jne, ja tavallisesti ne on tallennettu EXE -tai DLL -tiedoston sisälle. Kun käytetään Open32 -systeemiä, on vaatimuksena se, että resurssien tulee olla OS/2 muodossa. Niinpä myös PE2LX kääntää ne tällä tavoin. Yleisesti useimmat toiminnot on kyetty saamaan kuntoon, mutta version.DLL muodostaa poikkeuksen. Onneksi suurin osa sovelluksista ei vaadi sitä lainkaan. Huomaa, että 99% kaikista Windows 95/NT -järjestelmän omista sisäisistä, pienistä sovelluksista ei toimi, ja siksi Calc tai NotePad -ohjelmien kanssa ei kannata tuhlata aikaansa. Kaikista niistä sovelluksista, joista on olemassa OS/2 -versio, toimii se varmasti paremmin kuin käännös.

Mikä ero on Win32, Win95, ja WinNT järjestelmillä?

Win32

Windows 95 (Win95) ja Windows NT (WinNT) ovat kaksi Microsoftin myymää, toisistaan poikkeavaa käyttäjärjestelmää. Kummankin hyvänä puolena on se, että voit asentaa ne omaan koneeseesi itse, ja käyttää niissä laajaa valikoimaa sovelluksia. Termi "Win32" on nimi API -järjestelmälle, joka on lyhenne englanninkielisestä lauseesta "Application Programming Interface", joka tarkoittaa sitä pintaa, jolla sovellukset kiinnittyvät järjestelmään. Tätä kummatkin tässä mainitut käyttöjärjestelmät tukevat. API on kokoelma palveluja, joita järjestelmä tarjoaa sovelluksille, ja ohjelmoijat käyttävät tätä tietoa hyväkseen luodessaan ohjelmia. Useimmat sovelluksista on kirjoitettu jollekin tietylle käyttöjärjestelmälle, ja sen API -käytännölle, mutta koska sekä Windows NT ja Windows 95 tukevat samaa Win32 -systeemiä, voidaan aika helposti kirjoittaa sovelluksia, jotka toimivat niissä kummassakin.

Open32

Kun IBM loi OS/2 Warp 4.0 käyttöjärjestelmän, oli yksi sen päämääristä se, että sovelluskehittäjät kykenisivät kääntämään Windows -sovelluksensa OS/2 järjetelmään, ja tämä totetutettiin niin, että Win32 API oli tarjolla OS/2 järjestelmän APIN ohella. Kun tällaiseen järjestelmään käännetään Windows -sovellus, näyttää se ulkoisesti OS/2 -sovellusten näköiseltä, ja toimii niiden tapaan. OS2 järjestelmään liitetty Win32 API on nimeltään Open32, mutta se ei ole kuitenkaan täydellinen Win32 API, koska useita sen funktioita ei ole käytettävissä. Suurin Open32 -systeemin käyttäjistä on Lotus.

Win32s

Win32s on Win32 -alijärjestelmä, ja sen on tarkoitettu käytettäväksi 16-bittisessä Windows 3.1 järjestelmässä, jotta siinä voitaisiin ajaa 32 -bittisiä sovelluksia. Tähän oli aikanaan tarjolla useitakin sovelluksia, ja myös OS/2 järjestelmään on ollut saatavissa tällainen tuki.

Täydentävät kirjastot Open32 API -systeemiin

Koska Open32 API ei ole täydellinen Win32 API -valikoima, on projektin eräänä tarkoituksena täydentää sitä puuttuvilta osiltaan. Tästä syystä tarjolla on täydentäviä kirjastoja, ja ne sisältävät sellaisia API -funktioita, joita ei ole Open32 -järjestelmässä, mutta toisaalta niissä on myös sellaisten funktioiden korvauksia, jotka eivät toimi oikein Open32 systeemissä. Tämän lisäksi nämä täydentävät kirjastot sisältävät joidenkin Open32 APIEN esiprosessointeja. Jos esimerkiksi jokin Open32 API sisältää vain osan Win32 -vastaavasta toiminnallisuudesta, täydennetään se näissä ylimääräisissä kirjastoissa. Käynnistävä (stub) funktio suorittaa siten ensin puuttuvat tehtävät, ja vasta senjälkeen kutsuvat Open32 -kirjastoa (PMVINX.DLL) käsittelemään loput. Periaatteena on lisäksi se, että kaikilla käytetyillä funktioilla on oma, toisista poikkeava "nimensä" - eli jos PMVINX.DLL sisältää funktion "ReadFile", ei täydentävissä kirjastoissa voi olla tämännimistä funktiota, koska OS/2 ei tiedä, mitä versiota sen on kutsuttava. Tästä syystä kun PE2LX kääntää EXE tiedoston OS/2 muotoon, se muuttaa myös kaikki API -nimet, ja siten "ReadFile" -funktiosta tulee "OS2ReadFile", ja niinpä sekaannus vältetään.

Mitä kategorioita Open32 APIT eivät sisällä?

Se ohella, että Open32 ei sisällä kokonaisia kategorioita, kuten että siitä puuttuu DirectX APIT, siitä puuttuu myös joitakin funktioita, kuten

VirtualAlloc

LPVOID lpvAddress
DWORD cbSize
DWORD fdwAllocationType
DWORD fdwProtect

Käynnistävä funktio korvaa tämän APIN kutsumalla funktiota;

DosAllocMem

Yhtään Open32 funktiota ei ole hylätty siistä syystä, että niissä oli havaittu ainakaan sellaisia virheitä, että funktiot olisi pitänyt kokonaan korvata uusilla täydentävissä kirjastoissa. Joissakin tapauksissa Open32 funktiosta saattaa puuttua jotakin pientä, kuten käynnistäviä prosesseja, tai lennossa muunnettavia parametreja. Ajan myötä kaikkiin ongelmiin löytynee jokin ratkaisu.