Vermeiden von Polymorphismus
Die neuen Datentypen umfassen zwei polymorphe Typen, INT_PTR und LONG_PTR. Unter 32-Bit-Windows wird die INT_PTRint und die LONG_PTR long zugeordnet. Unter 64-Bit-Windows werden beide Typen dem systeminternen __int64 zugeordnet. Der MIDL-Compiler unterstützt diese Typen für Remoteprozeduraufrufe, aber es gibt eine inhärente Einschränkung, die Sie beachten müssen, wenn Sie sie in einer verteilten Umgebung verwenden. Achten Sie darauf, Ihren Code entsprechend zu kommentieren.
Unabhängig von der Plattformgröße beträgt die Drahtgröße dieser polymorphen Typen immer 32 Bit. Beim Aufheben desMarmarshalings unter 64-Bit-Windows erweitert das Laufzeitbibliothekszeichen signierte Werte und weist den Großbytes null für einen Wert ohne Vorzeichen zu. Wenn Sie einen 64-Bit-Wert auf die Leitung setzen, wird die Laufzeit die großformatigen Bytes abgeschnitten. Daher sind nur die niedrigwertigen 32-Bit-Werte verwendbar.
Verwenden Sie die polymorphen Typen nur, wenn dies für die Portierung erforderlich ist. Verwenden Sie für neue Schnittstellen die systeminternen ganzzahligen MIDL-Typen __int32 und __int64, oder verwenden Sie einen Zeigertyp oder ein Kontexthandle, je nachdem, was für die Art der übertragenen Daten am besten geeignet ist.
Der 64-Bit-Compiler unterstützt eine neue polymorphe systeminterne __int3264. Auch dieser Typ wurde entwickelt, um Portierungsbemühungen zu unterstützen, in diesem Fall, um die UINT_PTR Typen transparent zu unterstützen. (Ein anderer systeminterner __long3264 unterstützt den ULONG_PTR-Typ .) Verwenden Sie __int3264 nicht direkt. Verwenden Sie den INT_PTR-Typ , wenn Sie aus Portierungsgründen einen polymorphen Typ benötigen.