I am currently using IRP_MJ_DEVICE_CONTROL and DeviceIoControl to process IRPs and recently someone told me that he is using communication ports by calling FltCreateCommunicationPort , FltSendMessage etc.
what are the differences between those methods?
what are the pros and cons of each method?
how does each method work?
wrote in message news:xxxxx@ntdev… > Hi! > > > I am currently using IRP_MJ_DEVICE_CONTROL and DeviceIoControl to process IRPs and recently someone told me that he is using communication ports by calling FltCreateCommunicationPort , FltSendMessage etc. > > what are the differences between those methods? > what are the pros and cons of each method? > how does each method work? > > thanks!! > sapgr. > > >
These are specific to file system filter drivers. If you’re not writing a file system filter driver, they don’t apply to you.
They’re just wrappers around IOCTLs, that file system filters can use. If you’re currently using IOCTLs, AND you’re writing a file system filter driver (you should be posting to the NTFSD forum and) there’s no real advantage to changing your implementation.
When you use ioctls to allow a driver to send notifications to an
application, that’s called “inverted call”. It gets that name because
Windows (like most systems with multiple privilege levels) does not
allow ordinary calls from higher privilege (kernel) to lower privilege
(user). We use the ioctl mechanism to perform this inversion.
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.