Technical Document #116

Technical Document #116
WinDriver PCI/ISA API Version Changes

In general, we strive to keep the WinDriver API backward compatible, in the sense that code developed with an earlier version can be ported to a newer version by simply rebuilding the code with the new header files and a new license string. In most cases old code should work without changes (except for the license string update) with the headers and driver from a newer version. However, in some cases we decided there are compelling reasons that justify changes to existing APIs. This document outlines such changes to the WinDriver PCI APIs made in different versions of WinDriver, and guides you in porting your old code to use the updated APIs.

  • Generic "PCI" references in this document include also PCI-Express, PCMCIA, and ISA.
  • This document is specific to the WinDriver PCI APIs. For WinDriver USB APIs upgrade information, refer to Technical Document #117.
  • This document is specific to required code updates in light changes to older API versions.
    We strongly recommend that you make additional code updates to utilize relevant API additions and enhancements that may have been made in the newer versions of WinDriver, as outlined in the WinDriver release notes and documented in the WinDriver PCI User's Manual of the new version.
    For full instructions on how to upgrade to a newer WinDriver version, refer to Technical Document #84.

Read the API changes information for all WinDriver versions that are newer from your current version:

WinDriver v11.8.0 PCI API Changes

In v11.8.0 we made the following changes to the WinDriver WDC PCI API and to the low-level WinDriver PCI API that it uses; the main purpose of these changes was to improve the support for 64-bit PCI addresses:

  • include/wdc_defs.h WDC type changes —
    • WDC_ADDR_DESC struct —
      • The kptAddr field was renamed to pAddr.
      • The dwBytes field was renamed to qwBytes, and its type changed from DWORD to UINT64.
      • The dwUserDirectMemAddress field was renamed to pUserDirectMemAddr.

  • include/windrvr.h low-level WinDriver type changes —
    • WD_TRANSFER struct changes —
      The WD API references this type, as well as the WD_INTERRUPT struct type — which has a Cmd field of type WD_TRANSFER*.

      • The dwPort field was renamed to pPort.

    • WD_ITEMS struct changes —
      The WDC API references the WD_CARD struct — which has an Item field that is an array of WD_ITEMS structs — and the WD_CARD_REGISTER struct — which has a Card field of type WD_CARD.

      • The dwOptions field was replaced with an I.Mem.dwOptions field.

      • I.Mem union struct field changes —
        • The dwPhysicalAddr field was renamed to pPhysicalAddr, and its type changed from DWORD to PHYS_ADDR.
        • The dwBytes field was renamed to qwBytes, and its type changed from DWORD to UINT64.
        • The dwTransAddr field was renamed to pTransAddr.
        • The dwUserDirectAddress field was renamed to pUserDirectAddr.
        • The reserved dwCpuPhysicalAddr field was removed.
        • A new pReserved field was added.

      • The I.Mem64 union struct field was removed.

      • I.IO union struct field changes —
        • The dwAddr field was renamed to pAddr.

      • I.Int union struct field changes —
        • New dwReserved1 and pReserved2 fields were added.

      • The I.Val union struct field was removed.

    • WD_ITEM_OPTIONS enum — the type was renamed to WD_ITEM_MEM_OPTIONS, and its WD_ITEM_XXX enum values were renamed to WD_ITEM_MEM_XXX.
      The WD_ITEMS struct's I.Mem.dwOptionsfield (previously the dwOptions field) receives values of this enum type.

    • The ITEM_TYPE enum's ITEM_MEMORY_64BIT enum value was removed.