Intento obtener el nombre de una unidad de CDRom mediante la función DeviceIoControl() y ésta me devuelve un error, alguién sabría decirme a qué se debe? Agradecería cualquier ayuda, tanto si hay algún error en el código como saber de alguna otra manera de obtener dicha información.
           Gracias...   
 
     -   
- #include <vcl.h> 
- #pragma hdrstop 
- #include <windows.h> 
- #include <winioctl.h> 
- #include <iostream> 
- #include <conio.h> 
- #pragma argused 
-   
- using namespace std; 
-   
- int main(int argc, char* argv[]) 
- { 
-    HANDLE hDispositivo;  // Manejador para la función CreateFile(). 
-    BOOL Resultado;  // Valor devuelto por la función DeviceIoControl(). 
-    CHANGER_PRODUCT_DATA sInfoUnid;  // Estructura con información sobre la unidad. 
-    DWORD Retorno; 
-   
-     /* Función que crea el manejador para abrir la unidad. 
-        El primer parámetro es la unidad de la que queremos obtener información.*/ 
-   
-    hDispositivo=CreateFile("\\\\.\\d:", 
-                            0, 
-                            FILE_SHARE_READ | FILE_SHARE_WRITE, 
-                            NULL, 
-                            OPEN_EXISTING, 
-                            0, 
-                            NULL); 
-   
-    if(hDispositivo == INVALID_HANDLE_VALUE) cout << "No es posible abrir el  
-    dispositivo."; 
-   
-    Resultado=DeviceIoControl(hDispositivo, 
-                              IOCTL_CHANGER_GET_PRODUCT_DATA, 
-                              NULL, 
-                              0, 
-                              &sInfoUnid, 
-                              sizeof(sInfoUnid), 
-                              &Retorno, 
-                              (LPOVERLAPPED) NULL); 
-    
-    if(Resultado) 
-     { 
-        cout << sInfoUnid.VendorId << '\n'; 
-        cout << sInfoUnid.ProductId << '\n'; 
-     } 
-   
-    else cout  <<  GetLastError() << '\n'; 
-   
-    CloseHandle(hDispositivo); 
-   
-    getch(); 
-   
-    return 0; 
- } 
-   
-