Compartilhar via


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

Recupera o identificador exclusivo do dispositivo de disco especificado.

Sintaxe

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

Parâmetros

[in] index

Índice baseado em zero do dispositivo cujo identificador exclusivo você deseja recuperar.

O valor do índice pode ser alterado durante a atividade PNP quando os dispositivos são adicionados ou removidos do computador ou entre sessões de inicialização.

[out] value

Cadeia de caracteres que contém o identificador exclusivo do dispositivo de disco associado ao índice especificado.

Valor retornado

S_OK é retornado com êxito, mas outros códigos de êxito podem ser retornados como resultado da implementação. Os seguintes códigos de erro geralmente são retornados em caso de falha na operação, mas não representam os únicos valores de erro possíveis:

Código de retorno Descrição
E_INVALIDARG
Um ou mais argumentos não são válidos.

Valor: 0x80070057

E_POINTER
O ponteiro não é válido.

Valor: 0x80004003

E_OUTOFMEMORY
Falha ao alocar a memória necessária.

Valor: 0x8007000E

Comentários

Para enumerar todos os identificadores, chame o método IDiscMaster2::get__NewEnum .

O exemplo a seguir demonstra como enumerar novamente unidades ópticas para considerar com precisão as unidades adicionadas ou removidas após a criação inicial do objeto IDiscMaster2 . Isso é feito por meio dos 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 com suporte Windows Vista, Windows XP com SP2 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho imapi2.h

Confira também

IDiscMaster2

IDiscMaster2::get_Count

IDiscRecorder2::InitializeDiscRecorder