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 |
---|---|
|
Mindestens ein Argument ist ungültig.
Wert: 0x80070057 |
|
Der Zeiger ist ungültig.
Wert: 0x80004003 |
|
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 |