void kcadvalor(char far *s, int n) { char cadena[80], far * p = cadena; kstrcpy(p, s); kitoa(p + kstrlen(s), n); kstrcat(p, "\n\r"); kputs(p); }
static int st_printf(char *s,int fl,char *format,unsigned int *vargs) { char itos_buf[ITOS_BSIZE],*chp; /* unsigned int *vargs;*/ int varg_index=0,i,start_i,temp_char; /*asm("mov %%ebp,%0":"=m" (vargs):); vargs+=4;*/ s[0]=0; for(i=0;format[i];) { if(format[i]=='%') { switch(format[i+1]){ case 'u': itos_ud(vargs[varg_index],itos_buf); if(fl<0) kstrcat(s,itos_buf); else write_string(fl,itos_buf); varg_index++; break; case 'x': itos_ux(vargs[varg_index],itos_buf); if(fl<0) kstrcat(s,itos_buf); else write_string(fl,itos_buf); varg_index++; break; case 's': chp=(char*)vargs[varg_index]; if(fl<0) kstrcat(s,chp); else write_string(fl,chp); varg_index++; break; default:return -1; } i+=2; } start_i=i; for(;format[i] && format[i]!='%';i++); if(i!=start_i) { if(fl<0) { temp_char=format[i]; format[i]=0; kstrcat(s,format+start_i); format[i]=temp_char; } else write(fl,format+start_i,i-start_i); } } return 0; }
int MediaSrvMaster(char *process, int max, int type) #endif { PMEDIA_OBJECT obj; PLIST head; PLIST n; int tasks; int owners; int len; // 获取媒体使用的设备 kMutexWait(hMediaMutex); // if(ListEmpty(&MediaObjList)) // { // kMutexRelease(hMediaMutex); // return 0; // } // 循环获取所有正在播放的音频任务名称,并用分隔符返回 if(process) kstrcpy(process, ""); tasks = 0; len = 0; head = &MediaObjList; for(n=ListFirst(head); n!=head; n=ListNext(n)) { // 获取打开设备对象 obj = ListEntry(n, MEDIA_OBJECT, Link); if(process) { if(tasks) { len++; if(len < max) kstrcat(process, ";"); } if(obj->MediaInfo) { len += kstrlen(obj->MediaInfo); if(len < max) kstrcat(process, obj->MediaInfo); } else { len += 6; if(len < max) kstrcat(process, "<NULL>"); } } tasks++; } // 获取打开DAC设备情况 owners = DacGetOwners(); if(owners > tasks) { if(process) { if(tasks) { len++; if(len < max) kstrcat(process, ";"); } len += 8; if(len < max) kstrcat(process, "<DIRECT>"); } tasks = owners; } kMutexRelease(hMediaMutex); return tasks; }