//****************************************************************************** //****************************************************************************** BOOL OSS16_AttachToPdd() { // Attach to the 32 bits OSS driver if(DevHelp_AttachDD((NPSZ)"SBLIVE2$",(NPBYTE)&IDCTable)) { return FALSE; } return (BOOL) CallOSS32(IDC32_INIT, 0, (ULONG)(VOID FAR *)OSSIDC_ENTRY, 0, 0, 0); }
static BOOL CheckHCDDriversLoaded( PSZ cmdLine, USHORT start, USHORT end ) { PSZ drvNameChar=cmdLine+start; BOOL loaded = FALSE; //LR0904 was = TRUE USHORT charIndex=0; CHAR nChar; gHCDDriverName[sizeof(gHCDDriverName)-1]=0; if (*(cmdLine+start)=='(' && end>0 && *(cmdLine+end-1)==')') { // ignore enclosing braces start++; end--; end--; } for (;start<=end; start++) { nChar=*(cmdLine+start); if (nChar!=',' && nChar && nChar!=' ') { // fill in driver's name separated by ',' if (charIndex<sizeof(gHCDDriverName)-1) { if (!charIndex) setmem(gHCDDriverName,' ',sizeof(gHCDDriverName)-1); gHCDDriverName[charIndex]=nChar; charIndex++; } } if (nChar==',' || start==end) // process name when separator reached or on last character { charIndex=0; // check if driver loaded if (!DevHelp_AttachDD (gHCDDriverName, (NPBYTE)&gDDTable)) //LR0904 ! added { loaded = TRUE; //LR0904 was = FALSE break; } } } return (loaded); }
void JOYInit() { KeyData keyData[2] = {"V", CFSTR_TYPE_DEC, 0, 0, "DEVICE:", CFSTR_TYPE_DEC, 0, 0}; PSZ kbdCmdLine; ULONG cmdRStatus, errColumn; USHORT cmdRc, i; #ifdef DEBUG dsPrint (DBG_HLVLFLOW, "USBJOY: Init Entry\r\n"); #endif pRP->Status = STATUS_DONE; if (ghDriver) return; // initialization already passed Device_Help = ((PRPINITIN)pRP)->DevHlpEP; // save DevHlp Entry Point kbdCmdLine = (PSZ)MAKEP (SELECTOROF (((PRPINITIN)pRP)->InitArgs), OFFSETOF (((PRPINITIN)pRP)->InitArgs)); cmdRStatus = ProcessConfigString (kbdCmdLine, 2, (KeyData FAR *)&keyData); cmdRc = LOUSHORT (cmdRStatus); errColumn = (ULONG)HIUSHORT (cmdRStatus); switch (cmdRc) { case CFSTR_UNKWN_KEYS: SetLongValue (gVMessages[INIT_MESSAGE_UNKNOWNKWD], errColumn); gMessageCount = AddToMsgArray (gMessageIDs, INIT_MESSAGE_UNKNOWNKWD, gMessageCount, MAX_INIT_MESSAGE_COUNT); break; case CFSTR_CONVERR: SetLongValue (gVMessages[INIT_MESSAGE_INVNUMERIC], errColumn ); gMessageCount = AddToMsgArray (gMessageIDs, INIT_MESSAGE_INVNUMERIC, gMessageCount, MAX_INIT_MESSAGE_COUNT); } gVerbose = (BYTE)(keyData[0].keyStatus != CFSTR_STATUS_NOTFOUND); if (keyData[1].keyStatus == CFSTR_STATUS_OK) gDevice = (keyData[1].value < MAX_JOYS)? (BYTE)keyData[1].value : (BYTE)NULL; else gDevice = NULL; if (DevHelp_AttachDD ("USBHID$ ", (NPBYTE)&gIDCTable)) // obtain USBHID's IDC entry point { pRP->Status |= STERR; gMessageCount = AddToMsgArray (gMessageIDs, INIT_MESSAGE_NO_HID, gMessageCount, MAX_INIT_MESSAGE_COUNT); #ifdef DEBUG dsPrint (DBG_HLVLFLOW, "USBJOY: Init Faild to Attach to USBHID$ \r\n"); #endif } else { gpHIDIDC = (PUSBIDCEntry)gIDCTable.ProtIDCEntry; gdsHIDIDC = gIDCTable.ProtIDC_DS; } if (pRP->Status == STATUS_DONE) { RegisterJOY(); // register driver with RM gNoOfJOYs = 0; for (i = 0; i < MAX_JOYS; i++) gJOY[i].active = 0; ((PRPINITOUT)pRP)->CodeEnd = ((USHORT)&JOYInit); // set end of code segment ((PRPINITOUT)pRP)->DataEnd = ((USHORT)&gInitDataStart); // set end of data segment SetLongValue (gVMessages[INIT_MESSAGE_LOADED], (ULONG)gDriverStruct.MajorVer); SetLongValue (gVMessages[INIT_MESSAGE_LOADED], (ULONG)gDriverStruct.MinorVer); SetLongValue (gVMessages[INIT_MESSAGE_LOADED], (ULONG)gDevice); gMessageCount = AddToMsgArray (gMessageIDs, INIT_MESSAGE_LOADED, gMessageCount, MAX_INIT_MESSAGE_COUNT); } else { ((PRPINITOUT)pRP)->CodeEnd = 0; ((PRPINITOUT)pRP)->DataEnd = 0; } if (gVerbose) TTYWrite (gVMessages, gMessageIDs, gMessageCount); #ifdef DEBUG dsPrint1 (DBG_HLVLFLOW, "USBJOY: Init Status = %x\r\n", pRP->Status); #endif return; }