Składnia
#include <windows.h>
BOOL WINAPI HandlerRoutine( DWORD dwCtrlType );
Argumenty
Zwracana wartość
Jeśli funkcja przechwyci sygnał sterujący, powinna zwrócić wartość
TRUE. Jeśli zwróci
FALSE, zostanie wywołana następna funkcja przechwytująca sygnały sterujące.
Dodatkowe informacje
Proces konsoli używa tej funkcji do przechwytywania sygnałów sterujących. Kiedy sygnał jest pobierany, system tworzy nowy wątek w procesie do wykonywania funkcji. Typ
PHANDLER_ROUTINE określa wskaźnik do tej funkcji zwrotnej. HandlerRoutine jest zastępczą nazwą funkcji definiowanej przez programistę. Funkcja może być zakończona przez inny wątek w tym procesie i dlatego należy zwracać szczególną uwagę na synchronizację wątków dla tej funkcji. Inne procesy konsoli mają własne listy takich funkcji. Taka lista zawiera tylko domyślne uchwyty funkcji wywołujące
ExitProcess. Proces konsoli może dodawać i usuwać dodatkowe uchwyty funkcji przez wywołanie funkcji
SetConsoleCtrlHandler. Wymieniona funkcja nie bierze pod uwagę listy przechwytywanych funkcji dla innych procesów. Kiedy proces konsoli pobiera sygnał sterujący, funkcje przechwytujące są wywoływane w kolejności odwrotnej do kolejności rejestracji, dopóki jeden z uchwytów nie zwróci
TRUE. Jeśli wszystkie funkcje zwrócą
FALSE, domyślny uchwyt jest wywoływany. Sygnały
CTRL_CLOSE_EVENT,
CTRL_LOGOFF_EVENT oraz
CTRL_SHUTDOWN_EVENT dają procesowi możliwość zwolnienia pamięci przed jego zakończeniem. Ta funkcja może wykonać każde konieczne zwalnianie zasobów, a następnie jedno z poniższych działań:
Kiedy program zawierający konsolę jest uruchomiony jako usługa, pobiera zmodyfikowany domyślny uchwyt sterowania konsoli. Ten uchwyt nie wywołuje funkcji
ExitProcess podczas przetwarzania sygnałów
CTRL_LOGOFF_EVENT oraz
CTRL_SHUTDOWN_EVENT. To powoduje, że usługi kontynuują działanie po tym, jak uzytkownik się wyloguje. Jeśli usługi instalują własny uchwyt sterowania konsolą, jest on wywoływany przed domyślnym uchwytem. Jeśli zainstalowany uchwyt wywołuje funkcję
ExitProcess podczas przetwarzania sygnału
CTRL_LOGOFF_EVENT, usługa kończy swoje działanie, gdy użytkownik się wylogowuje. Zauważ, że inna biblioteka lub plik
DLL może zainstalować uchwyt sterowania konsoli do dowolnego programu. Jeśli to zrobi, ten uchwyt zastąpi domyślny uchwyt i może spowodować zamknięcie programu podczas wylogowania.
Wymagania
Linki zewnętrzne