• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            twzheng's cppblog

            『站在風口浪尖緊握住鼠標旋轉!』 http://www.cnblogs.com/twzheng

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              136 隨筆 :: 78 文章 :: 353 評論 :: 0 Trackbacks
            CreateEvent 函數

            函數功能描述:創建或打開一個命名的或無名的事件對象
            函數原型:
            HANDLE CreateEvent(
              LPSECURITY_ATTRIBUTES lpEventAttributes,   // 安全屬性
              BOOL bManualReset,   // 復位方式
              BOOL bInitialState,   // 初始狀態
              LPCTSTR lpName   // 對象名稱
            );

            參數:

            lpEventAttributes:
                  [輸入]一個指向SECURITY_ATTRIBUTES結構的指針,確定返回的句柄是否可被子進程繼承。如果lpEventAttributes是NULL,此句柄不能被繼承。
                  Windows NT/2000:lpEventAttributes的結構中的成員為新的事件指定了一個安全符。如果lpEventAttributes是NULL,事件將獲得一個默認的安全符。

            bManualReset:
                  [輸入]指定將事件對象創建成手動復原還是自動復原。如果是TRUE,那么必須用ResetEvent函數來手工將事件的狀態復原到無信號狀態。如果設置為FALSE,當事件被一個等待線程釋放以后,系統將會自動將事件狀態復原為無信號狀態。

            bInitialState:
                  [輸入]指定事件對象的初始狀態。如果為TRUE,初始狀態為有信號狀態;否則為無信號狀態。

            lpName:
                  [輸入]指定事件的對象的名稱,是一個以0結束的字符串指針。名稱的字符格式限定在MAX_PATH之內。名字是對大小寫敏感的。
                  如果lpName指定的名字,與一個存在的命名的事件對象的名稱相同,函數將請求EVENT_ALL_ACCESS來訪問存在的對象。這時候,由于bManualReset和bInitialState參數已經在創建事件的進程中設置,這兩個參數將被忽略。如果lpEventAttributes是參數不是NULL,它將確定此句柄是否可以被繼承,但是其安全描述符成員將被忽略。
                  如果lpName為NULL,將創建一個無名的事件對象。
                  如果lpName的和一個存在的信號、互斥、等待計時器、作業或者是文件映射對象名稱相同,函數將會失敗,在GetLastError函數中將返回ERROR_INVALID_HANDLE。造成這種現象的原因是這些對象共享同一個命名空間。

                  終端服務(Terminal Services):名稱中可以加入"Global\"或是"Local\"的前綴,這樣可以明確的將對象創建在全局的或事務的命名空間。名稱的其它部分除了反斜杠(\),可以使用任意字符。詳細內容可參考Kernel Object Name Spaces。
                  Windows 2000:在Windows 2000系統中,沒有終端服務運行,"Global\"和"Local\"前綴將被忽略。名稱的其它部分除了反斜杠(\),可以使用任意字符。
                  Windows NT 4.0以及早期版本, Windows 95/98:名稱中除了反斜杠(\),可以使用任意字符。

            返回值:
                   如果函數調用成功,函數返回事件對象的句柄。如果對于命名的對象,在函數調用前已經被創建,函數將返回存在的事件對象的句柄,而且在GetLastError函數中返回ERROR_ALREADY_EXISTS。
                  如果函數失敗,函數返回值為NULL,如果需要獲得詳細的錯誤信息,需要調用GetLastError。

            備注:
                  調用CreateEvent函數返回的句柄,該句柄具有EVENT_ALL_ACCESS權限去訪問新的事件對象,同時它可以在任何有此事件對象句柄的函數中使用。
                  在調用的過程中,所有線程都可以在一個等待函數中指定事件對象句柄。當指定的對象的狀態被置為有信號狀態時,單對象等待函數將返回。
                  對于多對象等待函數,可以指定為任意或所有指定的對象被置為有信號狀態。當等待函數返回時,等待線程將被釋放去繼續運行。
                  初始狀態在bInitialState參數中進行設置。使用SetEvent函數將事件對象的狀態置為有信號狀態。使用ResetEvent函數將事件對象的狀態置為無信號狀態。
                  當一個手動復原的事件對象的狀態被置為有信號狀態時,該對象狀態將一直保持有信號狀態,直至明確調用ResetEvent函數將其置為無符號狀態。
                  當事件的對象被置為有信號狀態時,任意數量的等待中線程,以及隨后開始等待的線程均會被釋放。
                  當一個自動復原的事件對象的狀態被置為有信號狀態時,該對象狀態將一直保持有信號狀態,直至一個等待線程被釋放;系統將自動將此函數置為無符號狀態。如果沒有等待線程正在等待,事件對象的狀態將保持有信號狀態。
                  多個進程可持有同一個事件對象的多個句柄,可以通過使用此對象來實現進程間的同步。下面的對象共享機制是可行的:
                  ·在CreateEvent函數中,lpEventAttributes參數指定句柄可被繼承時,通過CreateProcess函數創建的子進程繼承的事件對象句柄。
                  ·一個進程可以在DuplicateHandle函數中指定事件對象句柄,從而獲得一個復制的句柄,此句柄可以被其它進程使用。
                  ·一個進程可以在OpenEvent或CreateEvent函數中指定一個名字,從而獲得一個有名的事件對象句柄。

                  使用CloseHandle函數關閉句柄。當進程停止時,系統將自動關閉句柄。當最后一個句柄被關閉后,事件對象將被銷毀。

            使用環境:
                  Windows NT/2000:需要3.1或更高版本
                  Windows 95/98:需要Windows 95或更高版本
                  頭文件:定義在Winbase.h;需要包含 Windows.h。
                  導入庫:user32.lib
                  Unicode:在Windows NT/2000中,以 Unicode 和 ANSI 執行

            參考:
                  Synchronization Overview, Synchronization Functions, CloseHandle, CreateProcess, DuplicateHandle, OpenEvent, ResetEvent, SECURITY_ATTRIBUTES, SetEvent, Object Names

            示例代碼:
                  // 創建一個有名的,不能被繼承的,手動復原,初始狀態是無信號狀態的事件對象
                  Handle h = CreateEvent(NULL,TRUE,FALSE,“MyEvent”);

            posted on 2007-05-05 13:25 譚文政 閱讀(11117) 評論(0)  編輯 收藏 引用 所屬分類: 網絡編程
            亚洲AV无码久久精品色欲| 久久99热这里只有精品国产| 亚洲国产成人精品91久久久 | 亚洲&#228;v永久无码精品天堂久久 | 久久久久久精品免费免费自慰| 久久精品无码专区免费| 国产激情久久久久影院| 热99re久久国超精品首页| 91精品国产综合久久久久久| av国内精品久久久久影院| www亚洲欲色成人久久精品| 99久久国产综合精品成人影院| 久久久噜噜噜久久熟女AA片| 国产ww久久久久久久久久| 国产三级观看久久| 日日狠狠久久偷偷色综合96蜜桃| 久久久精品视频免费观看| 久久婷婷五月综合色奶水99啪 | 午夜精品久久久久9999高清| 亚洲人成伊人成综合网久久久| 国产精品久久自在自线观看| 久久综合五月丁香久久激情| 亚洲国产精品久久电影欧美 | 久久99精品久久只有精品| 色88久久久久高潮综合影院| 国产精品成人99久久久久91gav| 久久久久亚洲精品天堂久久久久久| 伊人久久大香线焦AV综合影院| 香蕉久久一区二区不卡无毒影院| 久久国产亚洲精品| 日韩久久久久中文字幕人妻| 久久亚洲国产中v天仙www| 亚洲精品无码久久久久去q| 激情五月综合综合久久69| 亚洲va国产va天堂va久久| 国产99久久久国产精品小说| 久久精品二区| 99久久国产亚洲高清观看2024| 久久香蕉国产线看观看乱码| 性欧美大战久久久久久久久| 久久久久久久久久久免费精品 |