Допомога у написанні освітніх робіт...
Допоможемо швидко та з гарантією якості!

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

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Эта функція повертає розмір буфера для системної директорії не включаючи нулевого значения наприкінці, якщо її викликано правильно. Эта функція повертає розмір буфера для системної директорії не включаючи нулевого значения наприкінці, якщо її викликано правильно. In] Покажчик на не нульову стоку у якій зберігається имя главной директорії на диску. Зворотний слэш повинен присутствовать! Функция… Читати ще >

Работа з декотрими Win АПІ функціями (інформацію про системі) (реферат, курсова, диплом, контрольна)

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

В цієї статьеи буде розглянуті деякі Win АПІ функции:

1) GetLogicalDrives.

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

DWORD GetLogicalDrives (VOID);

Параметры:

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

Возвращаемое значение:

Если функція викликана правильно, вона повертає число-битовую маску в которой храняться все доступні диски (якщо 0 біт дорівнює 1, то диск «A: «присутній, тощо.).

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

Пример:

int n;

char dd[4];

DWORD dr = GetLogicalDrives ();

for (int і = 0; і < 26; і++).

{.

n = ((dr>>i)&0×1);

if (n == 1).

{.

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

cout << «Available disk drives: «<< dd << endl;

}.

}.

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 («з: »);

if (d == DRIVE_UNKNOWN) cout << «UNKNOWN «<< endl;

if (d == DRIVE_NO_ROOT_DIR) cout << «DRIVE NO ROOT DIR «<< endl;

if (d == DRIVE_REMOVABLE) cout << «REMOVABLE «<< endl;

if (d == DRIVE_FIXED) cout << «FIXED «<< endl;

if (d == DRIVE_REMOTE) cout << «REMOTE «<< endl;

if (d == DRIVE_CDROM) cout << «CDROM «<< endl;

if (d == DRIVE_RAMDISK) cout << «RAMDISK «<< endl;

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 (.

" з: " ,.

VolumeNameBuffer,.

100,.

&VolumeSerialNumber,.

NULL, //&MaximumComponentLength,.

NULL, //&FileSystemFlags,.

FileSystemNameBuffer,.

);

if (GetVolumeInformationFlag ≠ 0).

{.

cout << «Volume Name is «<< VolumeNameBuffer << endl;

cout << «Volume Serial Number is «<< VolumeSerialNumber << endl;

cout << «File System is «<< FileSystemNameBuffer << endl;

}.

else cout << «Not Present (GetVolumeInformation) «<< endl;

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 (.

" з: ", // 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.

<< «(«<< double (unsigned long (TotalNumberOfFreeBytes))/1024/1000.

<< «Mb) «<< endl;

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

<< «(«<< double (unsigned long (TotalNumberOfBytes))/1024/1000.

<< «Mb) «<< endl;

}.

else cout << «Not Present (GetDiskFreeSpace) «<< endl;

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 65 076 total Kbytes of physical memory.

// There are 13 756 free Kbytes of physical memory.

// There are 150 960 total Kbytes of paging file.

// There are 87 816 free Kbytes of paging file.

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

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

#define DIVX 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 «<< ComputerName << endl; }.

else cout << «Computer Name is NOT FOUND !!! «<< endl;

comp = GetUserNameA (.

UserName,.

&len_UserName.

);

if (comp ≠ 0) { cout << «User Name is «<< UserName << endl; }.

else cout << «User Name is NOT FOUND !!! «<< endl;

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 «<< path << endl;

GetTempPath (100, path);

cout << «Temp path is «<< path << endl;

GetWindowsDirectory (path, 100);

cout << «Windows directory is «<< path << endl;

GetCurrentDirectory (100, path);

cout << «Current directory is «<< path << endl;

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

Для підготовки даної роботи було використані матеріали із сайту internet.

Показати весь текст
Заповнити форму поточною роботою