Rev 6278 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
3067 | leency | 1 | ///////////////////////////////////////////////////////////////////////////////////////// |
5482 | leency | 2 | ///////////////////////// Console //////////////////// |
3067 | leency | 3 | ///////////////////////////////////////////////////////////////////////////////////////// |
4 | |||
3866 | punk_joker | 5 | #ifdef LANG_RUS |
7515 | leency | 6 | ?define DELETE_DISK_TEXT "Пробую удалить /tmp%i" |
7 | ?define NEW_DISK_TEXT "Пробую добавить виртуальный диск /tmp%i размером %i MB" |
||
3067 | leency | 8 | char *rezult_text[]={ |
7515 | leency | 9 | "TmpDisk операция успешно завершена", |
3866 | punk_joker | 10 | "неизвестный IOCTL, неверный размер предоставляемых данных...", |
11 | "номер диска должен быть от 0 до 9", |
||
12 | "размер создаваемого диска слишком велик", |
||
13 | "размер создаваемого диска слишком мал", |
||
14 | "ошибка выделения памяти", |
||
15 | "неизвестная ошибка O_o", |
||
3067 | leency | 16 | 0}; |
3866 | punk_joker | 17 | #else |
7515 | leency | 18 | ?define DELETE_DISK_TEXT "Trying to delete /tmp%i" |
19 | ?define NEW_DISK_TEXT "Trying to add virtual disk /tmp%i, the size of %i MB" |
||
3067 | leency | 20 | char *rezult_text[]={ |
7515 | leency | 21 | "TmpDisk operation completed successfully", |
3067 | leency | 22 | "unknown IOCTL code, wrong input/output size...", |
23 | "DiskId must be from 0 to 9", |
||
24 | "DiskSize is too large", |
||
3336 | yogev_ezra | 25 | "DiskSize is too small, might be too little free RAM", |
3067 | leency | 26 | "memory allocation failed", |
27 | "unknown error O_o", |
||
28 | 0}; |
||
3866 | punk_joker | 29 | #endif |
3067 | leency | 30 | |
3306 | leency | 31 | char Console_Work() |
3067 | leency | 32 | { |
33 | unsigned int disk_size, driver_rezult; |
||
34 | char size_t[256]; |
||
35 | |||
36 | strlwr(#param); |
||
37 | |||
38 | switch (param[0]) |
||
39 | { |
||
5624 | leency | 40 | case '?': |
3067 | leency | 41 | case 'h': |
4645 | leency | 42 | debugln("tmpdisk command line parameters:"); |
43 | debugln("a[number]s[size in MB] - add RAM disk"); |
||
44 | debugln("d[number] - delete RAM disk"); |
||
3067 | leency | 45 | ExitProcess(); |
46 | break; |
||
7515 | leency | 47 | case 'd': //Delete disk |
3067 | leency | 48 | del_disk.DiskId = param[1]-'0'; |
49 | ioctl.handle = driver_handle; |
||
50 | ioctl.io_code = DEV_DEL_DISK; |
||
51 | ioctl.input = #del_disk; |
||
52 | ioctl.inp_size = sizeof(del_disk); |
||
53 | ioctl.output = 0; |
||
54 | ioctl.out_size = 0; |
||
7515 | leency | 55 | sprintf(#size_t, DELETE_DISK_TEXT, add_disk.DiskId); |
56 | debugln(#size_t); |
||
3067 | leency | 57 | break; |
7515 | leency | 58 | case 'a': //Add disk |
3067 | leency | 59 | disk_size= strchr(#param, 's'); |
60 | if (!disk_size) |
||
61 | { |
||
6278 | leency | 62 | add_disk.DiskSize = GetFreeRAM() / 5 * 2; |
3067 | leency | 63 | } |
64 | else |
||
5624 | leency | 65 | { |
66 | add_disk.DiskSize = atoi(disk_size+1)*2048; |
||
67 | } |
||
3067 | leency | 68 | add_disk.DiskId = param[1]-'0'; |
69 | ioctl.handle = driver_handle; |
||
70 | ioctl.io_code = DEV_ADD_DISK; |
||
71 | ioctl.input = #add_disk; |
||
72 | ioctl.inp_size = sizeof(add_disk); |
||
73 | ioctl.output = 0; |
||
74 | ioctl.out_size = 0; |
||
7515 | leency | 75 | sprintf(#size_t, NEW_DISK_TEXT, add_disk.DiskId, add_disk.DiskSize/2048); |
76 | debugln(#size_t); |
||
3067 | leency | 77 | break; |
78 | default: |
||
4645 | leency | 79 | debugln("unknown command line parameters"); |
80 | debugln("use 'h' or '?' for help"); |
||
3067 | leency | 81 | ExitProcess(); |
82 | } |
||
83 | |||
84 | driver_rezult = RuleDriver(#ioctl); |
||
4645 | leency | 85 | if (driver_rezult<7) debugln(rezult_text[driver_rezult]); |
3306 | leency | 86 | return driver_rezult; |
3067 | leency | 87 | }7)> |
88 |