In the example of my computer the desired output should be: "C: E: F: H: N:" . I know it's possible, but what is the simpliest way to do that? Pottering in QueryDosDevice output 

```
#ifndef UNICODE
#define UNICODE
#endif

#include <Windows.h>
#include <fstream>
#include <iostream>

const int REPORT_LENGTH = 5000;

int main(void)
{
    TCHAR targetPath[REPORT_LENGTH];

    std::ofstream oFile;

    oFile.open("dos device query.txt");

    QueryDosDevice(NULL,targetPath,REPORT_LENGTH);

    for(int i=0; i<REPORT_LENGTH;i++)
    if (targetPath[i]=='\0')(targetPath[i]='\n');

    for(int i=0; i<REPORT_LENGTH; i++)
    oFile<<static_cast<char>(targetPath[i]);

    oFile.close();

    return 0;
}

```

would be a huge waste of time and resources. Also function [GetLogicalDriveStrings](http://msdn.microsoft.com/en-us/library/windows/desktop/aa364975%28v=vs.85%29.aspx) has betrayed me a lot.

```
#include <Windows.h>

int main()
{
    TCHAR buffer[50];

    GetLogicalDriveStrings(50,buffer);

    MessageBox(0,buffer,"Drives in the system",MB_OK); 

    return 0;
}

```

It shows only the "C:\" volumine.