Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#include "std.h"
PLIBRARY_DESCRIPTOR lhclLoadLibrary(PCWSTR pcszPathName) { PLIBRARY_DESCRIPTOR pResult = malloc( sizeof(LIBRARY_DESCRIPTOR));
if (NULL==pResult) { goto NoStructure; }
pResult->m_hModule = LoadLibraryW( pcszPathName);
if (NULL==pResult->m_hModule) { goto NoLibrary; }
pResult->m_fpOpen = (PLHC_OPENPROC)GetProcAddress( pResult->m_hModule, "lhcOpen");
if (NULL==pResult->m_fpOpen) { goto Error; }
pResult->m_fpClose = (PLHC_CLOSEPROC)GetProcAddress( pResult->m_hModule, "lhcClose");
if (NULL==pResult->m_fpClose) { goto Error; }
pResult->m_fpRead = (PLHC_READPROC)GetProcAddress( pResult->m_hModule, "lhcRead");
if (NULL==pResult->m_fpRead) { goto Error; }
pResult->m_fpWrite = (PLHC_WRITEPROC)GetProcAddress( pResult->m_hModule, "lhcWrite");
if (NULL==pResult->m_fpWrite) { goto Error; }
pResult->m_fpGetLibraryName = (PLHC_GETLIBRARYNAMEPROC)GetProcAddress( pResult->m_hModule, "lhcGetLibraryName");
if (NULL==pResult->m_fpGetLibraryName) { goto Error; }
return pResult;
Error: FreeLibrary( pResult->m_hModule); NoLibrary: free( pResult); NoStructure: return FALSE; }
void lhclFreeLibrary(PLIBRARY_DESCRIPTOR pLibrary) { if (pLibrary!=NULL) { if (pLibrary->m_hModule!=NULL) { FreeLibrary( pLibrary->m_hModule); } free( pLibrary); } }
PLHCOBJECT_DESCRIPTOR lhclOpen( PLIBRARY_DESCRIPTOR pLibrary, PCWSTR pcszPortSpec) { return pLibrary->m_fpOpen( pcszPortSpec); }
BOOL lhclRead( PLIBRARY_DESCRIPTOR pLibrary, PLHCOBJECT_DESCRIPTOR pObject, PVOID pBuffer, DWORD dwBufferSize, PDWORD pdwBytesRead) { return pLibrary->m_fpRead( pObject, pBuffer, dwBufferSize, pdwBytesRead); }
BOOL lhclWrite( PLIBRARY_DESCRIPTOR pLibrary, PLHCOBJECT_DESCRIPTOR pObject, PVOID pBuffer, DWORD dwBufferSize) { return pLibrary->m_fpWrite( pObject, pBuffer, dwBufferSize); }
BOOL lhclClose( PLIBRARY_DESCRIPTOR pLibrary, PLHCOBJECT_DESCRIPTOR pObject) { return pLibrary->m_fpClose( pObject); }
DWORD lhclGetLibraryName( PLIBRARY_DESCRIPTOR pLibrary, PWSTR pszBuffer, DWORD dwBufferSize) { return pLibrary->m_fpGetLibraryName( pszBuffer, dwBufferSize); }
|