>The original code was keeping a double linked list of structures that were stored in each devices
>context. When an IOCTL came into the CDO, it would traverse this list, match up the structure based
This is normal.
>To me, this was a bit crazy so I removed all of that and implemented a collection.
For what? list _is_ a collection, and does not require reallocations on additions. Reallocations can fail.
Ever heard on IOCTL code collisions? if you will implement some IOCTL on a _real_ device, then you can collide with another vendor's code.
So, make your own CDO with a GUID-based name, and send all IOCTLs there (and only there).
Maxim S. Shatskih
Windows DDK MVP