日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CreateEvent创建事件对象

發布時間:2025/5/22 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CreateEvent创建事件对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
**usb.cpp** m_hReadEvent=CreateEvent(NULL,TRUE,TRUE,NULL);//初始為無信號狀態 m_hWriteEvent=CreateEvent(NULL,TRUE,TRUE,NULL);

HANDLE CreateEventA(
LPSECURITY_ATTRIBUTES lpEventAttributes,
BOOL bManualReset,
BOOL bInitialState,
LPCSTR lpName
);
**LPSECURITY_ATTRIBUTES 😗*指向SECURITY_ATTRIBUTES結構的指針。如果此參數為NULL,則子進程不能繼承該句柄。事件獲取默認的安全描述符
**bManualReset:**如果此參數為TRUE,則該函數創建一個手動重置事件對象,該對象需要使用 ResetEvent函數將事件狀態設置為非信號狀態。
bInitialState:如果此參數為TRUE,則表示事件對象的初始狀態;
lpName:如果lpName為NULL,則創建事件對象時不使用名稱。

**主函數:** OVERLAPPED overlapped;//OVERLAPPED是一個結構體 //在函數調用中使用該結構之前,應始終將該結構的任何未使用成員初始化為零。否則,函數可能會失敗并返回memset(&overlapped, 0, sizeof(OVERLAPPED));SetEvent(usb.m_hWriteEvent); overlapped.hEvent = usb.m_hWriteEvent ; ::WriteFile(usb.m_hWriteHandle, SendData, nTotalsize,&dwNumberofBytesWritten,&overlapped)

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创建事件对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。