Driver(dext) interface maximum data size

Hi All,

Is there a limit on the data size of input and output in IOConnectCallStructMethod? I am working with CommunicatingBetweenADriverKitExtensionAndAClientApp. It seems there a buffer size limit in OversizedDataStruct in the sample code.

typedef struct { uint64_t foo; uint64_t bar; uint64_t largeArray[511]; } OversizedDataStruct;

If I tested by changing 511 to 0x1E00000(30MB), I got below error. Thread 1: EXC_BAD_ACCESS (code=2, address=0x16f20fff8)

I need to get large image data(over 30 MBytes) from driver(dext) to user client application.

How can I transfer more than 30MB of data from driver to App with IOConnectCallStructMethod? Or is there any other way without using IOConnectCallStructMethod? Please help.

Replies

Hi,

I'm facing a similar problem. I'd like to exchange a bigger portion of data with a dext, but using IOConnectCallStructMethod the maximum size seems to be around 4k and using IOConnectCallScalarMethod it only works up to 16 * sizeof(uint64). Is this true or am I doing something wrong? What would be the preferred way to exchange a bigger amount of data with a dext?

Thanks a lot, Johannes

I had a similar problem but I believe your problem is not related to IOConnectCallStructMethod because I've recently checked the size limit and works ok for my case. Do you still have a similar problem or is it solved ? You can try to allocate same space from heap and check if it is working ok.