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 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