内に含まその他のドキュメントサポート リソース | PDF 文書ファイルをダウンロードする (257 KB)
Chapter 4 KcsIO DerivativeIn This ChapterThis chapter discusses the following topics to help you create a KcsIO class derivative that is dynamically loadable at runtime:
Figure 4-1 shows the relationship of the KcsIO class to the parent classes in the KCMS class hierarchy. See Figure 1-2 for an illustration of all the relevant KCMS classes. Figure 4-1 KcsIO Derivative
External Entry PointsThe KCMS framework uses external entry points to load your derivative as an executable. The mandatory and optional entry points are described. MandatoryWhen you derive from a KcsIO class, the mandatory external entry points are:
The KcsCreateIO() method creates an instance of a KcsIO derivative. The instance is determined by aDesc->type, which contains the derivative portion of the class identifier (see "Creating OWconfig File Entries"). OptionalWhen you derive from a KcsIO class, the optional external entry points are:
ExampleThe following example shows you how to use the entry points when creating a KcsIO derivative. Example 4-1 KcsIO Class Entry Points Example/* 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);
}
Member Function Override RulesThe following table tells you which KcsIO member functions you must override and can override when deriving from this class. The member functions indicated with an "X" in the Must column are required to successfully derive from this base class. All of these member functions are defined in the kcsio.h header file and the KCMS CMM Reference Manual. Table 4-1 KcsIO Member Function Override Rules
Examples To Help You Create Your KcsIO DerivitaveThe KcsSolarisFile class is a derivative of the KcsIO class. You can use any of the KcsSolarisFile files (or any of the other KcsIO derivatives) as good sources of example code for creating your KcsIO derivative. You can find the files on-line in /usr/opt/SUNWddk/kcms/src. The kcssolfi.cc and kcssolfi.h files in this directory are actual SunSoft source code that supports enhanced file access on Solaris. This source code is directly tied into the kcstypes.h header file. The kcssolfitest.h header file explains how to include this derivative without changing the KCMS header file. |
|||||||||||||||||||||||||||||||||||||