修正:當您使用 Windows Embedded CE 6.0 R3 中的 SetLocalTime 或 SetSystemTime 函式時,可能會發生一小時的時間偏移

症狀

請考慮以下案例:

  • 你有一個應用程式正在運行在基於 Windows Embedded CE 6.0 R3 的裝置上。
  • 應用程式呼叫 SetLocalTime 函式來更新裝置的本地時間。

在這種情況下,你可能會發現裝置的本地時間偶爾會在函式被呼叫後延遲一小時。

注意:當你使用設定系統時間(SetSystemTime)函式時,也可能會遇到同樣的問題。

原因

此問題發生是因為 SetLocalTime 與 SetSystemTime 函式並非執行緒安全。 這些函式會修改核心中的一個全域變數,而該變數並未被關鍵區段物件正確保護。

解決方式

軟體更新資訊

Microsoft 現已於 2012 年 3 月推出 Windows Embedded CE 6.0 月度更新,支援軟體更新。 在「檔案資訊」區塊中,套件檔案名稱包含產品版本、日期、知識庫文章編號及處理器類型。 封裝檔名稱格式如下:

產品版本-yymmdd-kbnnnn-處理器類型例如,Wincepb60-110128-kb2492159-armv4i.msi 是 ARMV4i Windows Embedded CE 6.0 Platform Builder 修正,該修正已在知識庫文章 2492159 中說明,並收錄於 2011 年 1 月的月度更新中。

為了立即解決此問題,請從以下 Microsoft 官網下載 Windows Embedded CE 6.0 每月更新。

Microsoft 下載中心

Windows Embedded CE 6.0

先決條件

本產品必須已經安裝所有先前發行的更新,才能支援此更新。

重新啟動需求

套用此更新之後,您必須執行整個平台的乾淨組建。 若要解決此問題,請使用下列其中一種方法:

  • [建置] 功能表上,按一下 [清除方案],然後按一下 [建置方案]
  • [建置]功能表上,按一下[重建方案]

套用此軟體更新之後,您不必將電腦重新開機。

更新取代資訊

這個更新不會取代任何其他的更新。

檔案詳細資訊

此軟體更新套件的英文版具有下表中所列的檔案屬性 (或較新的檔案屬性)。 這些檔案的日期與時間是以國際標準時間 (UTC) 表示。 當您檢視檔案資訊時,它會轉換成當地時間。 若要查看 UTC 與當地時間的差異,請使用 [控制台] 中 [日期和時間] 項目的 [時區] 索引標籤。

安裝程式檔案

檔案名稱 檔案大小 日期 時間
Wincepb60-120319-kb2686451-mipsiv_fp.msi 3,493,888 2012年3月20日 18:21
Wincepb60-120319-kb2686451-sh4.msi 3,149,824 2012年3月20日 18:21
Wincepb60-120319-kb2686451-x86.msi 2,985,984 2012年3月20日 18:21
Wincepb60-120319-kb2686451-armv4i.msi 3,493,888 2012年3月20日 18:21
Wincepb60-120319-kb2686451-mipsii.msi 3,334,144 2012年3月20日 18:21
Wincepb60-120319-kb2686451-mipsii_fp.msi 3,448,832 2012年3月20日 18:21
Wincepb60-120319-kb2686451-mipsiv.msi 3,371,008 2012年3月20日 18:21

此更新套件隨附的檔案

檔案名稱 檔案大小 日期 時間 路徑
Time.c 23,298 2012年3月8日 01:42 Private\Winceos\Coreos\Nk\Kernel
Nkmain.lib 2,746,064 2012年3月8日 01:39 Public\Common\Oak\Lib\Armv4i\Debug
Nkprmain.lib 2,782,924 2012年3月8日 01:39 Public\Common\Oak\Lib\Armv4i\Debug
Nkmain.lib 1,767,370 2012年3月8日 01:39 Public\Common\Oak\Lib\Armv4i\Retail
Nkprmain.lib 1,792,798 2012年3月8日 01:39 Public\Common\Oak\Lib\Armv4i\Retail
Nkmain.lib 2,588,508 2012年3月8日 01:39 Public\Common\Oak\Lib\Mipsii\Debug
Nkprmain.lib 2,624,494 2012年3月8日 01:39 Public\Common\Oak\Lib\Mipsii\Debug
Nkmain.lib 1,676,650 2012年3月8日 01:39 Public\Common\Oak\Lib\Mipsii\Retail
Nkprmain.lib 1,706,794 2012年3月8日 01:39 Public\Common\Oak\Lib\Mipsii\Retail
Nkmain.lib 2,663,356 2012年3月8日 01:40 Public\Common\Oak\Lib\Mipsii_fp\Debug
Nkprmain.lib 2,699,618 2012年3月8日 01:40 Public\Common\Oak\Lib\Mipsii_fp\Debug
Nkmain.lib 1,736,352 2012年3月8日 01:40 Public\Common\Oak\Lib\Mipsii_fp\Retail
Nkprmain.lib 1,766,604 2012年3月8日 01:40 Public\Common\Oak\Lib\Mipsii_fp\Retail
Nkmain.lib 2,620,962 2012年3月8日 01:40 Public\Common\Oak\Lib\Mipsiv\Debug
Nkprmain.lib 2,657,080 2012年3月8日 01:40 Public\Common\Oak\Lib\Mipsiv\Debug
Nkmain.lib 1,701,878 2012年3月8日 01:40 Public\Common\Oak\Lib\Mipsiv\Retail
Nkprmain.lib 1,731,924 2012年3月8日 01:40 Public\Common\Oak\Lib\Mipsiv\Retail
Nkmain.lib 2,701,072 2012年3月8日 01:41 Public\Common\Oak\Lib\Mipsiv_fp\Debug
Nkprmain.lib 2,737,466 2012年3月8日 01:41 Public\Common\Oak\Lib\Mipsiv_fp\Debug
Nkmain.lib 1,768,040 2012年3月8日 01:41 公共\Common\Oak\Lib\Mipsiv_fp\零售
Nkprmain.lib 1,798,190 2012年3月8日 01:41 公共\Common\Oak\Lib\Mipsiv_fp\零售
Nkmain.lib 2,183,008 2012年3月8日 01:41 Public\Common\Oak\Lib\Sh4\Debug
Nkprmain.lib 2,208,240 2012年3月8日 01:41 Public\Common\Oak\Lib\Sh4\Debug
Nkmain.lib 1,520,142 2012年3月8日 01:41 Public\Common\Oak\Lib\Sh4\Retail
Nkprmain.lib 1,544,514 2012年3月8日 01:41 Public\Common\Oak\Lib\Sh4\Retail
Nkmain.lib 2,174,422 2012年3月8日 01:38 Public\Common\Oak\Lib\X86\Debug
Nkprmain.lib 2,202,554 2012年3月8日 01:38 Public\Common\Oak\Lib\X86\Debug
Nkmain.lib 1,532,248 2012年3月8日 01:38 Public\Common\Oak\Lib\X86\Retail
Nkprmain.lib 1,552,260 2012年3月8日 01:38 Public\Common\Oak\Lib\X86\Retail

參考資料

欲了解更多關於 SetLocalTime 功能的資訊,請造訪以下 Microsoft 開發者網絡 (MSDN) 網站:

SetLocalTime 欲了解更多關於 SetSystemTime 函式的資訊,請造訪以下 MSDN 網站:

SetSystemTime 欲了解更多關鍵剖面物件的資訊,請造訪以下MSDN網站:

Windows Embedded CE 6.0 (關鍵區段物件) 欲了解更多軟體更新術語,請點擊以下文章編號以瀏覽 Microsoft 知識庫中的文章:

824684 描述用於描述Microsoft軟體更新的標準術語