Restrictions for developing a user mapping plug-in (C programming language)
When you develop user mapping plugs-in in C, keep these restrictions in mind.
- C-linkage
- The plug-in library must be linked with C-linkage. Header files that provide the prototypes, data structures needed to implement the plug-in, and error code definitions are provided for C/C++ only. Functions that will be resolved at load time must be declared with extern "C" if the plug-in library is compiled as C++.
- .NET common language runtime is not supported
- The .NET common language runtime (CLR) is not supported for compiling and linking the source code for the plug-in library.
- Signal handlers
- The plug-in library must not install signal handlers or change the signal mask because doing so interferes with the reporting and recovering from errors. The plug-in library must never raise C++ exceptions.
- Thread-safe
- The plug-in library must be thread-safe and re-entrant. Only the plug-in initialization is not required to be re-entrant. The plug-in initialization function can potentially be called multiple times from different threads, in which case, the plug-in cleans up all used resources and reinitializes itself.
- Overriding standard C library and operating system calls
- The plug-in library must not override standard C library and operating system calls.
- 32-bit and 64-bit applications
- A 32-bit federated server must use a 32-bit plug-in. A 64-bit federated server must use a 64-bit plug-in. In a hybrid instance, where the client is 32-bit and the server is 64-bit, the plug-in must be 64-bit.
- Text strings
- Input strings are not guaranteed to be null-terminated, and output strings are not required to be null-terminated. Instead, integer lengths are given for all input strings, and pointers to integers are given for lengths to be returned.