Partager via


IDeviceEmulatorManagerVMID

Mise à jour : novembre 2007

Cette interface représente un émulateur unique dans le Gestionnaire Device Emulator (DEM). Utilisez cette interface pour effectuer des opérations de type connexion, placement sur la station d'accueil et réinitialisation, sur l'émulateur.

interface IDeviceEmulatorManagerVMID : IDispatch{}

Méthodes

Méthode

Description

IDeviceEmulatorManagerVMID::get_VMID

Obtient l'identificateur de machine virtuelle (VMID) qui identifie de façon unique l'émulateur.

IDeviceEmulatorManagerVMID::get_State

Obtient l'état actuel de l'émulateur. L'émulateur peut être dans un état de non exécution, d'exécution ou placé sur station d'accueil.

IDeviceEmulatorManagerVMID::get_Name

Obtient le nom de l'émulateur, par exemple Pocket PC 2003 SE - émulateur.

IDeviceEmulatorManagerVMID::Connect

Démarre Microsoft Device Emulator, si ce n'est déjà fait, et s'y connecte.

IDeviceEmulatorManagerVMID::Cradle

Place l'émulateur sur la station d'accueil.

IDeviceEmulatorManagerVMID::UnCradle

Retire l'émulateur de la station d'accueil.

IDeviceEmulatorManagerVMID::Shutdown

Arrête l'émulateur et, le cas échéant, enregistre l'état de l'émulateur.

IDeviceEmulatorManagerVMID::Reset

Réinitialise l'émulateur.

IDeviceEmulatorManagerVMID::ClearSaveState

Efface le fichier d'état enregistré (.dess) de Microsoft Device Emulator associé à cet appareil. Au prochain redémarrage, l'émulateur démarrera à partir de son image de ROM à la place de son fichier état enregistré.

IDeviceEmulatorManagerVMID::BringToFront

Affiche la fenêtre Device Emulator.

IDeviceEmulatorManagerVMID::GetConfiguration

Obtient la configuration de l'émulateur au format XML de configuration de Microsoft Device Emulator.

IDeviceEmulatorManagerVMID::SetConfiguration

Définit la configuration de l'émulateur à partir d'une chaîne XML de configuration de Microsoft Device Emulator correctement mise en forme.

Notes

Pour créer un objet qui implémente cette interface, utilisez IEnumVMIDs::get_VMID.

Exemple

Cet exemple démarre l'émulateur Pocket PC 2003 et effectue diverses opérations.

BOOL FindDevice(const CComBSTR& deviceIdentifier, IDeviceEmulatorManagerVMID** pDeviceVMID);

int _tmain(int argc, _TCHAR* argv[])
{
    if (SUCCEEDED(CoInitializeEx(NULL, COINIT_MULTITHREADED)))
    {
        HRESULT hr;
        CComPtr<IDeviceEmulatorManagerVMID> pDevice = NULL;

        // Get the emulator by calling a helper function
        hr = FindDevice("Pocket PC 2003 SE Emulator", &pDevice);

        // If the emulator is found
        if (SUCCEEDED(hr))
        {
            // Output the name of the emulator
            CComBSTR deviceName;
            hr = pDevice->get_Name(&deviceName);
            if (SUCCEEDED(hr)) wprintf_s(L"Device Name: %s\n", deviceName);

            // Output the emulator's VMID
            CComBSTR VMID;
            hr = pDevice->get_VMID(&VMID);
            if (SUCCEEDED(hr)) wprintf_s(L"Device VMID: %s\n", VMID);

            // Output the emulator's current state
            EMULATOR_STATE deviceState = EMU_NOT_RUNNING;
            hr = pDevice->get_State(&deviceState);
            if (SUCCEEDED(hr))
            {
                if (deviceState == EMU_CRADLED) wprintf_s(L"Emulator is Cradled\n");
                else if (deviceState == EMU_RUNNING) wprintf_s(L"Emulator is Running\n");
                else wprintf_s(L"Emulator is Not Running\n");
            }

            // Connect to the emulator
            hr = pDevice->Connect();
            if (SUCCEEDED(hr)) wprintf_s(L"Emulator is connected\n");

            // Make the Device Emulator window visible
            hr = pDevice->BringToFront();
            if (SUCCEEDED(hr)) wprintf_s(L"Device Emulator window is on top\n");

            // Cradle the emulator
            hr = pDevice->Cradle();
            if (SUCCEEDED(hr)) wprintf_s(L"Emulator is cradled\n");
            system("pause");

            // Uncradle the emulator
            hr = pDevice->UnCradle();
            if (SUCCEEDED(hr)) wprintf_s(L"Emulator is uncradled\n");

            // Save state and shutdown the emulator
            hr = pDevice->Shutdown(true);
            if (SUCCEEDED(hr)) wprintf_s(L"Emulator is shutdown\n");

            // Delete the .dess save state file for this device
            hr = pDevice->ClearSaveState();
            if (SUCCEEDED(hr)) wprintf_s(L"Save state file is deleted");
            system("pause");
        }
    }
    return 0;
}

// Helper method to find a device given name or VMID
BOOL FindDevice(const CComBSTR& deviceIdentifier, IDeviceEmulatorManagerVMID** pDeviceVMID)
{
    HRESULT hr;

    // Instantiate DeviceEmulatorManager (DEM) object.
    //  This starts DvcEmuManager.exe in silent mode
    CComPtr<IDeviceEmulatorManager> pDeviceEmulatorManager;
    hr = pDeviceEmulatorManager.CoCreateInstance(__uuidof(DeviceEmulatorManager));
    if (FAILED(hr)) {
        wprintf_s(L"Error: Unable to instantiate DeviceEmulatorManager. ErrorCode=0x%08X\n", hr);
        return FALSE;
    }

    // For each of the four nodes in the Device Emulator Manager window
    // (Datastore, My Device Emulators, All Device Emulators, and Others)
    for (; SUCCEEDED(hr); (hr = pDeviceEmulatorManager->MoveNext()))
    {
        CComPtr<IEnumManagerSDKs> pSDKEnumerator;


        // Get a list of SDKs/platforms in this node
        hr = pDeviceEmulatorManager->EnumerateSDKs(&pSDKEnumerator);
        if (FAILED(hr)) {
            continue;
        }

        // For every SDK/platform in the list
        for (; SUCCEEDED(hr); (hr = pSDKEnumerator->MoveNext()))
        {

            // Get the list of emulators in the SDK/platform
            CComPtr<IEnumVMIDs> pDeviceEnumerator;
            hr = pSDKEnumerator->EnumerateVMIDs(&pDeviceEnumerator);
            if (FAILED(hr)) {
                continue;
            }

            // For every emulator in the list
            for (; SUCCEEDED(hr); (hr = pDeviceEnumerator->MoveNext()))
            {
                CComBSTR deviceName;
                CComPtr<IDeviceEmulatorManagerVMID> pDevice;

                // Get the IDeviceEmulatorManagerVMID object.
                hr = pDeviceEnumerator->GetVMID(&pDevice);
                if (FAILED(hr)) {
                    continue;
                }

                // Get the name of the emulator
                hr = pDevice->get_Name(&deviceName);
                if (FAILED(hr)){
                    continue;
                }

                // If the name of the device matches the supplied name, 
                // then this is the device we are looking for. 
                if (deviceIdentifier == deviceName){
                    *pDeviceVMID = pDevice;
                    (*pDeviceVMID)->AddRef();
                    return TRUE;
                }
            }
        }
    }
    wprintf_s(L"Error: Unable to locate the device '%s'", deviceIdentifier);
    return FALSE;
}

Configuration requise

DEMComInterface.tlb

Voir aussi

Autres ressources

Exemples Microsoft Device Emulator