Update of /cvsroot/okernel/nrtl/jayartl
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2282/jayartl
Modified Files:
jayartl.cpp jayartl.h
Log Message:
+ add dynamic loader features in the basic toolbox
Index: jayartl.h
===================================================================
RCS file: /cvsroot/okernel/nrtl/jayartl/jayartl.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** jayartl.h 6 Nov 2004 01:38:35 -0000 1.4
--- jayartl.h 6 Nov 2004 02:12:16 -0000 1.5
***************
*** 689,692 ****
--- 689,710 ----
// ----------------------------------------------------------------------------
+ // getErrorMessage
+ //
+ // NB: single-thread
+ // ----------------------------------------------------------------------------
+
+ jcstr_ansi JAYARTL_API getErrorMessage(void);
+
+ // ----------------------------------------------------------------------------
+ // Dynamic Module management
+ //
+ // NB: single-thread
+ // ----------------------------------------------------------------------------
+
+ jcstr_ansi JAYARTL_API dynloadOpen(jcstr_ansi aFilename,jpointer* aHandle);
+ jcstr_ansi JAYARTL_API dynloadClose(jpointer& aHandle);
+ jcstr_ansi JAYARTL_API dynloadSymbol(jpointer aHandle,jcstr_ansi aSymbol,jpointer* aPointer);
+
+ // ----------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// Be compatible with C++
Index: jayartl.cpp
===================================================================
RCS file: /cvsroot/okernel/nrtl/jayartl/jayartl.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** jayartl.cpp 6 Nov 2004 01:38:35 -0000 1.3
--- jayartl.cpp 6 Nov 2004 02:12:16 -0000 1.4
***************
*** 1051,1054 ****
--- 1051,1074 ----
// ============================================================================
// ============================================================================
+ // Error message
+ //
+ // NB: single-thread
+ //
+ // History
+ // 110x04 dgil Wrote it from scratch
+ // ============================================================================
+ // ============================================================================
+
+ jcstr_ansi JAYARTL_API getErrorMessage(void)
+ {
+ static jchar msg[1024];
+
+ ::FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, ::GetLastError(), 0, msg, sizeof(msg), 0);
+
+ return msg;
+ }
+
+ // ============================================================================
+ // ============================================================================
// DYNAMIC MODULE BUILT-IN SUPPORT
//
***************
*** 1058,1062 ****
// ============================================================================
! // ----------------------------------------------------------------------------
// ============================================================================
--- 1078,1123 ----
// ============================================================================
! jcstr_ansi JAYARTL_API dynloadOpen(jcstr_ansi aFilename,jpointer* aHandle)
! {
! jcstr_ansi rv = NULL;
!
! UINT oldErrorMode = ::SetErrorMode(0);
! ::SetErrorMode(oldErrorMode | SEM_FAILCRITICALERRORS);
!
! *aHandle = ::LoadLibrary(aFilename);
! ::SetErrorMode(oldErrorMode);
!
! if (!*aHandle) rv = getErrorMessage();
!
! return rv;
! }
!
! jcstr_ansi JAYARTL_API dynloadClose(jpointer& aHandle)
! {
! jcstr_ansi rv = NULL;
!
! UINT oldErrorMode = ::SetErrorMode(0);
! ::SetErrorMode(oldErrorMode | SEM_FAILCRITICALERRORS);
!
! if (::FreeLibrary(static_cast<HMODULE>(aHandle)) == 0) {
! rv = getErrorMessage();
! } else {
! aHandle = NULL;
! }
! ::SetErrorMode(oldErrorMode);
!
! return rv;
! }
!
! jcstr_ansi JAYARTL_API dynloadSymbol(jpointer aHandle,jcstr_ansi aSymbol,jpointer* aPointer)
! {
! jcstr_ansi rv = NULL;
!
! *aPointer = ::GetProcAddress(static_cast<HMODULE>(aHandle), aSymbol);
!
! if (aPointer==NULL) rv = getErrorMessage();
!
! return rv;
! }
// ============================================================================
|