YCOS驅動程式
YCOS是微核心的,它的大部分功能可以由外部驅動程式提供,隻有少數幾個功能由核心檔案ycker.cpp提供。
下面介紹如何編寫、安裝、調用驅動程式。
1. 設計驅動程式
#define YCORG -1 //該設定使編譯器生成頭部為YCEXE結構的可執行檔案
#include "ycio.cpp" //提供字首為ycio_的函數和C/C++标準函數
struct drvCLASS //本驅動程式的接口結構及其實作
{
virtual char *stdcall nice_day(int aa)
{
printf("%d\n",aa);
return "It is a nice day!";
}
virtual char *stdcall hello()
{
return "Hello wordl!";
}
};
drvCLASS DRV; //聲明接口對象
void main(void **pObj)
{
*pObj = &DRV; //将接口對象DRV的位址傳給調用者
}
C/C++代碼檔案 drv.cpp
2. 安裝驅動程式
#define YCORG -1 //該設定使編譯器生成頭部為YCEXE結構的可執行檔案
#include "ycio.cpp"
void main()
{
ycfsCLASS *YCFS;
ycio_get_driver(&YCFS,"ycfs"); //擷取檔案管理接口指針
byte *codeptr = YCFS->get_file_code("drv.sys"); //獲得drv.sys檔案的代碼
int rv = ycio_set_driver(codeptr, "nice"); //安裝驅動程式(取名為nice)到核心
if(rv == 0) printf("\ndrv.sys installed.\n"); //安裝成功
else printf("\ndrv.sys: has been installed before! - %d\n",rv);
}
C/C++代碼檔案 dra.cpp
在YCOS提示符下,鍵入dra後,驅動程式便被安裝到核心了,應用程式就可以通過名字
“nice”獲得驅動程式drv.cpp的函數接口指針。
3. 調用驅動程式
#define YCORG -1 //該設定使編譯器生成頭部為YCEXE結構的可執行檔案
#include "ycio.cpp"
struct drvCLASS //drv.cpp的接口結構
{
virtual char *stdcall nice_day(int aa);
virtual char *stdcall hello();
};
void main()
{
drvCLASS *DRV;
ycio_get_driver(&DRV,"nice"); //通過名字nice獲得驅動程式接口指針
if(!DRV)
{
printf("\nError: drv.sys not installed! Run dra.exe first.\n");
return;
}
printf("\nDriver: drv.sys\n");
printf("%s\n",DRV->nice_day(2019)); //調用驅動程式drv.cpp的nice_day()函數
printf("%s\n",DRV->hello()); //調用驅動程式drv.cpp的hello()函數
}
C/C++代碼檔案 drb.cpp
在YCOS提示符下,鍵入drb,将顯示下列文字:
Error: drv.sys not installed! Run dra.exe first.
或
2019
It is a nice day!
Hello wordl!