Partager via


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

Récupère l’identificateur unique du périphérique à disque spécifié.

Syntaxe

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

Paramètres

[in] index

Index de base zéro de l’appareil dont vous souhaitez récupérer l’identificateur unique.

La valeur de l’index peut changer pendant l’activité PNP lorsque des appareils sont ajoutés ou supprimés de l’ordinateur, ou entre les sessions de démarrage.

[out] value

Chaîne qui contient l’identificateur unique du périphérique de disque associé à l’index spécifié.

Valeur retournée

S_OK est retourné en cas de réussite, mais d’autres codes de réussite peuvent être retournés à la suite de l’implémentation. Les codes d’erreur suivants sont généralement retournés en cas d’échec de l’opération, mais ne représentent pas les seules valeurs d’erreur possibles :

Code de retour Description
E_INVALIDARG
Un ou plusieurs arguments ne sont pas valides.

Valeur : 0x80070057

E_POINTER
Le pointeur n’est pas valide.

Valeur : 0x80004003

E_OUTOFMEMORY
Impossible d’allouer la mémoire requise.

Valeur : 0x8007000E

Notes

Pour énumérer tous les identificateurs, appelez la méthode IDiscMaster2::get__NewEnum .

L’exemple suivant montre comment réinscrire les lecteurs optiques afin de tenir compte avec précision des lecteurs ajoutés ou supprimés après la création initiale de l’objet IDiscMaster2 . Pour ce faire, utilisez les méthodes IDiscMaster2::get_Item et 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;

Configuration requise

   
Client minimal pris en charge Windows Vista, Windows XP avec SP2 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête imapi2.h

Voir aussi

IDiscMaster2

IDiscMaster2::get_Count

IDiscRecorder2::InitializeDiscRecorder