
Sample Add-in  Module Code
| DLFunctionTable.Authenticate | = DL_Authenticate; | 
| DLFunctionTable.DbOpen | = DL_DbOpen; | 
| DLFunctionTable.DbClose | = DL_DbClose; | 
| DLFunctionTable.DbCreate | = DL_DbCreate; | 
| DLFunctionTable.DbDelete | = DL_DbDelete; | 
| DLFunctionTable.DbImport | = DL_DbImport; | 
| DLFunctionTable.DbExport | = DL_DbExport; | 
| DLFunctionTable.DbSetRecordParsingFunctions = | |
| DL_DbSetRecordParsingFunctions; | 
 | 
| DLFunctionTable.DbGetRecordParsingFunctions = | |
| DL_DbGetRecordParsingFunctions; | 
 | 
| DLFunctionTable.GetDbNameFromHandle = DL_GetDbNameFromHandle; | |
| DLFunctionTable.DataInsert | = DL_DataInsert; | 
| DLFunctionTable.DataDelete | = DL_DataDelete; | 
| DLFunctionTable.DataGetFirst | = DL_DataGetFirst; | 
| DLFunctionTable.DataGetNext | = DL_DataGetNext; | 
DLFunctionTable.DataAbortQuery = DL_DataAbortQuery;
DLFunctionTable.FreeUniqueRecord = DL_FreeUniqueRecord;
DLFunctionTable.PassThrough = DL_PassThrough;
/* Register with CSSM and retrieve memory management function pointers */
return ((REGISTER_FUNC_PTR)cssmRegister)(&my_addin_guid, &DLRegInfo, &DLMemoryFunctions, NULL);
}
CSSM_RETURN dl_DeregisterServices ()
{ return ((DE_REGISTER_FUNC_PTR)cssmDeregister)(&my_addin_guid); }
* Name: DL_Initialize
| Appendix C | 95 | 
