CreateEvent创建事件对象
HANDLE CreateEventA(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPCSTR lpName
);
**LPSECURITY_ATTRIBUTES 😗*指向SECURITY_ATTRIBUTES結構的指針。如果此參數為NULL,則子進程不能繼承該句柄。事件獲取默認的安全描述符
**bManualReset:**如果此參數為TRUE,則該函數創建一個手動重置事件對象,該對象需要使用 ResetEvent函數將事件狀態設置為非信號狀態。
bInitialState:如果此參數為TRUE,則表示事件對象的初始狀態;
lpName:如果lpName為NULL,則創建事件對象時不使用名稱。
hEvent:操作完成后,系統會將其設置為已通知狀態的事件的句柄。在將此結構傳遞給任何重疊的函數之前,用戶必須使用CreateEvent函數將該成員初始化為零或有效的事件句柄。然后可以使用此事件來同步設備的同時I / O請求。有關更多信息,請參見備注。
在開始I / O操作之前,諸如ReadFile和WriteFile之類的功能會將此句柄設置為非信號狀態。操作完成后,手柄將設置為發出信號的狀態。
諸如GetOverlappedResult和同步等待功能之類的功能會將自動重置事件重置為非信號狀態。因此,您應該使用手動重置事件。如果使用自動重置事件,則如果您等待操作完成,然后將bWait參數設置為TRUE,則調用GetOverlappedResult,則應用程序可以停止響應。
typedef struct _OVERLAPPED {
ULONG_PTR Internal;
ULONG_PTR InternalHigh;
union {
struct {
DWORD Offset;
DWORD OffsetHigh;
} DUMMYSTRUCTNAME;
PVOID Pointer;
} DUMMYUNIONNAME;
HANDLE hEvent;
} OVERLAPPED, *LPOVERLAPPED;
總結
以上是生活随笔為你收集整理的CreateEvent创建事件对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: error C2660: 'Messag
- 下一篇: 和USB设备建立通信的过程