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;
}