Windows CE API RAPI 轉載

來源:互聯網
上載者:User

1.RAPI概述
Windows CE中有了RAPI以後,PC應用程式就能遠端管理Windows CE裝置。匯出函數將處理檔案系統、註冊表和資料庫以及用於查詢系統配置的函數。大多數RAPI是Windows CE API函數中的副本,只有少數的函數擴充了API。

   RAPI函數被列在Windows CE API 參考中,但是將有PC應用程式來調用而不是由Widows CE應用程式調用。在函數的名稱都有首碼Ce來與他們的Window CE的副本進行區分;例如:Windows CE中的函數GetStoreInformation將在該函數的RAPI版本中稱為CeGetStoreInformation。在Windows CE應用程式將不會調用RAPI函數。

2.初始化RAPI
調用RAPI函數之前,你必須調用函數CeRapiInit或CeRapiInitEx來初始化RAPI庫。這兩個函數的區別在於CeRapiInit會阻塞(等待與Windows CE裝置串連成功),而CeRapiInitEx不會等待串連成功。

這兩個函數的原形。

HRESULT CeRapiIni(void);

HRESULT CeRapiInitEx(RAPIINIT *pRapiInit);

typedef struct _RAPIINIT

{

    DWORD cbSize;

    HANDLE heRapiInit;

    STDAPI hrRapiInit;

} RAPIINIT;

在調用CeRapiInitEx之前,必須填寫cbSize欄位。

3.結束RAPI會話
結束所有必要的RAPI調用時,你應該調用下面這個函數來進行清除:

HRESULT CeRapiUninit(void);

這個函數很好地關閉與遠程裝置地RAPI通訊。如果RAPI會話沒有被初始化

CeRapiUninit將返回E_FAIL

4.預定義的RAPI函數
RAPI服務包括很多預定義的RAPI函數,這些在串連時,PC端複製Windows CE函數。因此,正如GetStoreInformation將把Object Storage Service哭得大小和空間返回到Windows CE程式,CeGetStoreInformation將把關於串連的Windows CE裝置的相同資訊返回到基於PC的應用程式。

4.1 RAPI系統資訊函數

大多數函數都是Windows CE函數的副本,除了CeGetPassWord和CeRapiInvoke

系統資訊函數

函數

描述

CeGetSystemInfo
返回當前系統資訊

CeGetSystemMetrics
擷取Windows元素的尺寸和系統設定

CeGetVersionEx
擷取當前啟動並執行作業系統版本的擴充資訊

CeGetSystemPowerStatusEx
擷取電池狀態

CeGlobalMemoryStatus
擷取系統實體記憶體和虛擬記憶體資訊

CeGetStoreInformation
擷取儲存空間資訊並填入STORE_INFORMATION結構

4.2 RAPI檔案和目錄管理函數

下面的列表顯示的是RAPI檔案管理函數,這個列表說明幾乎所有可用於Windows CE應用程式的檔案函數都可以用於基於PC的程式。

函數

描述

CeCopyFile
複製檔案

CeCreateDirectory
建立目錄

CeCreateFile
建立,開啟檔案、管道、通訊資源、磁碟裝置或者控制台。返回一個控制代碼用來訪問對象。

CeDeleteFile
刪除檔案

CeFindAllFiles
從指定的Windows CE目錄中擷取所有檔案和目錄的資訊,並且複製到一個包含CE_FIND_DATA結構的數組中

CeFindFirstFile
在目錄中尋找匹配給定檔案名稱的一個檔案

CeFindClose
關閉指定的尋找控制代碼,CeFindFirstFile和CeFindNextFile 函數用這個控制代碼尋找檔案

CeFindNextFile
從上一次訪問的CeFindFirstFile繼續尋找檔案

CeGetFileAttributes
返回指定檔案或目錄的屬性

CeGetFileSize
擷取指定檔案的位元組大小

CeGetFileTime
擷取檔案建立日期時間,最後訪問日期時間和最後修改日期時間

CeMoveFile
移動(重新命名)一個檔案或者目錄

CeReadFile
從檔案指標處讀取檔案資料

CeWriteFile
從檔案指標處寫入檔案資料

表內有一個新函數CeFindAllFiles,它對Windows CE 應用程式不可用。

原型:

BOOL CeFindAllFiles (LPCWSTR szPath, DWORD dwFlags,

                     LPDWORD lpdwFoundCount,

                     LPLPCE_FIND_DATA ppFindDataArray);

設計CeFindAllFiles 是為了增強效能,只需調用它一次就能返回給定目錄的所有檔案,而不需要使用CeFindFirstFile和CeFindNextFile來重複RAPI的調用。

具體參數參考SDK…

4.3 RAPI資料庫函數

下面的列表中顯示的是RAPI資料庫函數。這些函數類比了在Windows CE中找到的擴充資料庫API

資料庫函數

CeCreateDatabase
CeOpenDatabaseEx

CeCreateDatabaseEx
CeReadRecordProps

CeDeleteDatabase
CeReadRecordPropsEx

CeDeleteDatabaseEx
CeSeekDatabase

CeDeleteRecord
CeSetDatabaseInfo

CeFindFirstDatabase
CeSetDatabaseInfoEx

CeFindFirstDatabaseEx
CeWriteRecordProps

CeFindNextDatabase
CeMountDBVol

CeFindNextDatabaseEx
CeUnmountDBVol

CeOidGetInfo
CeEnumDBVolumes

CeOidGetInfoEx
CeFindAllDatabases

CeOpenDatabase

幾乎所有的資料庫函數都有Windows CE副本。唯一的例外的是新函數CeCreateDatabase

像CeFindAllFiles一樣,設計這個函數也是為了增強效能。

函數原型:

BOOL CeFindAllDatabases (DWORD dwDbaseType, WORD wFlags,

                         LPWORD cFindData,

                         LPLPCEDB_FIND_DATA ppFindData);

具體參數參考SDK…

RAPI註冊表管理函數

這些函數與它們的Windows CE副本的工作方式一樣,但是,要記住所有的字串都是Unicode格式。

4.4 其他的API函數

可以說Windows CE上的功能,通過RAPI都能實現,我在這裡不可能不一一列舉了。

電量顯示函數

STDAPI_(BOOL) CeGetSystemPowerStatusEx

(

PSYSTEM_POWER_STATUS_EX pstatus,

BOOL fUpdate

);

建立進程,就是可以開啟CE上的應用程式

CeCreateProcess

表單管理函數

表單管理函數

CeGetWindow
CeGetWindowText

CeGetWindowLong
CeGetClassName

5.Pget例子程式
編寫RAPI應用程式需要加RAPI.h 和RAPI.lib

在EVC4.0下設定方法:

[Tools]\[Options…]\[Directories]進行設定他們的目錄。

在VSS2005下的設定方法:

[Tools]\[Options]\[Projects and Solutions][VC++ Directories ]

下面時.h檔案lib的存放目錄。

C:\Program Files\Windows CE Tools\wce420\POCKET PC 2003\Activesync\Inc

C:\Program Files\Windows CE Tools\wce420\POCKET PC 2003\Activesync\Lib

C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Activesync\Inc

C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Activesync\Lib

這個程式是SDK的例子代碼

具體路徑

PPC2003 和 WM5 PPC

C:\Program Files\Windows CE Tools\wce420\POCKET PC 2003\Samples\Win32\Rapi\Pget

C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Samples\CPP\Win32\Rapi\Pget

WM5 SP

C:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Smartphone SDK\Samples\CPP\Win32\Rapi\Pget

這個程式是從小機器上複製檔案到PC的控制台應用程式。

代碼部分就不具體寫出了。只說明一下流程

複製檔案的命令是;

Pget <CE源檔案>   <PC目的檔案>

1. 用CeRapiInit()進行初始化。

2. CeFindFirstFile()來判斷CE端是否存在該檔案。

3. CeCreateFile()來開啟CE端的檔案。

4. CreateFile()來建立PC端的複製到的檔案。

5. CeReadFile()把CE的檔案讀到緩衝區裡。

6. WriteFile()把緩衝區裡的資料儲存到PC端。

7. CeCloseHandle()和CloseHandle()關閉CE和PC上的檔案控制代碼。

8. 最後調用CeRapiUninit(); 進行清楚。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.