However, there's still an issue: the second call to SetDispatchQueue() fails, even if I add a sleep before it. This isn't really an I/O call (it's basically adds and entry to a lookup table inside you DEXT), so the delay wouldn't matter. !!! ERROR : ret = 0xe00002c2 !!! The error 0xe00002c2 is kIOReturnBadArgument. Have you marked any of the methods in your iig file with QUEUENAME-> InterruptQueue? As far as I can tell, the only error SetDispatchQueue can ever return is kIOReturnBadArgument and the only reason it return that is that the corresponding QUEUENAME() declaration is missing. Eventually, I was able to fix it by experimenting with different parameter values: Glad to here that you've got this working. How should I go about doing that, exactly? I'll admit, I haven't tried to implement this in detail, however, fundamentally, the I/O system is blind. That is, the only reason it knows a write worked is because your driver said it did. I think you have enough control of the configuration side that you c