/* * シリアルI/Oポートのオープン */ SIOPCB * sio_opn_por(ID siopid, VP_INT exinf) { BOOL success; SIOPCB * siopcb = GET_SIOPCB(siopid); assert(siopcb != NULL); siopcb->exinf = exinf; success = TRUE; switch(SIO_TYP(siopcb->Flag)) { case SIO_TYP_CONSOLE: HALExecuteProcedure(CreateSerialConsole,siopcb); break; case SIO_TYP_TTY: WinConsole_CreatePort(siopcb); break; case SIO_TYP_SCRBUF: HALExecuteProcedure(ScreenBuffer_CreatePort,siopcb); break; case SIO_TYP_RAWSIO: HALExecuteProcedure(RawSerial_CreatePort,siopcb); break; default: success = FALSE; } if(success == TRUE) BITSET(siopcb->Flag, SIO_STA_OPEN); return siopcb; }
/* デバッグルーチンの初期化 (管理スレッドにダイアログを作ってもらう) */ void InitializeDebugServices(HINSTANCE hinst,HWND dlg) { struct tagInitializeDebugServicesParam param; param.hInstance = hinst; param.hDlg = dlg; HALExecuteProcedure(_initializeDebugServices, (void *)¶m); //生成依頼 HALAddDestructionProcedure(FinalizeDebugServices, 0); //破棄ルーチンの登録 }
/* * シリアルI/Oポートのクローズ */ void sio_cls_por(SIOPCB *siopcb) { assert(siopcb != NULL); switch(SIO_TYP(siopcb->Flag)) { case SIO_TYP_CONSOLE: HALExecuteProcedure(SerialConsole_FinalRelease,siopcb); break; case SIO_TYP_TTY: WinConsole_ClosePort(siopcb); break; case SIO_TYP_SCRBUF: HALExecuteProcedure(ScreenBuffer_ClosePort,siopcb); break; case SIO_TYP_RAWSIO: HALExecuteProcedure(RawSerial_ClosePort,siopcb); break; } }