Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VC_Lect.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
15 Мб
Скачать
☆

23.Некоторые функции api Win32

23.1.Получение информации о компьютере и операционной системе

В состав Windows SDK входит множество функций, предназначенных для получения информации об установленной операционной системе и компьютере. Описание некоторых из функций приведены ниже, а информацию об остальных можно найти, как обычно, в MSDN. Имена этих функций начинаются с префикса GetSystem. Кроме того, с помощью функции SystemParametersInfo() можно получить или установить значения некоторых параметров системы или приложения.

В целом, ищите в MSDN функции, имена которых начинаются с префиксов Get или Set для получения или задания значений всевозможных свойств и параметров. См. также раздел MSDN “System Information”.

23.1.1.Функция GetLogicalDrives

Функция GetLogicalDrives возвращает число (битовую маску), в котором хранятся все доступные в системе логические диски.

DWORD GetLogicalDrives(VOID);

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

Если функция вызвана успешно, то она возвращает целое 32-разрядное число, биты которого соответствуют дискам (если бит 0 равен 1, то диск "A:" присутствует и т.д.). При наличии ошибки функция возвращает 0.

Пример:

DWORD dr = GetLogicalDrives();

cout << "Available disk drives :" << endl;

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

{

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

if(n) cout<<char(65+i)<<':'<<'\\'<<’ ‘;

}

cout<<endl;

23.1.2.Функция GetDriveType

Функция GetDriveType возвращает тип диска (сменный, фиксированный, CD-ROM, RAM диск или сетевой).

UINT GetDriveType(LPCTSTR lpRootPathName);

Параметр:

lpRootPathName

[in] Указатель на строку, в которой хранится имя корневого каталога диска, например, “C:\\”. Обратите внимание на наличие обратного слеша.

Если lpRootPathName==NULL, то функция возвращает информацию о текущем каталоге.

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

Функция возвращает тип диска. Могут быть следующие значения:

Значение

Описание

DRIVE_UNKNOWN

Неизвестный тип.

DRIVE_NO_ROOT_DIR

Неправильный путь.

DRIVE_REMOVABLE

Съёмный диск.

DRIVE_FIXED

Фиксированный диск.

DRIVE_REMOTE

Удалённый или network диск.

DRIVE_CDROM

CD-ROM диск.

DRIVE_RAMDISK

RAM диск.

Пример:

int d = GetDriveType( "c:\\" );

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;

23.1.3.Функция GetDriveType

Функция 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 " << VolumeNameBuffer << endl;

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

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

}

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]