Changeset 588 for GPL/branches/uniaud32-2.1.x/drv32/init.c
- Timestamp:
- Feb 10, 2017, 2:50:49 AM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GPL/branches/uniaud32-2.1.x/drv32/init.c
r571 r588 31 31 #include <devhelp.h> 32 32 #include <devtype.h> 33 #include <devrp.h> 33 //DAZ #include <devrp.h> 34 #include <strategy.h> 34 35 #include "devown.h" 35 36 #include <version.h> … … 55 56 56 57 //const char szCopyRight1[]= "Copyright 2000-2002 InnoTek Systemberatung GmbH\r\n"; 57 const char szCopyRight2[]= "Copyright 2000-201 2The ALSA Project\r\n\r\n";58 const char szCopyRight3[]= "Copyright 2005-201 2Netlabs http://www.netlabs.org\r\n";58 const char szCopyRight2[]= "Copyright 2000-2010 The ALSA Project\r\n\r\n"; 59 const char szCopyRight3[]= "Copyright 2005-2010 Netlabs http://www.netlabs.org\r\n"; 59 60 60 61 const char szCodeStartEnd[] = "Code 0x%0x - 0x%0x\r\n\r\n"; … … 67 68 } MSG_TABLE; 68 69 69 extern "C"FARPTR16 MSG_TABLE32;70 extern "C"char szLastALSAError1[];71 extern "C"char szLastALSAError2[];72 extern "C"int sprintf (char *buffer, const char *format, ...);73 74 extern "C"APIRET APIENTRY DOS16OPEN(PSZ pszFileName, PHFILE phf, PULONG pulAction, ULONG cbFile, ULONG ulAttribute, ULONG fsOpenFlags, ULONG fsOpenMode, PEAOP2 peaop2 );75 extern "C"APIRET APIENTRY DOS16CLOSE(HFILE hFile);76 extern "C"APIRET APIENTRY DOS16WRITE(HFILE hFile, PVOID pBuffer, ULONG cbWrite, PULONG pcbActual);77 extern "C"void SaveBuffer(void);70 extern FARPTR16 MSG_TABLE32; 71 extern char szLastALSAError1[]; 72 extern char szLastALSAError2[]; 73 extern int sprintf (char *buffer, const char *format, ...); 74 75 extern APIRET APIENTRY DOS16OPEN(PSZ pszFileName, PHFILE phf, PULONG pulAction, ULONG cbFile, ULONG ulAttribute, ULONG fsOpenFlags, ULONG fsOpenMode, PEAOP2 peaop2 ); 76 extern APIRET APIENTRY DOS16CLOSE(HFILE hFile); 77 extern APIRET APIENTRY DOS16WRITE(HFILE hFile, PVOID pBuffer, ULONG cbWrite, PULONG pcbActual); 78 extern void SaveBuffer(void); 78 79 79 80 #define VMDHA_FIXED 0x0002 80 81 81 extern "C"APIRET VMAlloc(ULONG size, ULONG flags, char NEAR* *pAddr);82 extern APIRET VMAlloc(ULONG size, ULONG flags, char NEAR* *pAddr); 82 83 83 84 //Print messages with DosWrite when init is done or has failed (see startup.asm) … … 89 90 90 91 for(i=0;i<length;i++) { 91 92 str16[msg->MsgLength + i] = str[i]; 92 93 } 93 94 str16[msg->MsgLength + length] = 0; … … 116 117 segsize = OffsetFinalDS32 - ((OffsetBeginDS32) & ~0xFFF); 117 118 if(segsize & 0xFFF) { 118 119 segsize += PAGE_SIZE; 119 120 } 120 121 segsize &= ~0xFFF; … … 134 135 (LINEAR)&PgCount)) { 135 136 #endif 136 137 return(1); 137 138 } 138 139 /* … … 141 142 segsize = OffsetFinalCS32 - ((OffsetBeginCS32) & ~0xFFF); 142 143 if(segsize & 0xFFF) { 143 144 segsize += PAGE_SIZE; 144 145 } 145 146 segsize &= ~0xFFF; … … 159 160 (LINEAR)&PgCount)) { 160 161 #endif 161 162 return(1); 162 163 } 163 164 return 0; … … 195 196 #endif 196 197 // Initialize device driver 197 WORD32 DiscardableInit(RPInit __far* rp) 198 { 199 char debugmsg[64]; 200 char FAR48 *args; 201 202 #ifdef KEE 203 GetTKSSBase(); 204 #endif 205 206 if(LockSegments()) { 207 WriteString(ERR_ERROR, sizeof(ERR_ERROR)-1); 208 WriteString(ERR_LOCK, sizeof(ERR_LOCK)-1); 209 return RPDONE | RPERR_COMMAND; 210 } 211 212 DebugLevel = 1; 213 rp->Out.FinalCS = 0; 214 rp->Out.FinalDS = 0; 215 216 if ( szprintBuf == 0 ) { 217 VMAlloc( DBG_MAX_BUF_SIZE, VMDHA_FIXED, &szprintBuf ); 218 if (szprintBuf) { 219 memset( szprintBuf, 0, DBG_MAX_BUF_SIZE ); 220 wrOffset= 0; 221 } 222 } 223 if (!HeapInit(HEAP_SIZE)) { 224 rprintf(("HeapInit failed!")); 225 } 226 227 args = MAKE_FARPTR32(rp->In.Args); 228 GetParms(args); 229 230 #ifdef DEBUG 231 rprintf(("Uniaud32 version %s-DEBUG",UNIAUD_VERSION)); 232 #else 233 rprintf(("Uniaud32 version %s",UNIAUD_VERSION)); 234 #endif 235 236 if(fVerbose) { 237 WriteString(szALSA, sizeof(szALSA)-1); 238 WriteString(szCopyRight3, sizeof(szCopyRight3)-1); 239 WriteString(szCopyRight2, sizeof(szCopyRight2)-1); 240 } 241 242 243 if(fDebug) { 244 sprintf(debugmsg, szCodeStartEnd, OffsetBeginCS32, OffsetFinalCS32); 245 WriteString(debugmsg, strlen(debugmsg)); 246 } 247 248 //get the current time (to force retrieval of GIS pointer) 249 os2gettimemsec(); 250 251 char szMixerName[64]; 252 char szDeviceName[128]; 253 254 if(OSS32_Initialize() != OSSERR_SUCCESS) 255 { 256 WriteString(ERR_ERROR, sizeof(ERR_ERROR)-1); 257 WriteString(ERR_INIT, sizeof(ERR_INIT)-1); 258 if(szLastALSAError1[0]) { 259 WriteString(szLastALSAError1, strlen(szLastALSAError1)); 260 } 261 if(szLastALSAError2[0]) { 262 WriteString(szLastALSAError2, strlen(szLastALSAError2)); 263 } 264 // !! dont exit when error !! return RPDONE | RPERR_COMMAND; 265 } else if (OSS32_QueryNames(OSS32_DEFAULT_DEVICE, szDeviceName, 266 sizeof(szDeviceName),szMixerName, 267 sizeof(szMixerName), TRUE) != OSSERR_SUCCESS) 268 { 269 WriteString(ERR_ERROR, sizeof(ERR_ERROR)-1); 270 WriteString(ERR_NAMES, sizeof(ERR_INIT)-1); 271 if(szLastALSAError1[0]) { 272 WriteString(szLastALSAError1, strlen(szLastALSAError1)); 273 } 274 if(szLastALSAError2[0]) { 275 WriteString(szLastALSAError2, strlen(szLastALSAError2)); 276 } 277 278 // !! dont exit when error !! return RPDONE | RPERR_COMMAND; 279 } 280 else 281 if(fVerbose) { 198 WORD32 DiscardableInit(REQPACKET __far* rp) 199 { 200 char debugmsg[64]; 201 char FAR48 *args; 202 203 #ifdef KEE 204 GetTKSSBase(); 205 #endif 206 207 if(LockSegments()) 208 { 209 WriteString(ERR_ERROR, sizeof(ERR_ERROR)-1); 210 WriteString(ERR_LOCK, sizeof(ERR_LOCK)-1); 211 return RPDONE | RPERR_BADCOMMAND; 212 } 213 214 DebugLevel = 1; 215 rp->init_out.usCodeEnd = 0; 216 rp->init_out.usDataEnd = 0; 217 218 if ( szprintBuf == 0 ) 219 { 220 VMAlloc( DBG_MAX_BUF_SIZE, VMDHA_FIXED, &szprintBuf ); 221 if (szprintBuf) 222 { 223 memset( szprintBuf, 0, DBG_MAX_BUF_SIZE ); 224 wrOffset= 0; 225 } 226 } 227 if (!HeapInit(HEAP_SIZE)) 228 { 229 rprintf(("HeapInit failed!")); 230 } 231 232 args = MAKE_FARPTR32(rp->init_in.szArgs); 233 GetParms(args); 234 235 #ifdef DEBUG 236 rprintf(("Uniaud32 version %s-DEBUG",UNIAUD_VERSION)); 237 #else 238 rprintf(("Uniaud32 version %s",UNIAUD_VERSION)); 239 #endif 240 241 if(fVerbose) 242 { 243 WriteString(szALSA, sizeof(szALSA)-1); 244 WriteString(szCopyRight3, sizeof(szCopyRight3)-1); 245 WriteString(szCopyRight2, sizeof(szCopyRight2)-1); 246 } 247 248 if(fDebug) 249 { 250 sprintf(debugmsg, szCodeStartEnd, OffsetBeginCS32, OffsetFinalCS32); 251 WriteString(debugmsg, strlen(debugmsg)); 252 } 253 254 //get the current time (to force retrieval of GIS pointer) 255 os2gettimemsec(); 256 257 char szMixerName[64]; 258 char szDeviceName[128]; 259 260 if(OSS32_Initialize() != OSSERR_SUCCESS) 261 { 262 WriteString(ERR_ERROR, sizeof(ERR_ERROR)-1); 263 WriteString(ERR_INIT, sizeof(ERR_INIT)-1); 264 if(szLastALSAError1[0]) 265 { 266 WriteString(szLastALSAError1, strlen(szLastALSAError1)); 267 } 268 if(szLastALSAError2[0]) 269 { 270 WriteString(szLastALSAError2, strlen(szLastALSAError2)); 271 } 272 // !! dont exit when error !! return RPDONE | RPERR_COMMAND; 273 } 274 else if (OSS32_QueryNames(OSS32_DEFAULT_DEVICE, szDeviceName, 275 sizeof(szDeviceName),szMixerName, 276 sizeof(szMixerName), TRUE) != OSSERR_SUCCESS) 277 { 278 WriteString(ERR_ERROR, sizeof(ERR_ERROR)-1); 279 WriteString(ERR_NAMES, sizeof(ERR_INIT)-1); 280 if(szLastALSAError1[0]) 281 { 282 WriteString(szLastALSAError1, strlen(szLastALSAError1)); 283 } 284 if(szLastALSAError2[0]) 285 { 286 WriteString(szLastALSAError2, strlen(szLastALSAError2)); 287 } 288 289 // !! dont exit when error !! return RPDONE | RPERR_COMMAND; 290 } 291 else 292 if(fVerbose) 293 { 294 WriteString(szDeviceName, strlen(szDeviceName)); 295 WriteString(szEOL, sizeof(szEOL)-1); 296 WriteString(szMixerFound, sizeof(szMixerFound)-1); 297 WriteString(szMixerName, strlen(szMixerName)); 298 WriteString(szEOL, sizeof(szEOL)-1); 299 300 #if 0 301 for(int i=1;i<OSS32_MAX_AUDIOCARDS;i++) 302 { 303 if(OSS32_QueryNames(i, szDeviceName, sizeof(szDeviceName), szMixerName, sizeof(szMixerName)) == OSSERR_SUCCESS) 304 { 282 305 WriteString(szDeviceName, strlen(szDeviceName)); 283 306 WriteString(szEOL, sizeof(szEOL)-1); … … 285 308 WriteString(szMixerName, strlen(szMixerName)); 286 309 WriteString(szEOL, sizeof(szEOL)-1); 287 288 #if 0 289 for(int i=1;i<OSS32_MAX_AUDIOCARDS;i++) { 290 if(OSS32_QueryNames(i, szDeviceName, sizeof(szDeviceName), szMixerName, sizeof(szMixerName)) == OSSERR_SUCCESS) 291 { 292 WriteString(szDeviceName, strlen(szDeviceName)); 293 WriteString(szEOL, sizeof(szEOL)-1); 294 WriteString(szMixerFound, sizeof(szMixerFound)-1); 295 WriteString(szMixerName, strlen(szMixerName)); 296 WriteString(szEOL, sizeof(szEOL)-1); 297 } 298 else break; 299 } 300 #endif 301 WriteString(szEOL, sizeof(szEOL)-1); 302 } 303 // Complete the installation 304 rp->Out.FinalCS = _OffsetFinalCS16; 305 rp->Out.FinalDS = _OffsetFinalDS16; 306 307 //SaveBuffer(); 308 309 // Confirm a successful installation 310 return RPDONE; 311 } 312 310 } 311 else break; 312 } 313 #endif 314 WriteString(szEOL, sizeof(szEOL)-1); 315 } 316 // Complete the installation 317 rp->init_out.usCodeEnd = _OffsetFinalCS16; 318 rp->init_out.usDataEnd = _OffsetFinalDS16; 319 320 //SaveBuffer(); 321 322 // Confirm a successful installation 323 return RPDONE; 324 } 325
Note:
See TracChangeset
for help on using the changeset viewer.