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 |
---|---|
|
Un ou plusieurs arguments ne sont pas valides.
Valeur : 0x80070057 |
|
Le pointeur n’est pas valide.
Valeur : 0x80004003 |
|
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 |