ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Робота з деякими Win API функціями (інформація про систему )
         

     

    Інформатика, програмування

    Робота з деякими Win API функціями (інформація про системі)

    У цій статті буде розглянуто деякі Win API функції:

    1) GetLogicalDrives

    Функція GetLogicalDrives повертає число-бітову маску в якій зберігаються всі

    доступні диски.

    DWORD GetLogicalDrives (VOID);

    Параметри:

    Ця функція не має параметрів.

    повертає значення:

    Якщо функція викликана правильно, то вона повертає число-бітову маску в якій

    зберігаються всі доступні диски (якщо 0 біт дорівнює 1, то диск "A:" присутній, і т.д. )

    Якщо функція викликана не правильно, то вона повертає 0.

    Приклад:

    int n;

    char dd [4];

    DWORD dr = GetLogicalDrives ();

    for (int i = 0; i <26; i + +)

    (

    n = ((dr>> i) & 0x00000001);

    if (n == 1)

    (

    dd [0] = char (65 + i); dd [1] = ':'; dd [2] =''; dd [3] = 0;

    cout << "Available disk drives:" <

    )

    )

    2) GetDriveType

    Функція GetDriveType повертає тип диска (removable, fixed, CD-ROM,

    RAM disk, або network drive).

    UINT GetDriveType (LPCTSTR lpRootPathName);

    Параметри:

    lpRootPathName

    [in] Покажчик на не нульову стоку в якій зберігається ім'я

    головній директорії на диску. Зворотний слеш повинен бути присутнім!

    Якщо lpRootPathName одно NULL, то функція використовує поточну директорію.

    повертає значення:

    Функція повертає тип диска. Можуть бути наступні значення:

    Значення Опис

    DRIVE_UNKNOWN Невідомий тип.

    DRIVE_NO_ROOT_DIR Чи не правильний шлях.

    DRIVE_REMOVABLE Знімний диск.

    DRIVE_FIXED Фіксований диск.

    DRIVE_REMOTE Віддалений або network диск.

    DRIVE_CDROM CD-ROM диск.

    DRIVE_RAMDISK RAM диск.

    Приклад:

    int d;

    d = GetDriveType ( "c:");

    if (d == DRIVE_UNKNOWN) cout << "UNKNOWN" <

    if (d == DRIVE_NO_ROOT_DIR) cout << "DRIVE NO ROOT DIR" <

    if (d == DRIVE_REMOVABLE) cout << "REMOVABLE" <

    if (d == DRIVE_FIXED) cout << "FIXED" <

    if (d == DRIVE_REMOTE) cout << "REMOTE" <

    if (d == DRIVE_CDROM) cout << "CDROM" <

    if (d == DRIVE_RAMDISK) cout << "RAMDISK" <

    3) GetVolumeInformation

    Функція GetVolumeInformation повертає інформацію про файлової системи і

    дисках (директоріях).

    BOOL GetVolumeInformation (

    LPCTSTR lpRootPathName,// ім'я диска (директорії) [in]

    LPTSTR lpVolumeNameBuffer,// назва диска [out]

    DWORD nVolumeNameSize,// довжина буфера назви диска [in]

    LPDWORD lpVolumeSerialNumber,// серіальний номер диска [out]

    LPDWORD lpMaximumComponentLength,// максимальна довжина фийла [out]

    LPDWORD lpFileSystemFlags,// опції файлової системи [out]

    LPTSTR lpFileSystemNameBuffer,// ім'я файлової системи [out]

    DWORD nFileSystemNameSize// довжина буфера імені файл. сист. [in]

    );

    повертає значення:

    Якщо функція викликана правильно, то вона повертає нульове значення (TRUE).

    Якщо функція викликана не правильно, то вона повертає 0 (FALSE).

    Приклад:

    char VolumeNameBuffer [100];

    char FileSystemNameBuffer [100];

    unsigned long VolumeSerialNumber;

    BOOL GetVolumeInformationFlag = GetVolumeInformationA (

    "c :",

    VolumeNameBuffer,

    100,

    & VolumeSerialNumber,

    NULL, //& MaximumComponentLength,

    NULL, //& FileSystemFlags,

    FileSystemNameBuffer,

    100

    );

    if (GetVolumeInformationFlag ! = 0)

    (

    cout << "Volume Name is" <

    cout << "Volume Serial Number is" <

    cout << "File System is" <

    )

    else cout << "Not Present (GetVolumeInformation)" <

    4) GetDiskFreeSpaceEx

    Функція GetDiskFreeSpaceEx видає інформацію про доступному місці на диску.

    BOOL GetDiskFreeSpaceEx (

    LPCTSTR lpDirectoryName,// ім'я диска (директорії) [in]

    PULARGE_INTEGER lpFreeBytesAvailable,// є для використання (байт) [out]

    PULARGE_INTEGER lpTotalNumberOfBytes,// максимальний обсяг (у байтах) [out]

    PULARGE_INTEGER lpTotalNumberOfFreeBytes// вільно на диску (у байтах) [out]

    );

    повертає значення:

    Якщо функція викликана правильно, то вона повертає нульове значення (TRUE).

    Якщо функція викликана не правильно, то вона повертає 0 (FALSE).

    Приклад:

    DWORD FreeBytesAvailable;

    DWORD TotalNumberOfBytes;

    DWORD TotalNumberOfFreeBytes;

    BOOL GetDiskFreeSpaceFlag = GetDiskFreeSpaceEx (

    "c:",// directory name

    (PULARGE_INTEGER) & FreeBytesAvailable, //Bytes available to caller

    (PULARGE_INTEGER) & TotalNumberOfBytes, //Bytes on disk

    (PULARGE_INTEGER) & TotalNumberOfFreeBytes //Free bytes on disk

    );

    if (GetDiskFreeSpaceFlag ! = 0)

    (

    cout << "Total Number Of Free Bytes =" <<(unsigned long) TotalNumberOfFreeBytes

    << "( "<

    << "Mb ) "<

    cout << "Total Number Of Bytes =" <<(unsigned long) TotalNumberOfBytes

    << "( "<

    << "Mb ) "<

    )

    else cout << "Not Present (GetDiskFreeSpace)" <

    5) GlobalMemoryStatus

    Функція GlobalMemoryStatus повертає інформацію про використовуваної системою пам'яті.

    VOID GlobalMemoryStatus (

    LPMEMORYSTATUS lpBuffer// покажчик на структуру MEMORYSTATUS

    );

    typedef struct _MEMORYSTATUS (

    DWORD dwLength;// довжина структури в байтах

    DWORD dwMemoryLoad;// завантаження пам'яті у відсотках

    SIZE_T dwTotalPhys;// максимальну кількість фізичної пам'яті в байтах

    SIZE_T dwAvailPhys;// вільне кількість фізичної пам'яті в байтах

    SIZE_T dwTotalPageFile;// макс. кол. пам'яті для програм в байтах

    SIZE_T dwAvailPageFile;// вільне кол. пам'яті для програм в байтах

    SIZE_T dwTotalVirtual;// максимальну кількість віртуальної пам'яті в байтах

    SIZE_T dwAvailVirtual;// вільне кількість віртуальної пам'яті в байтах

    ) MEMORYSTATUS, * LPMEMORYSTATUS;

    повертає значення:

    Ця функція не повертає параметрів

    Приклад:

    // The MemoryStatus structure is 32 bytes long.

    // It should be 32.

    // 78 percent of memory is in use.

    // There are 65076 total Kbytes of physical memory.

    // There are 13756 free Kbytes of physical memory.

    // There are 150960 total Kbytes of paging file.

    // There are 87816 free Kbytes of paging file.

    // There are 1fff80 total Kbytes of virtual memory.

    // There are 1fe770 free Kbytes of virtual memory.

    # define DIV 1024

    # define WIDTH 7

    char * divisor = "K";

    MEMORYSTATUS stat;

    GlobalMemoryStatus (& stat);

    printf ( "The MemoryStatus structure is% ld bytes long.n ",

    stat.dwLength);

    printf ( "It should be% d.n ", sizeof (stat ));

    printf ( "% ld percent of memory is in use.n ",

    stat.dwMemoryLoad);

    printf ( "There are% * ld total% sbytes of physical memory.n ",

    WIDTH, stat.dwTotalPhys/DIV, divisor);

    printf ( "There are% * ld free% sbytes of physical memory.n ",

    WIDTH, stat.dwAvailPhys/DIV, divisor);

    printf ( "There are% * ld total% sbytes of paging file.n ",

    WIDTH, stat.dwTotalPageFile/DIV, divisor);

    printf ( "There are% * ld free% sbytes of paging file.n ",

    WIDTH, stat.dwAvailPageFile/DIV, divisor);

    printf ( "There are% * lx total% sbytes of virtual memory.n ",

    WIDTH, stat.dwTotalVirtual/DIV, divisor);

    printf ( "There are% * lx free% sbytes of virtual memory.n ",

    WIDTH, stat.dwAvailVirtual/DIV, divisor);

    6) GetComputerName, GetUserNameA

    Функція GetComputerName повертає NetBIOS ім'я локального комп'ютера.

    BOOL GetComputerName (

    LPTSTR lpBuffer,// ім'я локального комп'ютера (довжина буфера рівна MAX_COMPUTERNAME_LENGTH + 1) [out]

    LPDWORD lpnSize// розмір буфера (краще поставити MAX_COMPUTERNAME_LENGTH + 1) [out/in]

    );

    Функція GetUserName повертає ім'я поточного узера.

    BOOL GetUserName (

    LPTSTR lpBuffer,// ім'я користувача (довжина буфера рівна UNLEN + 1) [out]

    LPDWORD nSize// розмір буфера (краще поставити UNLEN + 1) [out/in]

    );

    повертаються значення:

    Якщо функції викликані правильно, то вони повертають не нульове значення (TRUE).

    Якщо функції викликані не правильно, то вони повертають 0 (FALSE).

    Приклад:

    char ComputerName [MAX_COMPUTERNAME_LENGTH + 1];

    unsigned long len_ComputerName = MAX_COMPUTERNAME_LENGTH + 1;

    char UserName [UNLEN + 1];

    unsigned long len_UserName = UNLEN + 1;

    BOOL comp = GetComputerName (

    ComputerName,

    & len_ComputerName

    );

    if (comp! = 0) ( cout << "Computer Name is" <

    else cout << "Computer Name is NOT FOUND!" <

    comp = GetUserNameA (

    UserName,

    & len_UserName

    );

    if (comp! = 0) ( cout << "User Name is" <

    else cout << "User Name is NOT FOUND!" <

    7) GetSystemDirectory, GetTempPath, GetWindowsDirectory, GetCurrentDirectory

    Функція GetSystemDirectory повертає шлях до системної директорії.

    UINT GetSystemDirectory (

    LPTSTR lpBuffer,// буфер для системної директорії [out]

    UINT uSize// розмір буфера [in]

    );

    повертає значення:

    Ця функція повертає розмір буфера для системної директорії не включаючи нульового

    значення в кінці, якщо вона викликана правильно.

    Якщо функція викликана не правильно, то вона повертає 0.

    Функція GetTempPath повертає шлях до директорії, відведеної для тимчасових файлів.

    DWORD GetTempPath (

    DWORD nBufferLength,// розмір буфера [in]

    LPTSTR lpBuffer// буфер для тимчасової директорії [out]

    );

    повертає значення:

    Ця функція повертає розмір буфера для системної директорії не включаючи нульового

    значення в кінці, якщо вона викликана правильно.

    Якщо функція викликана не правильно, то вона повертає 0.

    Функція GetWindowsDirectory повертає шлях до Windows директорії.

    UINT GetWindowsDirectory (

    LPTSTR lpBuffer,// буфер для Windows директорії [out]

    UINT uSize// розмір буфера [in]

    );

    повертає значення:

    Ця функція повертає розмір буфера для системної директорії не включаючи нульового

    значення в кінці, якщо вона викликана правильно.

    Якщо функція викликана не правильно, то вона повертає 0.

    Функція GetCurrentDirectory повертає шлях до поточної директорії.

    DWORD GetCurrentDirectory (

    DWORD nBufferLength,// розмір буфера [in]

    LPTSTR lpBuffer// буфер для поточної директорії [out]

    );

    повертає значення:

    Ця функція повертає розмір буфера для системної директорії не включаючи нульового

    значення в кінці, якщо вона викликана правильно.

    Якщо функція викликана не правильно, то вона повертає 0.

    Приклад:

    char path [100];

    GetSystemDirectory ( path, 100);

    cout << "System Directory is" <

    GetTempPath (100, path);

    cout << "Temp path is" <

    GetWindowsDirectory ( path, 100);

    cout << "Windows directory is" <

    GetCurrentDirectory ( 100, path);

    cout << "Current directory is" <

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.realcoding.net/

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status