Platform SDK: Win64 Programming Preview

Designing 64-bit-Compatible Interfaces

[This is preliminary documentation and subject to change.]

Porting from the 32-bit Windows platform to the 64-bit Windows platform should not, by itself, create any problems for distributed applications, whether they use Remote Procedure Calls (RPC) directly or through DCOM. The RPC programming model specifies well-defined data sizes and integer types that are the same size on each end of the connection. Also, in the LLP64 abstract data model developed for 64-bit versions of the Microsoft® Windows® operating system, only the pointers expand to 64 bits—all other integer data types remain 32 bits. Because pointers are local to each side of the client/server connection and are usually transmitted as NULL or non-NULL markers, the marshaling engine can handle different pointer sizes on either end of a connection transparently.

However, backward compatibility issues arise when you add new data types or methods to an interface, change old data types, or use data types inappropriately. The following topics discuss how to avoid these situations (when possible) and how to design robust workarounds when avoiding them is impossible.

If you are not already familiar with the new data types, working environment, and API changes for 64-bit Windows, see Getting Ready for 64-bit Windows. The topics in this section assume that you are familiar with the concepts presented in that section.