Thread: PRS-500 Reader internals
View Single Post
Old 10-15-2006, 05:56 AM   #26
igorsk
Wizard
igorsk ought to be getting tired of karma fortunes by now.igorsk ought to be getting tired of karma fortunes by now.igorsk ought to be getting tired of karma fortunes by now.igorsk ought to be getting tired of karma fortunes by now.igorsk ought to be getting tired of karma fortunes by now.igorsk ought to be getting tired of karma fortunes by now.igorsk ought to be getting tired of karma fortunes by now.igorsk ought to be getting tired of karma fortunes by now.igorsk ought to be getting tired of karma fortunes by now.igorsk ought to be getting tired of karma fortunes by now.igorsk ought to be getting tired of karma fortunes by now.
 
Posts: 3,442
Karma: 300001
Join Date: Sep 2006
Location: Belgium
Device: PRS-500/505/700, Kindle, Cybook Gen3, Words Gear
Is this better?
Code:
struct Request {
 DWORD reqNo;
 DWORD reserved[2];
 DWORD extralen;
};
struct Answer {
 DWORD reserved[3];
 DWORD dataLen;
 char  data[1]; //variable length
};
struct SendBuffer {
 DWORD type; //0x10005 for WriteFile
 DWORD reserved[2];
 DWORD dataLen;
 char  data[1]; //variable length
};

int UsbReceiveProc(Request* request, size_t answersize, Answer* answer);
void UsbBuffFree(Answer* answer);
int UsbSendProc(Request* request, SendBuffer* buf, size_t sendsize, DWORD* bytesSent);
Every request and answer further defines the variable data part, e.g.:
Code:
struct FileOpenRequest: Request {
 DWORD nPathLen;
 char path[1]; //variable length
};
struct FileOpenAnswer: Asnswer {
 DWORD hFile;
};
igorsk is offline   Reply With Quote