количество секторов на дорожке на жестком диске

Тема в разделе "WASM.BEGINNERS", создана пользователем nikto, 23 янв 2011.

  1. nikto

    nikto New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2009
    Сообщения:
    12
    как это можно узнать?
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    С помощью биос функций, посмотри на сайте в статьях. И сейчас оно нафик никому не нужно.
     
  3. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Booster
    nikto - вот уж точно. . . Ни кто и не интересуется.
     
  4. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    Оно то надо, но когда спрашуещь у ково-нить...
    То все посылают в Google где один мусор и нихрена полезного............
    или дают бакапорные исходники......
     
  5. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    nikto
    Такой вывод устроит? Исходник постить?
    Код (Text):
    1. C:\_temp\disc_para>dpara.exe
    2. Read from disk by index of cylinder/track/sector.
    3.  
    4. Physical disk number: 0
    5. Drive letter: с
    6.  
    7. Volume Information:
    8. Cylinders: 60801
    9. Tracks Per Cylinder: 255
    10. Bytes Per Sector: 512
     
  6. Toxasoft

    Toxasoft New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2010
    Сообщения:
    188
    А так вы за виндовс, я думал через порты ввода\вывода
     
  7. HCode

    HCode New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2006
    Сообщения:
    72
    Никак. См. также - ZBR
     
  8. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Toxasoft
    Под винду конечно, через интерфейс DeviceIoControl()
    На сpp пойдет?
    Код (Text):
    1. #define _WIN32_WINNT 0x0500
    2. #include <windows.h>
    3. #include <stdio.h>
    4. #include <winioctl.h>
    5. int ReadSectorsFromDisk(int disk, DISK_GEOMETRY dg, HANDLE hDrive);
    6.  
    7. int main(){
    8.     int disk;
    9.     char dname;
    10.     DISK_GEOMETRY dg;
    11.     DWORD dJunk;
    12.         printf("Read from disk by index of cylinder/track/sector.\n");
    13.         printf("\nPhysical disk number: ");
    14.         scanf("%d", &disk);
    15.         fflush(stdin);
    16.         printf("\Drive letter: ");
    17.         scanf("%c", &dname);
    18.         char physdisk[24];
    19.         wsprintf(physdisk, "\\\\.\\PhysicalDrive%d", disk);
    20.         HANDLE hDrive = CreateFile(physdisk, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
    21.         if (!DeviceIoControl(hDrive, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL, 0, &dg, sizeof(dg), &dJunk, (LPOVERLAPPED)NULL)){
    22.            MessageBox(NULL, "deviceiocontrol failed", NULL, MB_OK);
    23.         }
    24.         CloseHandle(hDrive);
    25.         ZeroMemory(physdisk, 24);
    26.         wsprintf(physdisk, "\\\\.\\%c:", dname);
    27.         hDrive = CreateFile(physdisk, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);
    28.         ReadSectorsFromDisk(disk, dg, hDrive);
    29.         printf("\n\n\n");
    30.     return 0;
    31. }
    32.     int ReadSectorsFromDisk(int disk, DISK_GEOMETRY dg, HANDLE hDrive){
    33.     DWORD dCylinders, dTracksPerCylinder, dSectorsPerTrack, dBytesPerSector;
    34.     dCylinders = dg.Cylinders.QuadPart;
    35.     dTracksPerCylinder = dg.TracksPerCylinder;
    36.     dSectorsPerTrack = dg.SectorsPerTrack;
    37.     dBytesPerSector = dg.BytesPerSector;
    38.     printf("\n\n\n");
    39.     printf("Volume Information:\n");
    40.     printf("Cylinders: %d\nTracks Per Cylinder: %d\nBytes Per Sector: %d\n\n", dCylinders, dTracksPerCylinder, dBytesPerSector);
    41.     return 0;
    42. }
     
  9. nikto

    nikto New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2009
    Сообщения:
    12
    чтото не понятно
    _sheva740 и Booster говорят что можно.
    HCode говорит что нельзя.

    к тому же из

    C:\_temp\disc_para>dpara.exe
    Read from disk by index of cylinder/track/sector.

    Physical disk number: 0
    Drive letter: с

    Volume Information:
    Cylinders: 60801
    Tracks Per Cylinder: 255
    Bytes Per Sector: 512

    я не увидел количество секторов на дорожке!
     
  10. HCode

    HCode New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2006
    Сообщения:
    72
    Вы не можете узнать не только количество секторов на дорожке, но и количество самих дорожек, равно как и количество магнитных головок, если речь идет о их физическом (реальном) количестве.
     
  11. nikto

    nikto New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2009
    Сообщения:
    12
    тема закрыта
     
  12. vnil

    vnil New Member

    Публикаций:
    0
    Регистрация:
    10 янв 2011
    Сообщения:
    1
    DISK_GEOMETRY.SectorsPerTrack;
    DISK_GEOMETRY.TracksPerCylinder;

    Реальнее некуда.
     
  13. nikto

    nikto New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2009
    Сообщения:
    12
    а на ассемблере как это можно узнать?
     
  14. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    nikto
    Спроси у гугла )))
    Так например - "invoke DeviceIoControl" IOCTL_DISK_GET_DRIVE_GEOMETRY
    скобки - принципиально!
     
  15. HCode

    HCode New Member

    Публикаций:
    0
    Регистрация:
    21 янв 2006
    Сообщения:
    72
    Ну, ну... )))
    Сколько у вас получается в этом случае магнитных головок в жестком диске? Уверен что на вашем жестком диске 255 и на моем 255 и на Васином то же... как думаете, соответствует ли это действительности? )
     
  16. nikto

    nikto New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2009
    Сообщения:
    12