MsgWaitForMultipleObjectsEx
9/9/2008
Essa função retorna quando estiverem em um ou todos os objetos especificados no sinalizado estado, um E/S rotina de conclusão ou assíncrono chamar procedimento (APC) é enfileirado para o segmento ou o decorrido intervalo tempo limite. Essa função NÃO retorna se há entrada não lida do tipo especificado na fila. Ele retorna somente quando chega Nova entrada.
Syntax
DWORD MsgWaitForMultipleObjectsEx(
DWORD nCount,
LPHANDLE pHandles,
DWORD dwMilliseconds,
DWORD dwWakeMask,
DWORD dwFlags
);
Parameters
- nCount
[no] Especifica o número de objeto alças na matriz apontado pelo pHandles. O número máximo de alças objeto é MAXIMUM_WAIT_OBJECTS menos um.
- pHandles
[no] Ponteiro para uma matriz de objeto controla. Para uma lista do objeto tipos cujas alças você pode especificar, consulte a seção " Comentários " neste tópico. A matriz pode conter alças para múltiplo tipos de objetos.
- dwMilliseconds
[no] Especifica o intervalo tempo limite, em milissegundos. A função retorna se o intervalo tiver decorrido, mesmo se as condições especificado pela dwWakeMask e dwFlags Parâmetros não forem atendidos. Se dwMilliseconds for zero, a função testa os estados dos objetos especificados e retorna imediatamente. Se dwMilliseconds é infinito, tempo limite intervalo a função nunca decorrido.
dwWakeMask
[no] Especifica entrada tipos para o qual uma entrada evento objeto identificador será adicionado à matriz das alças objeto. Este parâmetro pode ser qualquer combinação dos seguinte valores.Valor Descrição QS_ALLEVENTS
Uma entrada, WM_TIMER, WM_PAINT, WM_HOTKEY ou mensagem postada é na fila.
QS_ALLINPUT
Qualquer mensagem é a fila.
QS_INPUT
Um mensagem de entrada é a fila.
QS_KEY
A WM_KEYUP, WM_KEYDOWN, WM_SYSKEYUP, ou WM_SYSKEYDOWN mensagem é a fila.
QS_MOUSE
A WM_MOUSEMOVE mensagem ou mouse-botão mensagem (WM_LBUTTONUP, WM_LBUTTONDOWNe assim por diante) está na fila.
QS_MOUSEBUTTON
Um mouse-botão mensagem (WM_LBUTTONUP, WM_LBUTTONDOWN e SO on) está na fila.
QS_MOUSEMOVE
Uma mensagem WM_MOUSEMOVE é a fila.
QS_PAINT
A WM_PAINT mensagem é a fila.
QS_POSTMESSAGE
Uma mensagem postada (Other Than esses apenas listados) é a fila.
QS_SENDMESSAGE
Uma mensagem enviada por outro segmento ou aplicativo é a fila.
QS_TIMER
A WM_TIMER mensagem é a fila.
dwFlags
[no] Especifica o tipo de espera. Ele pode ser qualquer combinação do seguinte valores.Valor Descrição 0
A função retorna quando qualquer um dos objetos é sinalizado. O valor de retorno indica o objeto cujo estado causou a função para retornar.
MWMO_INPUTAVAILABLE
A função retorna se entrada existe para a fila, mesmo se a entrada foi vista (mas não removida) usando um chamar para outra função, como PeekMessage.
Return Value
Se a função for bem-sucedido, o valor de retorno indica o evento que causou a função para retornar. O bem-sucedido valor de retorno é um do seguinte:
- WAIT_OBJECT_0 para (WAIT_OBJECT_0 + nCount–1)
Se o sinalizador MWMO_WAITALL for usado, o valor de retorno indica que o estado de todos os objetos especificados é sinalizado. Caso contrário, o valor de retorno menos WAIT_OBJECT_Zero indica o pHandles índice de matriz do objeto que causou a função para retornar.
WAIT_OBJECT_0 + nCount
Nova entrada do tipo especificado na dwWakeMask parâmetro está disponível na entrada do segmento de fila. Funções such as PeekMessage e GetMessage marca as mensagens na fila como mensagens antigas. Portanto, depois que você chamar um dessas funções, um chamar subseqüente para MsgWaitForMultipleObjectsEx Não retornará até chega nova entrada do tipo especificado.Esse valor também é retornado após a ocorrência de um evento sistema que requer ação do segmento, such as primeiro plano ativação. Portanto, MsgWaitForMultipleObjectsEx pode retornar mesmo embora nenhum apropriado entrada está disponível e mesmo se dwWaitMask é definido como 0. Se isso ocorrer, chamar PeekMessage Ou GetMessage ao processo de evento sistema antes de tentar a chamar para MsgWaitForMultipleObjectsEx novamente.
- WAIT_ABANDONED_0 para (WAIT_ABANDONED_0 + nCount–1)
Se o sinalizador MWMO_WAITALL é usado, o valor de retorno indica que o estado de todos os objetos especificados é sinalizado e pelo menos um dos objetos é um objeto mutex abandonadas. Caso contrário, o valor de retorno menos WAIT_ABANDONED_Zero indica o pHandles índice de matriz de um objeto mutex abandonadas que causou a função para retornar.
- WAIT_IO_COMPLETION
A espera foi finalizada por um usuário-modo assíncrono chamar procedimento (APC) enfileirado para o segmento.
- WAIT_TIMEOUT
O intervalo tempo limite decorrido, mas as condições especificadas pela dwFlags e dwWakeMask Parâmetros não foram atendidos.
0xFFFFFFFF indica falha. Para informações de erro estendidas get, chamar GetLastError.
Remarks
O MsgWaitForMultipleObjectsEx função determina se as condições especificado por dwWakeMask e dwFlags foram atendidos. Se as condições não foram atendidas, o segmento chamado insere um estado espera eficiente. O segmento usa muito pouco tempo de processador enquanto aguardam para uma das condições para ser atendidos ou para o intervalo tempo limite para decorrer.
Antes de retornar, uma função de espera modifica o estado de alguns tipos de objetos sincronização. Modificação ocorre somente para o objeto ou objetos cujos sinalizado estado causou a função para retornar. De exemplo, o sistema diminui a contagem de um objeto do semáforo por um. Quando dwFlags For zero e múltiplo objetos estão o sinalizado estado, a função escolhe um dos objetos para satisfazer a aguardar; Os estados dos objetos selecionados não são afetados.
O MsgWaitForMultipleObjectsEx função copia a tabela identificador, adiciona a ela o fila de mensagens evento e chamadas WaitForMultipleObjects.
O MsgWaitForMultipleObjectsEx função pode especificar alças de qualquer um do seguinte objeto tipos na pHandles matriz:
- Evento
- Mutex
- Seção crítica
- Semáforo
- Processo
- Segmento
O sinalizador QS_POSTMESSAGE está desmarcada quando você chamar GetMessage Ou PeekMessage, se você estiver filtrando mensagens.
Requirements
Header | winbase.h |
Library | Msgque.lib |
Windows Embedded CE | Windows CE 2.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |
See Also
Reference
Message Queue Functions
PeekMessage
GetMessage
WM_KEYUP
WM_KEYDOWN
WM_SYSKEYUP
WM_SYSKEYDOWN
WM_MOUSEMOVE
WM_LBUTTONUP
WM_LBUTTONDOWN
WM_PAINT
WM_TIMER