как получить информацию о жестком диске, подключенном к серверу? Пример кода C/C?

Я очень новичок в программировании Windows. так что вы можете помочь мне получить образец программы (C/C++), который я могу получить всю информацию о жестком диске, который подключен к моему серверу.

Я использую сервер Windows 2008 R2 sp1, а также подключаю к серверу более одного жесткого диска.

Пожалуйста, помогите мне получить эту информацию.

Спасибо, Deepesh C.P.


person user1488334    schedule 04.07.2012    source источник
comment
вся информация о жестком диске, мягко говоря, довольно расплывчата. Чем конкретнее вы можете быть в своем запросе, тем лучше ответы вы, вероятно, получите. На первый взгляд WMI кажется очевидным путем, но неясно, может ли он предоставить необходимую информацию.   -  person Jerry Coffin    schedule 04.07.2012


Ответы (3)


Вы можете использовать запрос WMI для извлечения информации о диске.

SELECT Name,VolumeName from Win32_LogicalDisk WHERE DriveType='3'

Найдите WMI API, используя с помощью которого вы можете выполнить указанную выше команду из кода C/C++. здесь более подробная информация и пример кода.

person Sach    schedule 04.07.2012
comment
Спасибо за вашу помощь. Я заставил этот запрос работать, но с помощью этого запроса я получаю только информацию о логическом диске. Мое фактическое требование - получить информацию обо всех жестких дисках, подключенных к моему серверу. - person user1488334; 04.07.2012
comment
@ user1488334: используйте класс Win32_PerfRawData_PerfDisk_PhysicalDisk для получения информации о физическом диске. Все данные вы будете получать в необработанных счетчиках производительности. посетите msdn для деталей. - person Sach; 04.07.2012
comment
Теперь я должен получить этот класс, но все еще не могу проверить или получить общее использование дисков или разницу между общим использованием жесткого диска и текущим использованием из этих параметров. Я думаю, что не совсем понимаю эти параметры. Пожалуйста, помогите мне в этом . - person user1488334; 11.07.2012
comment
Не очень уверен ... вам может потребоваться суммировать использование диска (или бесплатное использование) для всех логических дисков, связанных с идентификатором физического устройства. Например. Выберите FreeSpace, Size из Win32_LogicalDisk, где DeviceID =‹deviceId›. - person Sach; 12.07.2012

Следующие API должны быть полезными

DisplayVolumePaths GetDiskFreeSpace CreateFile

Обратитесь также к этим ссылкам

http://social.msdn.microsoft.com/Forums/en-CA/vcgeneral/thread/1d4fda3c-885f-46e2-bc32-80c4426510dc

person Bharath Ravindra    schedule 18.02.2013

Для начала я бы прочитал о Windows API.

Чтобы получить все логические диски в системе Windows, используйте

DWORD WINAPI GetLogicalDrives(void);

or

DWORD WINAPI GetLogicalDriveStrings(
  __in   DWORD nBufferLength,
  __out  LPTSTR lpBuffer
);

Как показано на http://msdn.microsoft.com/en-us/library/windows/desktop/aa364972(v=vs.85).aspx

person lebox    schedule 05.07.2012
comment
Я пытаюсь получить использование физического диска с помощью Power Shell. Но я не могу понять, как это сделать с помощью Win32_PerfRawData_PerfDisk_PhysicalDisk. Пожалуйста, помогите в этом, чтобы получить больше информации о Power Shell. - person user1488334; 09.07.2012