Compartir a través de


Método IDiscMaster2::get_Item (imapi2.h)

Recupera el identificador único del dispositivo de disco especificado.

Sintaxis

HRESULT get_Item(
  [in]  LONG index,
  [out] BSTR *value
);

Parámetros

[in] index

Índice de base cero del dispositivo cuyo identificador único desea recuperar.

El valor de índice puede cambiar durante la actividad PNP cuando se agregan o quitan dispositivos del equipo o entre sesiones de arranque.

[out] value

Cadena que contiene el identificador único del dispositivo de disco asociado al índice especificado.

Valor devuelto

S_OK se devuelve correctamente, pero se pueden devolver otros códigos de éxito como resultado de la implementación. Los códigos de error siguientes se devuelven normalmente en caso de error de operación, pero no representan los únicos valores de error posibles:

Código devuelto Descripción
E_INVALIDARG
Uno o varios argumentos no son válidos.

Valor: 0x80070057

E_POINTER
El puntero no es válido.

Valor: 0x80004003

E_OUTOFMEMORY
No se pudo asignar la memoria necesaria.

Valor: 0x8007000E

Comentarios

Para enumerar todos los identificadores, llame al método IDiscMaster2::get__NewEnum .

En el ejemplo siguiente se muestra cómo volver a enumerar unidades ópticas para tener en cuenta con precisión las unidades agregadas o eliminadas después de la creación inicial del objeto IDiscMaster2 . Esto se logra a través de los métodos IDiscMaster2::get_Item e IDiscMaster2::get_Count :

#include <windows.h>
#include <tchar.h>
#include <imapi2.h>
#include <objbase.h>
#include <stdio.h>

#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "user32.lib")

int __cdecl _tmain(int argc, TCHAR* argv[])   
{   
    BSTR           bstrDeviceName;   
    HRESULT        hr = S_OK;   
    BOOL           bComInitialised;       
    IDiscMaster2*  discMaster;   
    UINT           iCounter = 0; 
    LONG           lValue = 0; 

    bComInitialised = SUCCEEDED(CoInitializeEx(0, COINIT_MULTITHREADED));

    // Create an object of IDiscMaster2  
    if (SUCCEEDED(hr)){
        CoCreateInstance(
            CLSID_MsftDiscMaster2,
            NULL, CLSCTX_ALL,
            IID_PPV_ARGS(&discMaster)
        );   

        if(FAILED(hr)){
            _tprintf(TEXT("\nUnsuccessful in creating an instance of CLSID_MsftDiscMaster2.\n\nError returned: 0x%x\n"), hr);
            return 0;
        }
    }
    //
    // Loop twice and get the optical drives attached to the system,
    // first time just get the current configuration and second time 
    // prompt the user to change the configuration and then get the 
    // altered configuration.   
    //
    do{
        // Get the number of drives 
        if (SUCCEEDED(hr)){
            hr = discMaster->get_Count(&lValue);
            if (SUCCEEDED(hr)){
                _tprintf(TEXT("\nTotal number of drives = %d\n"), lValue);
            }
        }

        // Print all the optical drives attached to the system 
        if (SUCCEEDED(hr)){
            for(LONG iCount = 0; iCount < lValue; iCount++) {
                hr = discMaster->get_Item(iCount, &bstrDeviceName);
                _tprintf(TEXT("\nUnique identifier of the disc device associated with index %d is: %s\n"), iCount, bstrDeviceName);
            }            
        }

        // Prompt the user to unhook or add drives
        if (iCounter < 1){
            MessageBox(NULL,TEXT("Please un-hook or add drives and hit OK"), TEXT("Manual Action"), MB_OK);
            _tprintf(TEXT("\nGetting the altered configuration ... \n"));
        }
        iCounter++;
    }while(iCounter < 2);

    discMaster->Release();
    CoUninitialize();   
    bComInitialised = FALSE;   

    return 0;

Requisitos

   
Cliente mínimo compatible Windows Vista, Windows XP con SP2 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado imapi2.h

Consulte también

IDiscMaster2

IDiscMaster2::get_Count

IDiscRecorder2::InitializeDiscRecorder