Freigeben über


IDiscMaster2::get_Item-Methode (imapi2.h)

Ruft den eindeutigen Bezeichner des angegebenen Datenträgergeräts ab.

Syntax

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

Parameter

[in] index

Nullbasierter Index des Geräts, dessen eindeutiger Bezeichner Sie abrufen möchten.

Der Indexwert kann sich während der PNP-Aktivität ändern, wenn Geräte dem Computer hinzugefügt oder entfernt werden, oder über Startsitzungen hinweg.

[out] value

Zeichenfolge, die den eindeutigen Bezeichner des Datenträgergeräts enthält, das dem angegebenen Index zugeordnet ist.

Rückgabewert

S_OK wird bei Erfolg zurückgegeben, aber als Ergebnis der Implementierung können andere Erfolgscodes zurückgegeben werden. Die folgenden Fehlercodes werden häufig bei Einem Vorgangsfehler zurückgegeben, stellen jedoch nicht die einzigen möglichen Fehlerwerte dar:

Rückgabecode Beschreibung
E_INVALIDARG
Mindestens ein Argument ist ungültig.

Wert: 0x80070057

E_POINTER
Der Zeiger ist ungültig.

Wert: 0x80004003

E_OUTOFMEMORY
Fehler beim Zuordnen des erforderlichen Arbeitsspeichers.

Wert: 0x8007000E

Hinweise

Um alle Bezeichner aufzulisten, rufen Sie die IDiscMaster2::get__NewEnum-Methode auf.

Im folgenden Beispiel wird veranschaulicht, wie optische Laufwerke neu aufgezählt werden, um Laufwerke, die nach der ersten Erstellung des IDiscMaster2-Objekts hinzugefügt oder entfernt wurden, genau zu berücksichtigen. Dies erfolgt über die Methoden IDiscMaster2::get_Item und 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;

Anforderungen

   
Unterstützte Mindestversion (Client) Windows Vista, Windows XP mit SP2 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile imapi2.h

Weitere Informationen

IDiscMaster2

IDiscMaster2::get_Count

IDiscRecorder2::InitializeDiscRecorder