Rev 9012 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
8703 | turbocat | 1 | #include |
2 | #include |
||
3 | #include |
||
4 | |||
5 | char* drv_name = NULL; |
||
6 | |||
7 | struct{ |
||
8 | int a; |
||
9 | int b; |
||
10 | }add_struct; |
||
11 | |||
12 | int sum=0; |
||
13 | ksys_drv_hand_t drv = 0; |
||
14 | |||
15 | #define DRV_ADD_FUNC 0 |
||
16 | |||
17 | int main(int argc, char** argv){ |
||
18 | puts("Which driver?"); |
||
19 | puts("1 - asm_drv.sys\n2 - c_drv.dll"); |
||
20 | int num_drv = (char)getchar()-'0'; |
||
21 | switch (num_drv) { |
||
22 | case 1 : |
||
23 | drv_name = "asm_drv"; |
||
24 | drv = _ksys_load_driver(drv_name); |
||
25 | break; |
||
26 | case 2 : |
||
9583 | vitalkrilo | 27 | drv_name = "/sys/drivers/c_drv.dll"; |
8703 | turbocat | 28 | drv = _ksys_load_pe_driver(drv_name, NULL); |
29 | break; |
||
30 | default: |
||
31 | printf("No driver selected!\n"); |
||
32 | exit(0); |
||
33 | } |
||
34 | |||
35 | if(!drv){ |
||
36 | printf("'%s' driver not load!\n", drv_name); |
||
37 | exit(0); |
||
38 | }else{ |
||
39 | printf("'%s' driver is load!\n", drv_name); |
||
40 | } |
||
41 | |||
42 | |||
43 | add_struct.a = 43; |
||
44 | add_struct.b = 532; |
||
45 | |||
9012 | Boppan | 46 | ksys_ioctl_t ioctl; |
8703 | turbocat | 47 | ioctl.func_num = DRV_ADD_FUNC; |
48 | ioctl.handler = drv; |
||
49 | ioctl.in_data_ptr = &add_struct; |
||
50 | ioctl.in_data_size = sizeof(add_struct); |
||
51 | ioctl.out_data_ptr = ∑ |
||
52 | ioctl.out_data_size = sizeof(sum); |
||
53 | |||
54 | unsigned status =_ksys_work_driver(&ioctl); |
||
55 | if(status==-1){ |
||
56 | puts("Error!"); |
||
57 | }else { |
||
58 | printf("%d + %d = %d\n", add_struct.a, add_struct.b, sum); |
||
59 | if(sum == add_struct.a + add_struct.b){ |
||
60 | puts("True!"); |
||
61 | }else{ |
||
62 | puts("False!"); |
||
63 | } |
||
64 | } |
||
65 | exit(0); |
||
66 | } |