Subversion Repositories Kolibri OS

Rev

Rev 3975 | Rev 4640 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /////////////////////////////////////////////////////////////////////////////////////////
  2. /////////////////////////                êîíñîëü                     ////////////////////
  3. /////////////////////////////////////////////////////////////////////////////////////////
  4.  
  5. #ifdef LANG_RUS
  6.         ?define ADD_DISK_TEXT "¯à®¡ãî ¤®¡ ¢¨âì ¢¨àâã «ì­ë© ¤¨áª"
  7.         ?define DELETE_DISK_TEXT "¯à®¡ãî 㤠«¨âì ¢¨àâã «ì­ë© ¤¨áª"
  8.         ?define DONT_KNOW_DISK_SIZE_TEXT "¥£® à §¬¥à ­¥ 㪠§ ­, 10% ᢮¡®¤­®© Ž‡“ ¡ã¤¥â ¨á¯®«ì§®¢ ­®"
  9.         ?define NEW_DISK_TEXT "à §¬¥à ¤¨áª  ¡ã¤¥â: "
  10.         char *rezult_text[]={
  11.         "®¯¥à æ¨ï ãᯥ譮 § ¢¥à襭 ",
  12.         "­¥¨§¢¥áâ­ë© IOCTL, ­¥¢¥à­ë© à §¬¥à ¯à¥¤®áâ ¢«ï¥¬ëå ¤ ­­ëå...",
  13.         "­®¬¥à ¤¨áª  ¤®«¦¥­ ¡ëâì ®â 0 ¤® 9",
  14.         "à §¬¥à ᮧ¤ ¢ ¥¬®£® ¤¨áª  ᫨誮¬ ¢¥«¨ª",
  15.         "à §¬¥à ᮧ¤ ¢ ¥¬®£® ¤¨áª  ᫨誮¬ ¬ «",
  16.         "®è¨¡ª  ¢ë¤¥«¥­¨ï ¯ ¬ïâ¨",
  17.         "­¥¨§¢¥áâ­ ï ®è¨¡ª  O_o",
  18.         0};
  19. #else
  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: "
  24.         char *rezult_text[]={
  25.         "operation completed successfully",
  26.         "unknown IOCTL code, wrong input/output size...",
  27.         "DiskId must be from 0 to 9",
  28.         "DiskSize is too large",
  29.         "DiskSize is too small, might be too little free RAM",
  30.         "memory allocation failed",
  31.         "unknown error O_o",
  32.         0};
  33. #endif
  34.  
  35. char Console_Work()
  36. {
  37.         unsigned int disk_size, driver_rezult;
  38.         char size_t[256];
  39.         dword size_tt;
  40.  
  41.         strlwr(#param);
  42. //      debug(#param);
  43.        
  44.         switch (param[0])
  45.         {
  46.                 case '?': //ïîìîùü ïî êîììàíäàì
  47.                 case 'h':
  48.                         debug("tmpdisk command line parameters:");
  49.                         debug("a[number]s[size in MB] - add RAM disk");
  50.                         debug("d[number] - delete RAM disk");
  51.                         ExitProcess();
  52.                         break;
  53.                 case 'd': //óäàëèòü äèñê
  54.                         debug(DELETE_DISK_TEXT);
  55.                         del_disk.DiskId = param[1]-'0';
  56.                         ioctl.handle   = driver_handle;
  57.                         ioctl.io_code  = DEV_DEL_DISK;
  58.                         ioctl.input    = #del_disk;
  59.                         ioctl.inp_size = sizeof(del_disk);
  60.                         ioctl.output   = 0;
  61.                         ioctl.out_size = 0;
  62.                         break;
  63.                 case 'a': //äîáàâèòü äèñê
  64.                         debug(ADD_DISK_TEXT);
  65.                         disk_size= strchr(#param, 's');
  66.                         if (!disk_size)
  67.                         {
  68.                                 add_disk.DiskSize = GetFreeRAM() / 5;
  69.                                 debug(DONT_KNOW_DISK_SIZE_TEXT);
  70.                         }                              
  71.                         else
  72.                                 add_disk.DiskSize = atoi(#param+disk_size)*2048;
  73.                         strcpy(#size_t, NEW_DISK_TEXT);
  74.                         size_tt = itoa(add_disk.DiskSize/2048);
  75.                         strcat(#size_t, size_tt);
  76.                         strcat(#size_t, " MB");
  77.                         debug(#size_t);
  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;
  85.                         break;
  86.                 default:
  87.                         debug("unknown command line parameters");
  88.                         debug("use 'h' or '?' for help");
  89.                         ExitProcess();                 
  90.         }
  91.        
  92.         driver_rezult = RuleDriver(#ioctl);
  93.         if (driver_rezult<7) debug(rezult_text[driver_rezult]);
  94.         return driver_rezult;
  95. }
  96.  
  97.