Hi All,
PB engineering has confirmed that this was an intentional change in PB 12.6 but unfortunately was not included in the documentation.
Below is what I heard back from engineering on CR 777799 that I opened for a different customer experiencing this issue.
When you use a structure or structure array as an external function, in the old version of PowerBuilder, the structure member alignment was one byte. With Windows API and Visual C++ default option(in PB 12.6), the structure member alignment is 8 bytes. You must add some padding member in your structure definition. For x64 applications, the problem becomes more serious as the length of the pointer is 8 bytes. To work around this engineering changed the structure member alignment to 8 bytes for PB126 for both x64 and x32 applications. This is an intentional behavior change. Customers may need to make some changes for some special cases with their external function call, but they can call Window API more easily and use same code for both x64 and x32 applications.
A fix that enables two workarounds to switch to the pre-PB 12.6 behavior has been implemented as a result of CR 777799. I do not know when an EBF with this fix will be available to customers as it was just recently implemented.
Pat Steinhardt