Compartir a través de


Evitar polimorfismo

Los nuevos tipos de datos incluyen dos tipos polimórficos, INT_PTR y LONG_PTR. En Windows de 32 bits, el INT_PTR se asigna a int y el LONG_PTR se asigna a long. En Windows de 64 bits, ambos tipos se asignan al tipo intrínseco __int64 . El compilador MIDL admite estos tipos para las llamadas a procedimientos remotos, pero hay una limitación inherente que debe tener en cuenta al usarlos en un entorno distribuido. Asegúrese de comentar el código en consecuencia.

Independientemente del tamaño de la plataforma, el tamaño del cable de estos tipos polimórficos siempre es de 32 bits. Al desacoplar en Windows de 64 bits, el signo de la biblioteca en tiempo de ejecución extiende los valores firmados y asigna cero a los bytes de orden superior para un valor sin signo. Al colocar un valor de 64 bits en la conexión, el tiempo de ejecución trunca los bytes de orden superior. Por lo tanto, solo se pueden usar los valores de 32 bits de orden bajo.

Use los tipos polimórficos solo cuando sea necesario para la portabilidad. Para las nuevas interfaces, use los tipos enteros intrínsecos MIDL __int32 y __int64, o use un tipo de puntero o un identificador de contexto, lo que sea más adecuado para el tipo de datos que se transfieren.

El compilador de 64 bits admite un nuevo __int3264 intrínseco polimórfico. De nuevo, este tipo se desarrolló para admitir los esfuerzos de portabilidad, en este caso para admitir los tipos de UINT_PTR de forma transparente. (Otro intrínseco, __long3264, admitirá el tipo ULONG_PTR ). No utilice __int3264 directamente; use el tipo INT_PTR cuando necesite un tipo polimórfico por motivos de portabilidad.