Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Hasło nie zostało zweryfikowane
Niniejsze hasło zostało opracowane, jednak nie zostało ono zweryfikowane przez administrację serwisu. Jeżeli znalazłeś błędy merytoryczne w niniejszym dokumencie, prosimy o ich zgłoszenie na forum w dziale Znalezione błędy.
Opracował: pekfos
Biblioteki C/C++

CreateEvent

[funkcja] Tworzy lub otwiera nazwany lub nienazwany obiekt zdarzenia.
C/C++
#include <windows.h>

HANDLE WINAPI CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPCTSTR lpName
);

Argumenty

ArgumentOpis
lpEventAttributesWskaźnik na strukturę SECURITY_ATTRIBUTES. Jeśli ten argument jest równy NULL, uchwyt nie może być dziedziczony przez procesy potomne.
bManualResetJeśli ten argument jest równy TRUE, funkcja tworzy ręcznie resetowany obiekt zdarzenia, który do przejścia w stan niezasygnalizowany wymaga wywołania funkcji ResetEvent(). Jeśli ten argument jest ustawiony na FALSE, funkcja tworzy automatycznie resetowany obiekt zdarzenia a system automatycznie resetuje zdarzenie po uwolnieniu czekającego na sygnał wątku.
bInitialStateJeśli ten argument jest ustawiony na TRUE, utworzone zdarzenie będzie w stanie zasygnalizowanym. W przeciwnym razie, zdarzenie będzie w stanie niezasygnalizowanym.
lpNameNazwa obiektu zdarzenia o maksymalnej długości MAX_PATH znaków. Porównywanie nazw uwzględnia wielkość liter. Jeśli nazwa pasuje do wcześniej utworzonego zdarzenia, funkcja żąda pełnych uprawnień (EVENT_ALL_ACCESS). W tym przypadku argumenty bManualReset i bInitialState są ignorowane. lpEventAttributes, jeśli nie jest równy NULL, określa dziedziczenie uchwytu, jednak deskryptor bezpieczeństwa jest ignorowany. Jeśli lpName jest równe NULL, obiekt zostanie utworzony bez nazwy. Jeśli nazwa pasuje do obiektu innego typu w aktualnej przestrzeni nazw, funkcja kończy się niepowodzeniem a GetLastError() zwraca ERROR_INVALID_HANDLE. Nazwa może mieć prefiks Global\ lub Local\ do jawnego określenia przestrzeni nazw. Końcówka może zawierać wszystkie znaki poza znakiem '\'.

Zwracana wartość

Jeśli funkcja kończy się powodzeniem, zwraca uchwyt do utworzonego obiektu zdarzenia. Jeśli obiekt o wskazanej nazwie istniał przed wywołaniem funkcji, funkcja zwraca uchwyt do tego obiektu, a GetLastError() zwraca ERROR_ALREADY_EXISTS.
Jeśli funkcja kończy się niepowodzeniem, zwraca NULL. Aby otrzymać dodatkowe informacje o błędzie, wywołaj GetLastError();

Opis szczegółowy

Dowolny wątek procesu wywołującego może użyć uchwytu na obiekt zdarzenia w jednej z funkcji czekających.
Stan początkowy zdarzenia jest ustalany na podstawie argumentu bInitialState. By później ustawić stan zasygnalizowany, użyj SetEvent(). By zresetować zdarzenie do stanu niezasygnalizowanego, użyj ResetEvent().
Wiele procesów może mieć uchwyt do tego samego obiektu zdarzenia dla synchronizacji między procesami. Dostępne są następujące sposoby współdzielenia obiektu:
  • Proces potomny może odziedziczyć uchwyt o ile przy tworzeniu procesu potomnego zezwolono na dziedziczenie uchwytów.
  • Proces może skopiować uchwyt w wywołaniu DuplicateHandle().
  • Proces może otworzyć istniejący obiekt przez CreateEvent() lub OpenEvent().
Uzyj CloseHandle() do zamknięcia uchwytu. System zamyka uchwyty po zakończeniu procesu. Obiekt zdarzenia zostaje zniszczony po zamknięciu ostatniego uchwytu.

Przykład

C/C++
#include <windows.h>

int main()
{
    HANDLE hEv = CreateEvent( NULL, TRUE, FALSE, NULL );
    WaitForSingleObject( hEv, 1000 );
    return 0;
}

Wymagania

Minimalny obsługiwany klientWindows XP
Minimalny obsługiwany serwerWindows Server 2003
Nagłówekwindows.h
BibliotekaKernel32.lib
DLLKernel32.dll

Linki zewnętrzne