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 |
---|---|
|
Um ou mais argumentos não são válidos.
Valor: 0x80070057 |
|
O ponteiro não é válido.
Valor: 0x80004003 |
|
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 |