Modificador /osf
El modificador /osf fuerza una compatibilidad estricta con OSF DCE.
midl /osf
Este modificador no tiene parámetros.
Use este modificador si la aplicación requiere una compatibilidad estricta con OSF DCE por motivos de portabilidad.
En el modo /osf , el paquete RpcSs se habilita automáticamente cuando se usan punteros completos, los argumentos requieren asignación de memoria o cuando se usa el atributo enable_allocate . Esto significa que no es necesario proporcionar las funciones de midl_user_allocate y midl_user_free en la aplicación cliente y servidor.
Las siguientes características extendidas por Microsoft no están disponibles al compilar con el modificador /osf :
- Declaradores abstractos (parámetros sin nombre) en el archivo IDL.
- Definiciones de interfaz para objetos COM.
- Nombres de interfaz con más de 17 caracteres.
- Atributos de solo MIDL, como wire_marshal, user_marshal y las extensiones typelib (ODL).
- Uso de palabras clave ACF en un archivo IDL (la opción /app_config MIDL).
- Funciones de devolución de llamada estáticas en el cliente.
- Atributo asincrónico .
- cpp_quote y #pragma midl_echo.
- wchar_t tipos de caracteres anchos, constantes y cadenas.
- inicialización de enumeración (enumeradores dispersos).
- especificación de tamaño de solo salida.
- Punteros de tamaño mixto y matrices de tamaño mixto.
- Expresiones usadas para especificadores de tamaño y discriminador.
- Parámetros de identificador explícitos en cualquier posición de la lista de argumentos. En el modo /osf , el compilador MIDL busca un identificador de enlace explícito como primer parámetro. Cuando el primer parámetro no es un identificador de enlace y se especifican uno o varios identificadores de contexto, el identificador de contexto más a la izquierda se usa como identificador de enlace. Cuando el primer parámetro no es un identificador y no hay ningún identificador de contexto, el procedimiento usa el enlace implícito mediante el atributo ACF implicit_handle o auto_handle.
- Herencia de tipos de atributo de puntero. OSF DCE no permite punteros no distribuidos. Por lo tanto, en el modo /osf , cada archivo IDL debe definir atributos para sus punteros. Si algún puntero no tiene un atributo explícito, el archivo IDL debe tener una especificación de pointer_default para establecer el tipo de puntero.
- Varias interfaces en un archivo IDL.
- Definiciones fuera del bloque de interfaz.
- Calificadores de tipo como far y stdcall.
- Omitir atributos direccionales.
Las siguientes extensiones de lenguaje C/C++ no están disponibles al compilar con el modificador /osf :
- Campos de bits en estructuras y uniones.
- Comentarios de una sola línea delimitados con dos caracteres de barra diagonal (//).
- Declaraciones externas.
- Procedimientos con puntos suspensivos en la lista de parámetros.
- Escriba int.
- Escriba void * (excepto con el atributo context_handle ).
- Los calificadores de tipo, incluido el formulario con el prefijo conforme a ANSI, contienen dos caracteres de subrayado: __cdecl, cdecl, const, const, __export, export, __far, far, __loadds, loadds, __near, near, __pascal, pascal, __stdcall, stdcall, __volatile y volatile.
- Cualquier advertencia #pragma o #pragma comentario.
- Serialización de tipos.
- Tipo de datos __int3264 .
- Modificador /protocol y sintaxis de transferencia ndr64.
midl /osf filename.idl
midl /osf /app_config filename.idl