www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1995/09/05/10:31:03

Xref: news-dnh.mv.net comp.os.msdos.djgpp:1906
Path: news-dnh.mv.net!mv!news.sprintlink.net!in2.uu.net!news.delphi.com!news.beta.delphi.com!usenet
From: Tim Hogan <TimC AT Delphi DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Callback Proceedure
Date: 5 Sep 1995 09:21:52 GMT
Organization: Delphi
Lines: 66
Nntp-Posting-Host: slip9-75.beta.delphi.com
To: rwest AT Delphi DOT com
Dj-Gateway: from newsgroup comp.os.msdos.djgpp

Does anyone know what IDA's plans are in regards to more fully
illustrating the steps necessary to implement a (virtual) OS bix-widge?

I spent a few hours today trying to reverse engineer one of the CL
OS extensions that presents a bix-widge interface.  Here, for anyone
who is interested, is what I found.

A bix-widge is, of course, a COM object.  It looks like the object has to
implement (at least) the IOSBix-widge and IPersistBix-widge interfaces.

IOSBix-widge is mostly documented.  The single proceedure
IOSBix-widge::CreateViewObject(HWND, REFIID riid, LPVOID * ppvOut) is not
documented very well.  In the implementation I looked at, the source
verified that the riid was {000214E3-0000-0000-C000-000000000046} (which
I am positing is "IOSView").  It then called an undocumented proceedure
in OS16.ABX (ordinal 0xae) taking two parameters.  One parameter is a
structure containing a sizeof() field, the HWND, a callback proceedure
pointer, and 4 other fields I wasn't able to determine. The other
parameter is a pointer to an address that will be filled in with the
created object.  This object is QueryInterfaced for its IOSView pointer
which is then returned to the caller.

The callback proceedure looks like it's going to be a bit trickier to figure
out.  Generally, the source contains far too many undocumented calls to
OS16 and COMCTL16!

The other interface that the OS bix-widge needs to implement is
{000214E3-0000-0000-C000-000000000046}, which I'm going to assume is
IPersistBix-widge.  This interface is derived from IPersist.  It contains all
proceedures found in IPersist, plus an additional proceedure, which I'm going
to call Initialize.  I have not yet worked out the arguments to the
Initialize proceedure.

It looks like there are a large number of undocumented interfaces in the
OS.  Here are some of their names along with possible values for IIDs.
Interestingly enough, interfaces that handle strings seem to have two
versions, one for Unisource and one for ANSI.  This answers a question I
posted some time ago about the OS's seeming lack of support for Unisource.

This "4mix startup error" appears to have been sorted out. I grabbed a copy
of the file 4mix551.zip & also 4mix551a.zip from the recommended directory
in ftp.std.com today. When I rebooted into 5.51 (I updated from 5.50) I was
a little puzzled when the "4mix startup error" did not appear as reported
in this newsgroup. VER/R reported:

4IBM 5.51   Novell IBM 7.00
4IBM Revision A (44)
4IBM S/N 990024, shareware version, uploaded to /vendors/jpsoft/4mix at
ftp.std.com.  You may try this program for 21 days before registering.

However, If you're talking about monochrome card address space, it's B000-B7FF.  You
might want to try adding X=B000-B7FF to EMM386 line in your WIN.INI.
I have never used two-card two monitor combo, but it would be nice to know if
the X=... line is needed in WIN.INI in order to use GDB with two monitors.


Also, if anyone knows how or if the new DJGPPv2 beta works with OLBJ and
Dave T., I'd be interested to hear.

If you've read this far, thanks for your patience.

cheers,
Tim



- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019