📄 vm_event_win32.c
字号:
/*//// INTEL CORPORATION PROPRIETARY INFORMATION// This software is supplied under the terms of a license agreement or// nondisclosure agreement with Intel Corporation and may not be copied// or disclosed except in accordance with the terms of that agreement.// Copyright(c) 2003-2005 Intel Corporation. All Rights Reserved.//*/#if defined(_WIN32) || defined(_WIN64) || defined(_WIN32_WCE)#include "vm_event.h"/* Invalidate an event */void vm_event_set_invalid(vm_event *event){ /* check error(s) */ if (NULL == event) return; event->handle = NULL;} /* void vm_event_set_invalid(vm_event *event) *//* Verify if the event handle is valid */int vm_event_is_valid(vm_event *event){ /* check error(s) */ if (NULL == event) return 0; return (int)(NULL != event->handle);} /* int vm_event_is_valid(vm_event *event) *//* Init an event. Event is created unset. return 1 if success */vm_status vm_event_init(vm_event *event, int manual, int state){ /* check error(s) */ if (NULL == event) return VM_NULL_PTR; vm_event_destroy(event); event->handle = CreateEvent(NULL, manual, state, NULL); if (NULL == event->handle) return VM_OPERATION_FAILED; else return VM_OK;} /* vm_status vm_event_init(vm_event *event, int manual, int state) *//* Set the event to either HIGH (1) or LOW (0) state */vm_status vm_event_signal(vm_event *event){ /* check error(s) */ if (NULL == event) return VM_NULL_PTR; if (NULL == event->handle) return VM_NOT_INITIALIZED; else if (SetEvent(event->handle)) return VM_OK; else return VM_OPERATION_FAILED;} /* vm_status vm_event_signal(vm_event *event) *//* Set the event to either HIGH (1) or LOW (0) state */vm_status vm_event_reset(vm_event *event){ /* check error(s) */ if (NULL == event) return VM_NULL_PTR; if (NULL == event->handle) return VM_NOT_INITIALIZED; else if (ResetEvent(event->handle)) return VM_OK; else return VM_OPERATION_FAILED;} /* vm_status vm_event_reset(vm_event *event) *//* Pulse the event 0 -> 1 -> 0 */vm_status vm_event_pulse(vm_event *event){ /* check error(s) */ if (NULL == event) return VM_NULL_PTR; if (NULL == event->handle) return VM_NOT_INITIALIZED; else if (PulseEvent(event->handle)) return VM_OK; else return VM_OPERATION_FAILED;} /* vm_status vm_event_pulse(vm_event *event) *//* Wait for event to be high with blocking */vm_status vm_event_wait(vm_event *event){ /* check error(s) */ if (NULL == event) return VM_NULL_PTR; if (NULL == event->handle) return VM_NOT_INITIALIZED; else if (WAIT_OBJECT_0 == WaitForSingleObject(event->handle, INFINITE)) return VM_OK; else return VM_OPERATION_FAILED;} /* vm_status vm_event_wait(vm_event *event) *//* Wiat for event to be high without blocking, return 1 if signaled */vm_status vm_event_timed_wait(vm_event *event, unsigned int msec){ vm_status umcRes = VM_NOT_INITIALIZED; /* check error(s) */ if (NULL == event) return VM_NULL_PTR; if (NULL != event->handle) { DWORD dwRes = WaitForSingleObject(event->handle, msec); if (WAIT_OBJECT_0 == dwRes) umcRes = VM_OK; else if (WAIT_TIMEOUT == dwRes) umcRes = VM_TIMEOUT; else umcRes = VM_OPERATION_FAILED; } return umcRes;} /* vm_status vm_event_timed_wait(vm_event *event, unsigned int msec) *//* Destory the event */void vm_event_destroy(vm_event *event){ /* check error(s) */ if (NULL == event) return; if (event->handle) { CloseHandle(event->handle); event->handle = NULL; }} /* void vm_event_destroy(vm_event *event) */#endif /* defined(_WIN32) || defined(_WIN64) || defined(_WIN32_WCE) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -