The following example shows you how to use the entry points when creating a KcsIO derivative.
/* External loadable interface */
extern "C"
extern long KcsDLOpenIOCount;
KcsStatus KcsInitIO();
KcsIO *KcsCreateIO(KcsStatus *aStatus,
const KcsProfileDesc *aDesc);
KcsStatus KcsCleanupIO();
//Loadable stuff
//external DL open count to support runtime derivation
extern long KcsDLOpenIOCount = 0;
/* Runtime derivable routine */
KcsIO *
KcsCreateIO(KcsStatus *aStat, const KcsProfileDesc *Desc)
{
//Create the new derivative
return(new KcsSolarisFile(aStat,
aDesc->desc.solarisFile.fileName, aDesc->desc.solarisFile.hostName,
aDesc->desc.solarisFile.oflag, aDesc->desc.solarisFile.mode);
}
KcsStatus
KcsInitIO(long libMajor, long libMinor, long *myMajor, long *myMinor)
{
// Set up the return values
*myMajor = KCS_MAJOR_VERSION;
*myMinor = KCS_MINOR_VERSION;
//Check the major version
if (libMajor != KCS_MAJOR_VERSION)
return (KCS_CMM_MAJOR_VERSION_MISMATCH);
//Currently, if minor version of library is less than the KCMS
// minor version, return an error.
if (libMinor != KCS_MINOR_VERSION)
return (KCS_CMM_MINOR_VERSION_MISMATCH);
//Library guarantees if your minor version number is greater than
//KCMS minor version number, it will handle it. No more init.
return(KCS_SUCCESS);
}
KcsStatus KcsCleanupIO()
{
/* Clean up is performed in the destructor */
return (KCS_SUCCESS);
}