RAPI简单说明及Sample Code
RAPI簡單說明及Sample Code
一.什么是RAPI
???????? RAPI用來通過ActiveSync來建立PC與Device的通信。通過RAPI可以實現PC 對Device的控制和同步。
二.使用說明
???????? 常用的RAPI包括File I/O的一些操作,以及獲取系統信息的一些API。
???????? 在使用RAPI來建立PC與Device的連接的時候,需要首先調用CeRapiInit(),相應的在操作結束之后調用CeRapiUninit()來斷開兩者的連接。
三.Sample Code
???????? 下面舉一個簡單的例子來說明RAPI的一個應用實例:
|   PBYTE pBuffer = NULL; HANDLE hFile, hPCFile; DWORD dwBytesReturned = 0; DWORD dwFileSize = 0; ? // Step1: initialize CeRapiInit(); hFile = CeCreateFile(L"//UserDisk//WinCE6.0 RAM Tool.exe", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); ? if (!hFile) { ???? MessageBox(NULL, TEXT("Open file //UserDisk//WinCE6.0 RAM Tool.exe/n"), NULL, MB_ICONERROR); } ? hPCFile = CreateFile(L"D://passion.guo", ???? GENERIC_WRITE, ???? FILE_SHARE_WRITE|FILE_SHARE_READ, ???? NULL, ???? CREATE_ALWAYS, ???? FILE_ATTRIBUTE_NORMAL, ???? NULL); ? if (!hPCFile) { ???? MessageBox(NULL, TEXT("Create file D://passion.guo failed/n"), NULL, MB_ICONERROR); } ? ? dwFileSize = CeGetFileSize(hFile, NULL); pBuffer = new BYTE[dwFileSize]; ? if (!pBuffer) ???? MessageBox(NULL, TEXT("Create buffer failed/n"), NULL, MB_ICONERROR); ? // step2: copy data from device and write to pc ? if (!CeReadFile(hFile, pBuffer, dwFileSize, &dwBytesReturned, NULL)) { ???? MessageBox(NULL, TEXT("read file failed/n"), NULL, MB_ICONERROR); } ? if (!WriteFile(hPCFile, ???? pBuffer, ???? dwFileSize, ???? &dwBytesReturned, ???? NULL)) { ???? MessageBox(NULL, TEXT("write file failed/n"), NULL, MB_ICONERROR); } ? // step 3: Deinit if (hFile) ???? CeCloseHandle(hFile); if (hPCFile) ???? CloseHandle(hPCFile); ? MessageBox(NULL, TEXT("Test Over!!!!/n"), NULL, MB_ICONERROR); // CeCopyFile(L"//UserDisk//initobj.dat", L"//UserDisk//bird.dat", false); CeRapiUninit();  | 
???????? 上述代碼實現了將Device上的//UserDisk//WinCE6.0 RAM Tool.exe拷貝到D://passion.guo的功能。
四.常見問題
???????? 編寫RAPI的程序需要鏈接RAPI.lib,但有的時候無法從本機上找到RAPI.lib,可以安裝Windows Mobile 6 Standard SDK Refresh.msi來解決該問題。
???????? 另外,有的時候引用rapi.h會出現很多編譯錯誤,這個時候使用Windows Mobile 6 Standard SDK Refresh.msi中的rapi.h就可以了。
???????? 我相信,使用WinCE的Standard SDK也可以解決該問題,但是我并沒有嘗試。
總結
以上是生活随笔為你收集整理的RAPI简单说明及Sample Code的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 一加11R现身印度官网:低频版骁龙8+、
 - 下一篇: 索尼提交全新反盗版专利:系统级监测用户播