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 |
---|---|
|
Uno o varios argumentos no son válidos.
Valor: 0x80070057 |
|
El puntero no es válido.
Valor: 0x80004003 |
|
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 |