Rev 5482 | 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 |
3975 | leency | 6 | ?define ADD_DISK_TEXT "пробую добавить виртуальный диск" |
7 | ?define DELETE_DISK_TEXT "пробую удалить виртуальный диск" |
||
8 | ?define DONT_KNOW_DISK_SIZE_TEXT "его размер не указан, 10% свободной ОЗУ будет использовано" |
||
9 | ?define NEW_DISK_TEXT "размер диска будет: " |
||
3067 | leency | 10 | char *rezult_text[]={ |
3866 | punk_joker | 11 | "операция успешно завершена", |
12 | "неизвестный IOCTL, неверный размер предоставляемых данных...", |
||
13 | "номер диска должен быть от 0 до 9", |
||
14 | "размер создаваемого диска слишком велик", |
||
15 | "размер создаваемого диска слишком мал", |
||
16 | "ошибка выделения памяти", |
||
17 | "неизвестная ошибка O_o", |
||
3067 | leency | 18 | 0}; |
3866 | punk_joker | 19 | #else |
3975 | leency | 20 | ?define ADD_DISK_TEXT "trying to add disk" |
21 | ?define DELETE_DISK_TEXT "trying to delete virtual disk" |
||
22 | ?define DONT_KNOW_DISK_SIZE_TEXT "its size is not specified, 10% from free RAM will be used" |
||
23 | ?define NEW_DISK_TEXT "new DiskSize: " |
||
3067 | leency | 24 | char *rezult_text[]={ |
3336 | yogev_ezra | 25 | "operation completed successfully", |
3067 | leency | 26 | "unknown IOCTL code, wrong input/output size...", |
27 | "DiskId must be from 0 to 9", |
||
28 | "DiskSize is too large", |
||
3336 | yogev_ezra | 29 | "DiskSize is too small, might be too little free RAM", |
3067 | leency | 30 | "memory allocation failed", |
31 | "unknown error O_o", |
||
32 | 0}; |
||
3866 | punk_joker | 33 | #endif |
3067 | leency | 34 | |
3306 | leency | 35 | char Console_Work() |
3067 | leency | 36 | { |
37 | unsigned int disk_size, driver_rezult; |
||
38 | char size_t[256]; |
||
39 | |||
40 | strlwr(#param); |
||
41 | |||
42 | switch (param[0]) |
||
43 | { |
||
5624 | leency | 44 | case '?': |
3067 | leency | 45 | case 'h': |
4645 | leency | 46 | debugln("tmpdisk command line parameters:"); |
47 | debugln("a[number]s[size in MB] - add RAM disk"); |
||
48 | debugln("d[number] - delete RAM disk"); |
||
3067 | leency | 49 | ExitProcess(); |
50 | break; |
||
5624 | leency | 51 | case 'd': |
4645 | leency | 52 | debugln(DELETE_DISK_TEXT); |
3067 | leency | 53 | del_disk.DiskId = param[1]-'0'; |
54 | ioctl.handle = driver_handle; |
||
55 | ioctl.io_code = DEV_DEL_DISK; |
||
56 | ioctl.input = #del_disk; |
||
57 | ioctl.inp_size = sizeof(del_disk); |
||
58 | ioctl.output = 0; |
||
59 | ioctl.out_size = 0; |
||
5482 | leency | 60 | disk_sizes[del_disk.DiskId] = 0; |
3067 | leency | 61 | break; |
5624 | leency | 62 | case 'a': |
4645 | leency | 63 | debugln(ADD_DISK_TEXT); |
3067 | leency | 64 | disk_size= strchr(#param, 's'); |
65 | if (!disk_size) |
||
66 | { |
||
67 | add_disk.DiskSize = GetFreeRAM() / 5; |
||
4645 | leency | 68 | debugln(DONT_KNOW_DISK_SIZE_TEXT); |
3067 | leency | 69 | } |
70 | else |
||
5624 | leency | 71 | { |
72 | add_disk.DiskSize = atoi(disk_size+1)*2048; |
||
73 | } |
||
3975 | leency | 74 | strcpy(#size_t, NEW_DISK_TEXT); |
4640 | yogev_ezra | 75 | strcat(#size_t, itoa(add_disk.DiskSize/2048)); |
3975 | leency | 76 | strcat(#size_t, " MB"); |
4645 | leency | 77 | debugln(#size_t); |
3067 | leency | 78 | add_disk.DiskId = param[1]-'0'; |
79 | ioctl.handle = driver_handle; |
||
80 | ioctl.io_code = DEV_ADD_DISK; |
||
81 | ioctl.input = #add_disk; |
||
82 | ioctl.inp_size = sizeof(add_disk); |
||
83 | ioctl.output = 0; |
||
84 | ioctl.out_size = 0; |
||
5482 | leency | 85 | disk_sizes[add_disk.DiskId] = add_disk.DiskSize * 512; |
3067 | leency | 86 | break; |
87 | default: |
||
4645 | leency | 88 | debugln("unknown command line parameters"); |
89 | debugln("use 'h' or '?' for help"); |
||
3067 | leency | 90 | ExitProcess(); |
91 | } |
||
92 | |||
93 | driver_rezult = RuleDriver(#ioctl); |
||
4645 | leency | 94 | if (driver_rezult<7) debugln(rezult_text[driver_rezult]); |
3306 | leency | 95 | return driver_rezult; |
3067 | leency | 96 | }7)> |
97 |