Electronics
Btrieve
Motorcycling
Software

This article was posted to comp.databases newsgroup:

To make the story short, we have a problem with workstations that have non-microsoft TCP/IP stack (Trumpet Winsock, to be more precise). Btrieve 6.15 requester returns status code 20 if you try to open a file on the netware server that runs Btrieve for Netware.

The through examination revealed that having a microsoft version of WSOCK32.DLL around fixes the problem. Futher investigation reveled that for some reason (like having an ex-microsoft guy on board perhaps?) Pervasive has tied the W32BTICM.DLL to microsoft implementation of WSOCK32.DLL, completely ignoring the Winsock specification that states:

--- cut --------------------------------------------------------
B.7 DLL Ordinal Numbers The winsock.def file for use by every Windows Socket implementation is as follows. Ordinal values starting at 1000 are reserved for Windows Sockets implementors to use for exporting private interfaces to their DLLs. A Windows Sockets implementation must not use any ordinals 999 and below except for those APIs listed below. An application which wishes to work with any windows Sockets DLL must use only those routines listed below; using a private export makes an application dependent on a particular Windows Sockets implementation.
---- cut ------------------------------------------------------

beside the question why would Pervasive need to use WSOCK32.DLL for IPX interface at all, they went ahead and built a W32BTICM.DLL that reveals it's ugly guts to DUMPBIN /IMPORTS:

WSOCK32.dll
   Ordinal  19
   Ordinal  1109
   Ordinal  23
   Ordinal  2
   Ordinal  6
   Ordinal  21
   Ordinal  16
   Ordinal  111
   Ordinal  115
   Ordinal  1111
   Ordinal  116
   Ordinal  3
   Ordinal  4

DUMPBIN /EXPORTS for microsoft's WSOCK32.DLL tells that

1109 ordinal is for GetAddressByNameA
1111 is for EnumProtocolsA

Maybe someone from Pervasive can enlighten us all WHY ON EARTH DID PERVASIVE SCREW THE REQUESTER UP FOR TWO IRRELEVANT FUNCTIONS?

Madis Kaal

Later on, I found this document from Novell Knowledgebase

BTRIEVE v6.15 does not work with NT Client (Last modified: 04DEC1995)

This document (1007122) is provided subject to the disclaimer at the end of this document. Forward this document to a colleague

Symptom

When attempting to use BTRIEVE for Windows v6.15, either the 16 or 32 bit versions, they fail using the Novell's NetWare Client for Windows NT v3.5. BTRIEVE works with the Microsoft Client, however.

Cause

In their 6.15 version, BTRIEVE makes calls specific to NWLINK, Microsoft's emulation of our IPX/SPX protocol. These calls are not supported by our client and are not standard IPX/SPX calls. BTRIEVE is aware of the problem.

Solution

BTRIEVE must change v6.15 to use standard IPX/SPX calls.

Please select if this document solved your problem.

Document Title:             BTRIEVE v6.15 does not work with NT Client
Document ID:                1007122
Creation Date:              04DEC95
Modified Date:              04DEC95
Document Revision:          1
Novell Product Class:       NetWare OS
Novell Product and Version: NetWare Client for Microsoft Windows NT

Copyright © Madis Kaal 2000-