RAPI简单说明及Sample Code
RAPI簡(jiǎn)單說(shuō)明及Sample Code
一.什么是RAPI
???????? RAPI用來(lái)通過(guò)ActiveSync來(lái)建立PC與Device的通信。通過(guò)RAPI可以實(shí)現(xiàn)PC 對(duì)Device的控制和同步。
二.使用說(shuō)明
???????? 常用的RAPI包括File I/O的一些操作,以及獲取系統(tǒng)信息的一些API。
???????? 在使用RAPI來(lái)建立PC與Device的連接的時(shí)候,需要首先調(diào)用CeRapiInit(),相應(yīng)的在操作結(jié)束之后調(diào)用CeRapiUninit()來(lái)斷開(kāi)兩者的連接。
三.Sample Code
???????? 下面舉一個(gè)簡(jiǎn)單的例子來(lái)說(shuō)明RAPI的一個(gè)應(yīng)用實(shí)例:
| 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(); |
???????? 上述代碼實(shí)現(xiàn)了將Device上的//UserDisk//WinCE6.0 RAM Tool.exe拷貝到D://passion.guo的功能。
四.常見(jiàn)問(wèn)題
???????? 編寫(xiě)RAPI的程序需要鏈接RAPI.lib,但有的時(shí)候無(wú)法從本機(jī)上找到RAPI.lib,可以安裝Windows Mobile 6 Standard SDK Refresh.msi來(lái)解決該問(wèn)題。
???????? 另外,有的時(shí)候引用rapi.h會(huì)出現(xiàn)很多編譯錯(cuò)誤,這個(gè)時(shí)候使用Windows Mobile 6 Standard SDK Refresh.msi中的rapi.h就可以了。
???????? 我相信,使用WinCE的Standard SDK也可以解決該問(wèn)題,但是我并沒(méi)有嘗試。
總結(jié)
以上是生活随笔為你收集整理的RAPI简单说明及Sample Code的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一加11R现身印度官网:低频版骁龙8+、
- 下一篇: User Mode Driver Man