Determining if an API is Ready
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 |
---|---|
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 |
---|---|
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.
}