Is it possible to read/write sectors of a disk using both SCSI PASS THROUGH and ATA PASS THROUGH?

If i can read sectors of a disk on a system using SCSI PASS THROUGH, then does this mean the disk doesn’t support ATA pass through or any other method and i can only use SCSI to communicate with it? I’m asking this because i wrote a program that can read and write using SCSI pass through IOCTL, but when i try to use ATA pass trough it doesn’t work, how can i know if the hardware supports it or not (I’m using VMware to test it)

And is there any other method other that SCSI PASS THROUGH and ATA PASS THROUGH to send IRP messages to port drivers from user-mode?

also what’s the difference between SCSI_PASS_THROUGH_DIRECT and SCSI_PASS_THROUGH? do they send the IRP to different underlying driver? if so, which drivers?

You ought to be able to answer that question yourself. A given disk drive supports either the ATA command set or the SCSI command set.

The SCSI command set does include the ability to send ATA pass commands, but not vice versa.