• Miércoles 6 de Noviembre de 2024, 02:50

Autor Tema:  Información Dispositivos  (Leído 1233 veces)

Beldwir

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Información Dispositivos
« en: Domingo 26 de Septiembre de 2004, 03:01 »
0
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...   :hola:

   
Código: Text
  1.  
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include <windows.h>
  5. #include <winioctl.h>
  6. #include <iostream>
  7. #include <conio.h>
  8. #pragma argused
  9.  
  10. using namespace std;
  11.  
  12. int main(int argc, char* argv[])
  13. {
  14.    HANDLE hDispositivo;  // Manejador para la función CreateFile().
  15.    BOOL Resultado;  // Valor devuelto por la función DeviceIoControl().
  16.    CHANGER_PRODUCT_DATA sInfoUnid;  // Estructura con información sobre la unidad.
  17.    DWORD Retorno;
  18.  
  19.     /* Función que crea el manejador para abrir la unidad.
  20.        El primer parámetro es la unidad de la que queremos obtener información.*/
  21.  
  22.    hDispositivo=CreateFile("\\\\.\\d:",
  23.                            0,
  24.                            FILE_SHARE_READ | FILE_SHARE_WRITE,
  25.                            NULL,
  26.                            OPEN_EXISTING,
  27.                            0,
  28.                            NULL);
  29.  
  30.    if(hDispositivo == INVALID_HANDLE_VALUE) cout << "No es posible abrir el
  31.    dispositivo.";
  32.  
  33.    Resultado=DeviceIoControl(hDispositivo,
  34.                              IOCTL_CHANGER_GET_PRODUCT_DATA,
  35.                              NULL,
  36.                              0,
  37.                              &sInfoUnid,
  38.                              sizeof(sInfoUnid),
  39.                              &Retorno,
  40.                              (LPOVERLAPPED) NULL);
  41.  
  42.    if(Resultado)
  43.     {
  44.        cout << sInfoUnid.VendorId << '\n';
  45.        cout << sInfoUnid.ProductId << '\n';
  46.     }
  47.  
  48.    else cout  <<  GetLastError() << '\n'&#59;
  49.  
  50.    CloseHandle(hDispositivo);
  51.  
  52.    getch();
  53.  
  54.    return 0;
  55. }
  56.  
  57.