void Request::FreeList(PRequestList List) { // Уничтожить список запросов if (List == NULL) return; List::Free(List->Items); pDeleteCriticalSection(List->Lock); FreeStruct(List->Lock); }
static void windows_wminput_quit(void) { /* unregister WM_INPUT devices... */ RAWINPUTDEVICE rid; ZeroMemory(&rid, sizeof (rid)); rid.usUsagePage = 1; /* GenericDesktop page */ rid.usUsage = 2; /* GeneralDestop Mouse usage. */ rid.dwFlags |= RIDEV_REMOVE; pRegisterRawInputDevices(&rid, 1, sizeof (rid)); cleanup_window(); available_mice = 0; pDeleteCriticalSection(&mutex); } /* windows_wminput_quit */
static int init_event_queue(void) { HINSTANCE hInstance = pGetModuleHandleA(NULL); WNDCLASSEX wce; RAWINPUTDEVICE rid; ZeroMemory(input_events, sizeof (input_events)); input_events_read = input_events_write = 0; ZeroMemory(&wce, sizeof (wce)); wce.cbSize = sizeof(WNDCLASSEX); wce.lpfnWndProc = RawWndProc; wce.lpszClassName = class_name; wce.hInstance = hInstance; class_atom = pRegisterClassExA(&wce); if (class_atom == 0) return 0; raw_hwnd = pCreateWindowExA(0, class_name, win_name, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, HWND_MESSAGE, NULL, hInstance, NULL); if (raw_hwnd == NULL) return 0; pInitializeCriticalSection(&mutex); ZeroMemory(&rid, sizeof (rid)); rid.usUsagePage = 1; /* GenericDesktop page */ rid.usUsage = 2; /* GeneralDestop Mouse usage. */ rid.dwFlags = RIDEV_INPUTSINK; rid.hwndTarget = raw_hwnd; if (!pRegisterRawInputDevices(&rid, 1, sizeof (rid))) { pDeleteCriticalSection(&mutex); return 0; } /* if */ return 1; } /* init_event_queue */