Compartir a través de


IDeviceEmulatorManagerVMID

Actualización: noviembre 2007

Esta interfaz representa un emulador único en el Administrador de emuladores de dispositivos (DEM). Utilice esta interfaz para realizar operaciones como conectar, colocar en la base y restablecer, en el emulador.

interface IDeviceEmulatorManagerVMID : IDispatch{}

Métodos

Método

Descripción

IDeviceEmulatorManagerVMID::get_VMID

Obtiene el identificador de máquina virtual (VMID) que identifica de forma única al emulador.

IDeviceEmulatorManagerVMID::get_State

Obtiene el estado actual del emulador. El emulador puede estar en ejecución, no en ejecución o colocado en la base.

IDeviceEmulatorManagerVMID::get_Name

Obtiene el nombre del emulador, por ejemplo, Emulator de Pocket PC 2003 SE.

IDeviceEmulatorManagerVMID::Connect

Inicia el Emulador de dispositivos si no se ha iniciado ya y conecta con él.

IDeviceEmulatorManagerVMID::Cradle

Coloca el emulador en la base.

IDeviceEmulatorManagerVMID::UnCradle

Quita el emulador de la base.

IDeviceEmulatorManagerVMID::Shutdown

Cierra el emulador y, opcionalmente, guarda su estado.

IDeviceEmulatorManagerVMID::Reset

Restablece el emulador.

IDeviceEmulatorManagerVMID::ClearSaveState

Borra el archivo de estado guardado (.dess) del Emulador de dispositivos asociado a este dispositivo. La próxima vez que abra el emulador, éste se iniciará a partir de su imagen ROM y no de su archivo de estado guardado.

IDeviceEmulatorManagerVMID::BringToFront

Muestra la ventana Emulador de dispositivos.

IDeviceEmulatorManagerVMID::GetConfiguration

Obtiene la configuración del emulador en formato XML de configuración del emulador de dispositivos.

IDeviceEmulatorManagerVMID::SetConfiguration

Establece la configuración del emulador si se facilita una cadena XML de configuración del Emulador de dispositivos con el formato correcto.

Comentarios

Para crear un objeto que implementa esta interfaz, utilice IEnumVMIDs::get_VMID.

Ejemplo

Este ejemplo inicia el emulador de Pocket PC 2003 y realiza una serie de operaciones.

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;
}

Requisitos

DEMComInterface.tlb

Vea también

Otros recursos

Muestras del emulador de dispositivos