Другие языки программирования и технологии

Как написать программу на C++, используя Win API?

Требуется написать программу, считывающую информацию о диске (функция GetVolumeInformation) и вывести в консоль (функция WriteConsole). Как это делается?
#include <windows.h>
#include <string>
#include <iostream>
int main() {
    std::wcin.imbue(std::locale(".866"));
    std::wcout.imbue(std::locale(".866"));
    int const q = 26;
    const DWORD size = MAX_PATH + 1; // DWORD и const переписать вручную
    LPCWSTR diskletter[q] = { L"A:\\", L"B:\\", L"C:\\", L"D:\\", L"E:\\", L"F:\\", L"G:\\", L"H:\\", L"I:\\", L"J:\\", L"K:\\", L"L:\\", L"M:\\", L"N:\\", L"O:\\", L"P:\\", L"Q:\\", L"R:\\", L"S:\\", L"T:\\", L"U:\\", L"V:\\", L"W:\\", L"X:\\", L"Y:\\", L"Z:\\" };    
    WCHAR diskletterbuff[size], systemnamebuff[size];
    ULONG serial;    
    HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    const size_t sizeInWords = 0x1000;
    LPWSTR buffer = NULL;
    BOOL flag;
    for (int n = 0; n < q; ++n) {
        flag = GetVolumeInformationW(diskletter[n], diskletterbuff, size, &serial, NULL, NULL, systemnamebuff, size);
        if (!flag) continue;
        else {
            if (diskletterbuff[0] == NULL) { diskletterbuff[0] = L'-'; diskletterbuff[1] = 0; }
            std::wstring temp = L"";
            temp = L" Буква диска:           ";
            temp += diskletter[n];
            temp += L"\n Имя диска:             ";
            temp += diskletterbuff;
            temp += L"\n Серийный номер диска: ";
            temp += std::to_wstring((unsigned long long)serial);
            temp += L"\n Файловая система:      ";
            temp += systemnamebuff;
            temp += L"\n\n";
            rsize_t size = temp.size() + 2;
            if (buffer = new (std::nothrow) WCHAR [sizeInWords]) {
                wcscpy_s(buffer, size, temp.c_str());
                WriteConsoleW(hOut, buffer, size - 2, NULL, NULL);
                delete[] buffer;
                buffer = NULL;
            }
        }
    }
    getchar();
    return 0;
}
ДШ
Дмитрий Шарабаев
59 645
Лучший ответ
подключай <windows.h> и вперед
ПК
Петр Кан
2 437