Compartilhar via


Active and Passive KITL

Windows Mobile Not SupportedWindows Embedded CE Supported

9/8/2008

Camada de transporte independentes kernel (KITL) contém o seguinte dois modos de operação:

  • Ativa: O dispositivo inicia a OAL, chamadas KitlInit (TRUE) para inicializar KITL e inicializa todos os clientes KITL usar como padrão como o depurador kernel. O serviço KITL, em seguida, chama OEMKitlInit e registra todos os clientes usar como padrão usados pelo sistema.
  • Passivo: KITL não é automaticamente iniciado quando o dispositivo é inicializado. Neste modo, KITL inicializa próprio e os clientes KITL usar como padrão. Chamar KitlInit(FALSE) para inicializar no modo Passivo. OEMKitlInit é, em seguida, chamado quando um cliente registra com os servidores KITL.

Você deve determinar qual modo o dispositivo deve digitar em inicializar. Construtor de Expressões plataforma fornece um sinalizador chamado KTS_PASSIVE_MODE que determina qual modo é usado. Você pode definir KTS_PASSIVE_MODE no Construtor de expressões de plataforma, permitindo ativo ou passivo KITL. Para obter mais informações, consulte Enabling Active or Passive KITL.

Você deve transmitir o sinalizador KTS_PASSIVE_MODE, se usado, para a OAL antes KitlInit é chamado.

Na plataforma de hardware CEPC, passando os dados através de carregador inicializar na seção de BootArgs faz isso. A exibição um exemplo, consulte % _WINCEROOT%\Platform\Cepc\Kernel\Hal\Halkitl.c.

KITL ativa é mais adequado para o desenvolvimento processos para que o depurador pode manter uma constante conexão. KITL passivo melhor é adequada para um real-cenário global onde o depurador não constantemente é necessária. A beneficiar do modo passivo é que ele permite que você criar um dispositivo que não precise ser tethered para o área de trabalho ferramentas. O dispositivo ainda pode ser celular e se ele insere um estado onde o área de trabalho ferramentas são necessárias, ele inicia uma conexão entre o dispositivo e área de trabalho KITL.

O seguinte exemplo de código mostra como isso é feito.

BOOL OEMKitlInit (PKITLTRANSPORT pKitl)
{
    BOOL fRet = TRUE;
    BOOT_ARGS *pBootArgs = (BOOT_ARGS *) ((ULONG)(*(PBYTE *)BOOT_ARG_PTR_LOCATION) | 0x80000000);

    KITLOutputDebugString ("+OEMKitlInit\n");

    // start the requested transport
    switch(pBootArgs->KitlTransport & ~KTS_PASSIVE_MODE)
    {
        case KTS_SERIAL:
            fRet = InitSerial(pKitl);
            break;

        case KTS_ETHER:
        case KTS_DEFAULT:
        default:
            fRet = InitEther(pKitl);
            break;
    }

    if(!fRet)
        KITLOutputDebugString ("Unable to initialize KITL Transports!\n");

    KITLOutputDebugString ("-OEMKitlInit\n");
    return fRet;
}

void InitDebugEther (void)
{
    BOOT_ARGS *pBootArgs = (BOOT_ARGS *) ((ULONG)(*(PBYTE *)BOOT_ARG_PTR_LOCATION) | 0x80000000);

    if ((pBootArgs->KitlTransport & ~KTS_PASSIVE_MODE) == KTS_NONE)
        return;

    // Initialize KITL transport
    if (KitlInit(!(pBootArgs->KitlTransport & KTS_PASSIVE_MODE))) {
        KITLOutputDebugString ("KITL Initialized\n");
        // no longer need to start kernel services
        // since KITL config message told us what to start and
        // kitl will start it accordingly
    } else {
        KITLOutputDebugString ("KITL Initialization Failed, No debugging support available\n");
    }
}

See Also

Concepts

Kernel Independent Transport Layer