Compartilhar via


Determining if an API is Ready

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Os módulos que exponham uma interface podem usar um nomeado evento para indicar preparação. Os módulos que precisam usar a interface podem aguardar o nomeado evento. Este evento é registrado por uma configuração no Registro, para que a OS pode indicar se ou não a interface nunca será pronto.

Para todas as plataformas

A seguinte tabela descreve as maneiras que você pode determinar se um API é pronta em todas as plataformas.

API Descrição

Ready-Event Registration

Ready-Event Process

Você pode usar API eventos prontos para determinar que se um API nunca seria pronto, ou seja, ele não é parte do design de OS.

Eventos prontos podem ser útil se você desejar gravar codificar que é executado em múltiplo tipos de dispositivos, onde um implementa um determinado conjunto API e outra não.

Para exemplo se seu aplicativo escolhe Whether or not para exibir interface do usuário, dependendo se o conjunto de elementos gráficos, janela e Event Subsystem (GWES) API nunca for ser registrado, so that-la pode executar em dispositivos com exibe, as well as dispositivos sem exibe.

Para Windows incorporado CE

**O seguinte descreve as maneiras que você pode determinar se um API é pronta em Windows Embedded CE

Função Descrição

WaitForAPIReady

Isto implementado para CE 6.0 suporta 128 conjuntos API e permite aguardando. No entanto, ele não é possível informar chamadores se o conjunto API nunca será pronto.

Para Mobile Windows

Se ele for melhor para bloco até que a notificação API esteja pronta garantir que a notificação não seja perdida e, em seguida, use OpenEvent ou WaitForSingleObject. OpenEvent falhará se o API nunca será pronto. Uma vez OpenEvent falhar ou WaitForSingleObject Retorna, você sabe o estado de API de notificação.

Exemplo

// This is not an OS type, just a type defined for this sample code
typedef enum
{
   APISTATE_UNKNOWN,
   APISTATE_NEVER,
   APISTATE_NOT_READY,
   APISTATE_READY
}
ApiState;
// Use whatever event name defines the state of readiness for the API set that needs to be used.  In this case it is the GWE API set.
#define EVENT_NAME TEXT("SYSTEM/GweApiSetReady")
// Uses an API if it's ready, waits for it if it's not ready
void UseAnAPIWithWaiting()
{
   static ApiState state = APISTATE_UNKNOWN;
   HANDLE hEvent;
      if (state == APISTATE_UNKNOWN)
      {
         hEvent = OpenEvent(EVENT_ALL_ACCESS, 0, EVENT_NAME);
         if (hEvent)
         {
            // Wait for the API set to be ready.
            aitForSingleObject(hEvent, INFINITE);
            CloseHandle(hEvent);
            state = APISTATE_READY;
         }
      else
      {
         // The API set will never be ready.
         state = APISTATE_NEVER;
      }
   }
if (state == APISTATE_READY)
{
   // Now, use the API set.
}

See Also

Concepts

System Calls

Other Resources

File System Boot Process