JEDI Windows API Library - Explanation of IFDEFs used

Global switches of jediapilib.inc

DYNAMIC_LINKActivates dynamic linking of several APIs
USE_DELPHI_TYPESActivates the use of the original basic types of Delphi's Windows.pas. Either indirectly in JwaWinType.pas or directly through the use of Windows.pas instead of JwaWinType.pas.
UNICODESets default for Ansi/Unicode pairs of API functions

Global version level switches of jediapilib.inc

There are several sets of global IFDEF switches to compile the API conversions for compatibility with a certain software version. Only one of the list of IFDEFs for each software is allowed to be activated. This allows for example to compile a program to be guaranteed to be compatible with Windows 98 for example.

The main switches are for the Windows version to be compatible with:
{.DEFINE WIN95}
{.DEFINE WIN98}
{.DEFINE WIN98SE}
{.DEFINE WIN98ME}
{.DEFINE WINNT4}
{.DEFINE WIN2000}
{$DEFINE WINXP}
{.DEFINE WIN2003}
The default is Windows XP as the most common Windows version in use.

The Internet Explorer is independent of the Windows version and therefore needs its own set of switches:
{.DEFINE IE300}
{.DEFINE IE400}
{.DEFINE IE401}
{.DEFINE IE500}
{.DEFINE IE501}
{.DEFINE IE560}
{$DEFINE IE600}
The default is IE 6.00 as the most common version in use.

The Microsoft Installer (MSI) is available for installation on older Windows versions, so it needs independent switches:
{.DEFINE MSI100}
{.DEFINE MSI110}
{.DEFINE MSI200}
As default none of the switches is activated. The default in this case is determined by the Windows version switches.

The HTML Help is like MSI available for older Windows versions:
{.DEFINE HTMLHELP11}
{$DEFINE HTMLHELP12}
The default is HTML Help 1.2.

Secondary version level switches of jediapilib.inc

All global version level switches get an _UP secondary switch.
MSI100, MSI110, MSI200 get a default determined from the Windows version level switch if none is set in the global section.

Local switches in files

_WIN64JwaNb30.pas, JwaWinIoctl.pas, JwaWS2spi.pas: For 32/64 bit thunking support in 64 bit Windows.
CMSG_ENVELOPED_ENCODE_INFO_HAS_CMS_FIELDSJwaWinCrypt.pas: Enables extra elements in CMSG_ENVELOPED_ENCODE_INFO record.
CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDSJwaWinCrypt.pas: Enables extra elements in CMSG_SIGNER_ENCODE_INFO_HAS_CMS_FIELDS record.
CRYPT_SIGN_MESSAGE_PARA_HAS_CMS_FIELDSJwaWinCrypt.pas: Enables extra elements in CRYPT_SIGN_MESSAGE_PARA record.
DESC_CHAR_UNICODEJwaLmRemUtl.pas: Decides if the DESC_CHAR type is WideChar or Char.
FALSEJwaWinSock.pas, JwaWinsock2.pas, JwaWtsApi32.pas: Deactivates some types and alternative constants.
KOREAJwaIme.pas: Seems to be a Microsoft fix for korean IME
LIVE_SERVER_AT_DESIGN_TIMEJwaAdsTLB.pas: A standard generated IFDEF for TLBs.
LM_FORCE_UNICODEJwaLmCons.pas: Forces LM_USE_UNICODE to be set.
LM_USE_UNICODEJwaLmCons.pas: Secondary IFDEF from Windows version. Activates Unicode use (through LMSTR type) for the Lan Manager API.
LM20_WORKSTATION_STATISTICSJwaLmStats.pas: Switches the declaration of STAT_WORKSTATION_0 record.
LM_REVISED_CONFIG_APISJwaLmConfig.pas: Changes some function APIs. Defaults to activated.
MSGINA_IMPORTJwaWinWlx.pas: Switch to import MSGINA.DLL functions at all.
MSGINA1_0JwaWinWlx.pas: Service level MSGINA.DLL must provide
MSGINA1_1JwaWinWlx.pas: Service level MSGINA.DLL must provide
MSGINA1_3JwaWinWlx.pas: Service level MSGINA.DLL must provide
MSGINA1_4JwaWinWlx.pas: Service level MSGINA.DLL must provide
NEC_98JwaRegStr.pas: Microsoft switch for some constants obviously for a NEC computer which has a special EISA bus
SNMPSTRICTJwaSnmp.pas: Switches the function names from "SnmpUtil" prefix to older "SNMP_" prefix (other name parts often change also).
TESTING_MATCHING_ROUTINEJwaNtSecApi.pas: A deactivated test switch of Microsoft for LsaForestTrustFindMatch which is nonexistent
UNIXJwaDlgs.pas: Some constants IFDEFed for Unix only
WIN98ME_UP_EXCEPT_NT4JwaWinGDI.pas: Secondary IFDEF for local use