本文整理汇总了C++中DosQueryProcAddr函数的典型用法代码示例。如果您正苦于以下问题:C++ DosQueryProcAddr函数的具体用法?C++ DosQueryProcAddr怎么用?C++ DosQueryProcAddr使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了DosQueryProcAddr函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: hb_isWSeB
HB_BOOL hb_isWSeB( void )
{
static int s_iWSeB = -1;
if( s_iWSeB < 0 )
{
APIRET ret;
HMODULE hModule;
/* what is the suggested form? [druzus] */
#if 1
ret = DosQueryModuleHandle( ( PCSZ ) "DOSCALLS", &hModule );
#else
ret = DosLoadModule( NULL, 0, ( PCSZ ) "DOSCALL1", &hModule );
#endif
if( ret == NO_ERROR )
ret = DosQueryProcAddr( hModule, 981, NULL, ( PFN * ) &s_DosOpenL );
if( ret == NO_ERROR )
ret = DosQueryProcAddr( hModule, 986, NULL, ( PFN * ) &s_DosSetFileLocksL );
if( ret == NO_ERROR )
ret = DosQueryProcAddr( hModule, 988, NULL, ( PFN * ) &s_DosSetFilePtrL );
if( ret == NO_ERROR )
ret = DosQueryProcAddr( hModule, 989, NULL, ( PFN * ) &s_DosSetFileSizeL );
s_iWSeB = ret == NO_ERROR;
}
return s_iWSeB;
}
示例2: InitializeXPIStub
APIRET InitializeXPIStub()
{
char szBuf[MAX_BUF];
char szXPIStubFile[MAX_BUF];
hXPIStubInst = NULL;
/* get full path to xpistub.dll */
if(DosQueryPathInfo("xpistub.dll", sizeof(szXPIStubFile), szXPIStubFile, NULL) == FALSE)
PrintError("File not found: xpistub.dll", ERROR_CODE_SHOW, 2);
/* load xpistub.dll */
if((DosLoadModule(&szBuf, sizeof(szBuf), szXPIStubFile, &hXPIStubInst)) != NO_ERROR)
{
sprintf(szBuf, "Error loading library: %s\n", szXPIStubFile);
PrintError(szBuf, ERROR_CODE_SHOW, 1);
}
if((pfnXpiInit = DosQueryProcAddr(hXPIStubInst, 1L, NULL,"XPI_Init")) == NULL)
{
sprintf(szBuf, "DosQueryProcAddr() failed: XPI_Init\n");
PrintError(szBuf, ERROR_CODE_SHOW, 1);
}
if((pfnXpiInstall = DosQueryProcAddr(hXPIStubInst, 1L, NULL,"XPI_Install")) == NULL)
{
sprintf(szBuf, "DosQueryProcAddr() failed: XPI_Install\n");
PrintError(szBuf, ERROR_CODE_SHOW, 1);
}
if((pfnXpiExit = DosQueryProcAddr(hXPIStubInst, 1L, NULL,"XPI_Exit")) == NULL)
{
sprintf(szBuf, "DosQueryProcAddr() failed: XPI_Exit\n");
PrintError(szBuf, ERROR_CODE_SHOW, 1);
}
return(0);
}
示例3: _PR_MD_INIT_IO
void
_PR_MD_INIT_IO()
{
APIRET rc;
HMODULE module;
sock_init();
rc = DosLoadModule(NULL, 0, "DOSCALL1", &module);
if (rc != NO_ERROR)
{
return;
}
rc = DosQueryProcAddr(module, 981, NULL, (PFN*) &myDosOpenL);
if (rc != NO_ERROR)
{
return;
}
rc = DosQueryProcAddr(module, 986, NULL, (PFN*) &myDosSetFileLocksL);
if (rc != NO_ERROR)
{
return;
}
rc = DosQueryProcAddr(module, 988, NULL, (PFN*) &myDosSetFilePtrL);
if (rc != NO_ERROR)
{
return;
}
isWSEB = PR_TRUE;
}
示例4: File64bit
/*
* Initialize 64bit file access: dynamic load of WSeB API
*/
File64bit :: File64bit()
{
HMODULE hDoscalls;
if (DosQueryModuleHandle("DOSCALLS", &hDoscalls) != NO_ERROR)
return;
if (DosQueryProcAddr(hDoscalls, 981, NULL, (PFN *)&_DosOpenL) != NO_ERROR)
return;
if (DosQueryProcAddr(hDoscalls, 988, NULL, (PFN *)&_DosSetFilePtrL) != NO_ERROR) {
_DosOpenL = NULL;
return;
}
if (DosQueryProcAddr(hDoscalls, 986, NULL, (PFN *)&_DosSetFileLocksL) != NO_ERROR) {
_DosOpenL = NULL;
_DosSetFilePtrL = NULL;
return;
}
/* notify success */
#ifdef MYSQL_SERVER
printf( "WSeB 64bit file API loaded.\n");
#endif
}
示例5: InitSoftDebug
VOID InitSoftDebug(VOID)
{
// Create the thread creation event sem and load the queue hook DLL
DosCreateEventSem( NULL, &BeginThreadSem, 0, FALSE );
DosLoadModule( NULL, 0, HOOKER, &HookDLL );
DosQueryProcAddr( HookDLL, 0, "SendMsgHookProc", (PFN*)&PSendMsgHookProc );
DosQueryProcAddr( HookDLL, 0, "SetHmqDebugee", (PFN*)&PSetHmqDebugee );
}
示例6: memcpy
char *LoadTrap( const char *parms, char *buff, trap_version *trap_ver )
{
char trpfile[CCHMAXPATH];
unsigned len;
const char *ptr;
APIRET rc;
char trpname[CCHMAXPATH] = "";
char trppath[CCHMAXPATH] = "";
trap_init_func *init_func;
if( parms == NULL || *parms == '\0' )
parms = "std";
for( ptr = parms; *ptr != '\0' && *ptr != TRAP_PARM_SEPARATOR; ++ptr )
;
len = ptr - parms;
memcpy( trpfile, parms, len );
trpfile[len] = '\0';
/* To prevent conflicts with the 16-bit DIP DLLs, the 32-bit versions have the "D32"
* extension. We will search for them along the PATH (not in LIBPATH);
*/
strcpy( trpname, trpfile );
strcat( trpname, ".D32" );
_searchenv( trpname, "PATH", trppath );
if( trppath[0] == '\0' ) {
sprintf( buff, TC_ERR_CANT_LOAD_TRAP, trpname );
return( buff );
}
rc = DosLoadModule( NULL, 0, trppath, &TrapFile );
if( rc != 0 ) {
sprintf( buff, TC_ERR_CANT_LOAD_TRAP, trppath );
return( buff );
}
strcpy( buff, TC_ERR_WRONG_TRAP_VERSION );
if( DosQueryProcAddr( TrapFile, 1, NULL, (PFN*)&init_func ) == 0
&& DosQueryProcAddr( TrapFile, 2, NULL, (PFN*)&FiniFunc ) == 0
&& DosQueryProcAddr( TrapFile, 3, NULL, (PFN*)&ReqFunc ) == 0 ) {
if( DosQueryProcAddr( TrapFile, 4, NULL, (PFN*)&InfoFunc ) != 0 ) {
InfoFunc = NULL;
}
if( DosQueryProcAddr( TrapFile, 5, NULL, (PFN*)&HardFunc ) != 0 ) {
HardFunc = NULL;
}
parms = ptr;
if( *parms != '\0' )
++parms;
*trap_ver = init_func( parms, buff, trap_ver->remote );
if( buff[0] == '\0' ) {
if( TrapVersionOK( *trap_ver ) ) {
TrapVer = *trap_ver;
return( NULL );
}
strcpy( buff, TC_ERR_WRONG_TRAP_VERSION );
}
}
KillTrap();
return( buff );
}
示例7: USBProxyBackend
/**
* Initialize data members.
*/
USBProxyBackendOs2::USBProxyBackendOs2(USBProxyService *aUsbProxyService, const com::Utf8Str &strId)
: USBProxyBackend(aUsbProxyService, strId), mhev(NULLHANDLE), mhmod(NULLHANDLE),
mpfnUsbRegisterChangeNotification(NULL), mpfnUsbDeregisterNotification(NULL),
mpfnUsbQueryNumberDevices(NULL), mpfnUsbQueryDeviceReport(NULL)
{
LogFlowThisFunc(("aUsbProxyService=%p\n", aUsbProxyService));
/*
* Try initialize the usbcalls stuff.
*/
int rc = DosCreateEventSem(NULL, &mhev, 0, FALSE);
rc = RTErrConvertFromOS2(rc);
if (RT_SUCCESS(rc))
{
rc = DosLoadModule(NULL, 0, (PCSZ)"usbcalls", &mhmod);
rc = RTErrConvertFromOS2(rc);
if (RT_SUCCESS(rc))
{
if ( (rc = DosQueryProcAddr(mhmod, 0, (PCSZ)"UsbQueryNumberDevices", (PPFN)&mpfnUsbQueryNumberDevices)) == NO_ERROR
&& (rc = DosQueryProcAddr(mhmod, 0, (PCSZ)"UsbQueryDeviceReport", (PPFN)&mpfnUsbQueryDeviceReport)) == NO_ERROR
&& (rc = DosQueryProcAddr(mhmod, 0, (PCSZ)"UsbRegisterChangeNotification", (PPFN)&mpfnUsbRegisterChangeNotification)) == NO_ERROR
&& (rc = DosQueryProcAddr(mhmod, 0, (PCSZ)"UsbDeregisterNotification", (PPFN)&mpfnUsbDeregisterNotification)) == NO_ERROR
)
{
rc = mpfnUsbRegisterChangeNotification(&mNotifyId, mhev, mhev);
if (!rc)
{
/*
* Start the poller thread.
*/
rc = start();
if (RT_SUCCESS(rc))
{
LogFlowThisFunc(("returns successfully - mNotifyId=%d\n", mNotifyId));
mLastError = VINF_SUCCESS;
return;
}
}
LogRel(("USBProxyServiceOs2: failed to register change notification, rc=%d\n", rc));
}
else
LogRel(("USBProxyServiceOs2: failed to load usbcalls\n"));
DosFreeModule(mhmod);
}
else
LogRel(("USBProxyServiceOs2: failed to load usbcalls, rc=%d\n", rc));
mhmod = NULLHANDLE;
}
else
mhev = NULLHANDLE;
mLastError = rc;
LogFlowThisFunc(("returns failure!!! (rc=%Rrc)\n", rc));
}
示例8: if
bool XIOfile64::supported()
{ if (!checked64)
{ HMODULE hmod;
if ( DosQueryModuleHandle("DOSCALLS", &hmod) == NO_ERROR
&& DosQueryProcAddr(hmod, 981, NULL, (PFN*)&pOpen) == NO_ERROR
&& DosQueryProcAddr(hmod, 988, NULL, (PFN*)&pSetFilePtr) == NO_ERROR
&& DosQueryProcAddr(hmod, 989, NULL, (PFN*)&pSetFileSize) == NO_ERROR )
support64 = true;
checked64 = true;
}
return support64;
}
示例9: LoadOverlay
// Just put DLL loading into separate function
static BOOL LoadOverlay(void)
{
char szTempStr[ 255 ];
// Load WarpOverlay! API DLL
if( DosLoadModule( szTempStr, sizeof( szTempStr ), "hwvideo", &m_HWVideoHandle ))
return FALSE;
// Get all functions entry points
if( DosQueryProcAddr( m_HWVideoHandle, 0, "HWVIDEOInit", ( PFN * )&m_pfnHWVIDEOInit ))
return FALSE;
if( DosQueryProcAddr( m_HWVideoHandle, 0, "HWVIDEOCaps", ( PFN * )&m_pfnHWVIDEOCaps ))
return FALSE;
if( DosQueryProcAddr( m_HWVideoHandle, 0, "HWVIDEOSetup", ( PFN * )&m_pfnHWVIDEOSetup ))
return FALSE;
if( DosQueryProcAddr( m_HWVideoHandle, 0, "HWVIDEOBeginUpdate", ( PFN * )&m_pfnHWVIDEOBeginUpdate ))
return FALSE;
if( DosQueryProcAddr( m_HWVideoHandle, 0, "HWVIDEOEndUpdate", ( PFN * )&m_pfnHWVIDEOEndUpdate ))
return FALSE;
if( DosQueryProcAddr( m_HWVideoHandle, 0, "HWVIDEOGetAttrib", ( PFN * )&m_pfnHWVIDEOGetAttrib ))
return FALSE;
if( DosQueryProcAddr( m_HWVideoHandle, 0, "HWVIDEOSetAttrib", ( PFN * )&m_pfnHWVIDEOSetAttrib ))
return FALSE;
if( DosQueryProcAddr( m_HWVideoHandle, 0, "HWVIDEOClose", ( PFN * )&m_pfnHWVIDEOClose ))
return FALSE;
return TRUE;
}
示例10: DosQueryProcAddr
static void *os2DlSym(sqlite3_vfs *pVfs, void *pHandle, const char *zSymbol){
PFN pfn;
APIRET rc;
rc = DosQueryProcAddr((HMODULE)pHandle, 0L, zSymbol, &pfn);
if( rc != NO_ERROR ){
/* if the symbol itself was not found, search again for the same
* symbol with an extra underscore, that might be needed depending
* on the calling convention */
char _zSymbol[256] = "_";
strncat(_zSymbol, zSymbol, 255);
rc = DosQueryProcAddr((HMODULE)pHandle, 0L, _zSymbol, &pfn);
}
return rc != NO_ERROR ? 0 : (void*)pfn;
}
示例11: find_id
/* return a pointer to the `symbol' in DLL */
void *dlsym(void *handle, char *symbol)
{
int rc = 0;
PFN addr;
char *errtxt;
int symord = 0;
DLLchain tmp = find_id(handle);
if (!tmp)
goto inv_handle;
if (*symbol == '#')
symord = atoi(symbol + 1);
switch (rc = DosQueryProcAddr(tmp->handle, symord, symbol, &addr))
{
case NO_ERROR:
return (void *)addr;
case ERROR_INVALID_HANDLE:
inv_handle:
errtxt = "invalid module handle";
break;
case ERROR_PROC_NOT_FOUND:
case ERROR_INVALID_NAME:
errtxt = "no symbol `%s' in module";
break;
default:
errtxt = "symbol `%s', error code = %d";
break;
}
snprintf(dlerr, sizeof(dlerr), errtxt, symbol, rc);
return NULL;
}
示例12: DrvMountDrivesThread
void DrvMountDrivesThread( void * hev)
{
ULONG rc;
HMODULE hmod = 0;
pRediscover_PRMs pfn = 0;
char * pErr = 0;
char szErr[16];
rc = DosLoadModule( szErr, sizeof(szErr), "LVM", &hmod);
if (rc)
pErr = "DosLoadModule";
else {
rc = DosQueryProcAddr( hmod, 0, "Rediscover_PRMs", (PFN*)&pfn);
if (rc)
pErr = "DosQueryProcAddr";
else {
pfn( &rc);
if (rc)
pErr = "Rediscover_PRMs";
}
rc = DosFreeModule( hmod);
if (rc && !pErr)
pErr = "DosFreeModule";
}
if (pErr)
printf( "DrvMountDrivesThread - %s - rc= %lx\n", pErr, rc);
rc = DosPostEventSem( (HEV)hev);
if (rc)
printf( "DrvMountDrivesThread - DosPostEventSem - rc= %lx\n", rc);
return;
}
示例13: strdup
void *GetProcAddress (HMODULE hmod, const char *symbol) {
void *addr = NULL;
PFN ModuleAddr = 0;
APIRET rc = 0;
HMODULE hmod3 = *hmod2;
//HMODULE hmod3 = hmod;
std::cerr << "DosQueryProcAddr " << symbol << " from module hmod3: " << hmod2 << std::endl;
char *symbol3 = strdup(symbol);
//std::cerr << "DosQueryProcAddr (2) " << symbol2 << " from module hmod3: " << hmod2 << std::endl;
/* Load DLL and get hmod with DosLoadModule*/
/* Get address for process in DLL */
rc = DosQueryProcAddr(hmod3, 0, (PSZ )symbol3, &ModuleAddr);
/*
return codes:
0 NO_ERROR
6 ERROR_INVALID_HANDLE
123 ERROR_INVALID_NAME
182 ERROR_INVALID_ORDINAL
65079 ERROR_ENTRY_IS_CALLGATE (this error code is not valid in OS/2 Warp PowerPC Edition)
*/
if(rc) {
// error;
#if defined(_OS2_LIBDEBUG)
std::cerr << "DosQueryProcAddr of " << symbol << " from module at " << hmod2 << " failed. " << " (ret code: " << rc << ")" << std::endl;
#endif
} else {
addr = (void *)ModuleAddr;
#if defined(_OS2_LIBDEBUG)
std::cerr << "DosQueryProcAddr " << symbol << " from module at " << hmod2 << " succeeded (addr: " << &ModuleAddr << " ). " << std::endl;
#endif
}
return addr;
}
示例14: _catcher
/* *************************************************************** */
void _catcher(bundle s)
{
char msg[512];
char *b[4];
HMODULE hmod;
PFNWP DlgProc;
int c = 0,
bx = 0;
if (msgHead != NULL) {
for (msg[0] = '\0'; *msgHead != NULL; ++msgHead) strcat(msg,*msgHead);
b[bx++] = msg;
c = strlen(msg) + 1;
}
for (msg[c] = '\0'; *s != NULL; ++s) strcat(&msg[c],*s);
b[bx++] = &msg[c];
b[bx++] = "Application will terminate now";
b[bx] = NULL;
if (DosLoadModule(NULL, 0, "GPRTS", &hmod) ||
DosQueryProcAddr(hmod, 0, "DlgProc", (PFN *)&DlgProc))
WinMessageBox(HWND_DESKTOP, HWND_DESKTOP,
"Unable to load error message","GPM Fatal Error",
0, MB_ICONHAND | MB_OK);
else {
WinAlarm(HWND_DESKTOP, WA_ERROR);
WinDlgBox(HWND_DESKTOP, HWND_DESKTOP, DlgProc, hmod, GPRTS_DLG, b);
DosFreeModule(hmod);
}
DosExit(EXIT_PROCESS, 0);
}
示例15: InstallPort
BOOL InstallPort(void)
{
//APIRET APIENTRY SplPdInstallPort(HAB hab,PSZ pszPortName)
PFN pfnProcess;
APIRET rc;
sprintf(szMessage,"Installing %s",szPortName);
PrintString(szMessage,3);
if (hMod != 0)
{
if (DosQueryProcAddr(hMod,0,"SPLPDINSTALLPORT",&pfnProcess) == NO_ERROR)
rc = pfnProcess(habAnchorBlock,szPortName);
else
{
ErrorNotify("Error Getting INSTALLPORT Address");
return(FALSE);
}
}
else
{
sprintf(szMessage,"Error Loading Module %s",szModuleName);
ErrorNotify(szMessage);
return(FALSE);
}
if (rc != NO_ERROR)
{
sprintf(szMessage,"Error Installing Port - rc = %X",rc);
ErrorNotify(szMessage);
return(FALSE);
}
sprintf(szMessage,"Port %s Installed",szPortName);
PrintString(szMessage,4);
return(TRUE);
}