Sanitize and other commands for External SSD Media

I am trying to implement the Sanitize and Firmware Upgrade commands for an external card connected via the Thunderbolt Interface (4.0) Should we consider writing a Kext based off IOBlockStorageDriver or IOPCI interface. NVMController does not expose anything more than the 3 API.. SmartReadData, getLogData and getIdentifyData. The device is connected only on MacOS.(mini and macbooks)

My ioregistry look like :

| |   |       +-o DSB1@1  <class IOPCIDevice, id 0x1000003dc, registered, matched, active, busy 0 (194 ms), retain 14>
| |   |       | +-o IOPP  <class IOPCI2PCIBridge, id 0x100000457, registered, matched, active, busy 0 (182 ms), retain 8>
| |   |       |   +-o UPS0@0  <class IOPCIDevice, id 0x1000003e0, registered, matched, active, busy 0 (182 ms), retain 17>
| |   |       |     +-o IOPP  <class IOPCI2PCIBridge, id 0x100000477, registered, matched, active, busy 0 (181 ms), retain 8>
| |   |       |       +-o pci-bridge@0  <class IOPCIDevice, id 0x1000003e1, registered, matched, active, busy 0 (181 ms), retain 11>
| |   |       |         +-o IOPP  <class IOPCI2PCIBridge, id 0x10000047d, registered, matched, active, busy 0 (180 ms), retain 8>
| |   |       |           +-o pci1987,5021@0  <class IOPCIDevice, id 0x1000003e2, registered, matched, active, busy 0 (180 ms), retain 12>
| |   |       |             +-o IONVMeController  <class IONVMeController, id 0x100000486, registered, matched, active, busy 0 (166 ms), retain 11>
| |   |       |               +-o IONVMeBlockStorageDevice@1  <class IONVMeBlockStorageDevice, id 0x10000048c, registered, matched, active, busy 0 (166 ms), retain 11>
| |   |       |                 +-o IOBlockStorageDriver  <class IOBlockStorageDriver, id 0x10000048d, registered, matched, active, busy 0 (166 ms), retain 8>
| |   |       |                   +-o Prograde Digital Media  <class IOMedia, id 0x10000048e, registered, matched, active, busy 0 (166 ms), retain 12>
| |   |       |                     +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x100000490, registered, matched, active, busy 0 (0 ms), retain 6>
| |   |       |                     +-o IOGUIDPartitionScheme  <class IOGUIDPartitionScheme, id 0x100000492, !registered, !matched, active, busy 0 (0 ms), retain 7>
| |   |       |                       +-o EFI System Partition@1  <class IOMedia, id 0x1000004d7, registered, matched, active, busy 0 (0 ms), retain 10>
| |   |       |                       | +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x1000004db, registered, matched, active, busy 0 (0 ms), retain 6>
| |   |       |                       +-o Untitled 2@2  <class IOMedia, id 0x1000004d9, registered, matched, active, busy 0 (0 ms), retain 11>
| |   |       |                         +-o IOMediaBSDClient  <class IOMediaBSDClient, id 0x1000004df, registered, matched, active, busy 0 (0 ms), retain 7>Any pointers on this would be helpful.