Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
The SAE J2534 standard has been a cornerstone for vehicle diagnostic interfaces since 2002, originally targeting 32-bit Microsoft Windows. As computing platforms have evolved, the automotive industry now requires support for 64-bit Windows and other operating systems. This article explores the key specifications of SAE J2534-5-2022, which defines the requirements for API Version 05.00 on alternate platforms and allows seamless switching between API versions.
Using the rationale from the standard: “The automotive industry needs to be able to select the platform that best suits their needs, without having to define an entirely new interface.” As vehicles become increasingly complex, maintaining and repairing them requires up-to-date diagnostic tools. By extending the Pass-Thru interface to alternate platforms, the standard ensures that diagnostic applications can operate across a broader range of hardware and software environments.
Moving from a 32-bit to a 64-bit architecture requires careful handling of data types to preserve memory layout and API compatibility. SAE J2534-5-2022 provides explicit type mappings from WIN32 to WIN64, as shown in the table below. This ensures that pointers and integer types maintain consistent sizes across platforms.
| WIN32 Type | WIN64 Type |
|---|---|
| char * | uint8_t * |
| unsigned char | uint8_t |
| unsigned char * | uint8_t * |
| integer | int32_t |
| integer * | int32_t * |
| unsigned integer | uint32_t |
| unsigned integer * | uint32_t * |
| long | int32_t |
| long * | int32_t * |
| unsigned long | uint32_t |
| unsigned long * | uint32_t * |
For 64-bit Windows, the standard defines a specific registry path under HKEY_LOCAL_MACHINE. The DLL file must be named according to the architecture (e.g., pass-thru_x64.dll) and placed in the appropriate system directory. An export library definition file (.def) is required to expose the necessary functions. Refer to the standard for the exact registry keys and values.
Section 5 of J2534-5-0500 points to SAE J2534-2/BA_0500 for details on switching platforms or API versions with the same Pass-Thru interface. This mechanism enables applications to support multiple API versions without recompiling, as long as the version negotiation is correctly implemented. Developers should consult that document for the precise protocol.
Use the type mapping table provided in the standard. For example, char* becomes uint8_t*, and long* becomes int32_t*. The key is to use fixed-width types to ensure portability across platforms.
On 64-bit Windows, the registry keys are stored under HKEY_LOCAL_MACHINESOFTWAREWOW6432Node... or a dedicated path as specified in the standard. Always refer to the latest standard for exact key locations.
Yes, the standard is designed so that 32-bit applications can continue to use a 32-bit DLL on 64-bit Windows via WoW64. The 64-bit DLL serves native 64-bit applications.
No, you must build separate DLLs for each architecture. The API structures may have different sizes due to pointer width, so recompilation under the target platform is essential.
For complete details, refer to SAE J2534-5_0500 (Issued 2022-01).