Bitness-Conditional Code for DLLs with Different 32-bit Interfaces and 64-bit Interfaces

TestStand 2019 Help

Edition Date: May 2019

Part Number: 370052AA-01

»View Product Info
Download Help (Windows Only)

Function names and parameters can differ between the 32-bit version of an interface and the 64-bit version of an interface for a code module.

Parameter type differences might not be obvious because preprocessor macros can generate types. The C/C++ size_t type is a common example of a type that changes between the 32-bit version and the 64-bit version of a code module. size_t is a 32-bit unsigned integer in 32-bit DLLs and a 64-bit unsigned integer in 64-bit DLLs. TestStand treats 32-bit versions and 64-bit versions of prototypes that contain size_t parameters as distinct and cannot execute both instances from a single adapter step.

Create a 32-bit version of a step and a 64-bit version of a step and use the Engine.Is64Bit property to write conditional code to call code modules with dissimilar 32-bit versions and 64-bit versions from the same sequence. Use the !RunState.Engine.Is64Bit precondition in the 32-bit version of the step and use the RunState.Engine.Is64Bit precondition in the 64-bit version of the step to execute the version of the step that matches the bitness of TestStand. Alternatively, you can use the RunState.Engine.Is64Bit property in an If step to achieve similar results. Set both steps to load dynamically. If you preload the steps, the version of the step that does not match the bitness of TestStand fails to load and returns an error.

See Also

Bitness-Conditional Code for 32-bit TestStand or 64-bit TestStand


Not Helpful