How does the driverkit serve as a bridge between hardware and the system?

I want to use DriverKit to develop a USBDriver, which serves as a bridge between USB devices and the system. All messages between USB devices and the system will be forwarded through the USBDriver.

Can anyone give me some tips or suggestions? What API should I use? I couldn't find anything like this in the documentation or sample code.

class MyUSBDriver: public IOUserClient
{
public:
    virtual bool init() override;
    virtual kern_return_t Start(IOService * provider) override;
    virtual kern_return_t Stop(IOService * provider) override;
    virtual void free() override;
    
    virtual kern_return_t GetRegistryEntryID(uint64_t * registryEntryID) override;
    virtual kern_return_t NewUserClient(uint32_t type, IOUserClient** userClient) override;
    
    virtual kern_return_t ExternalMethod(uint64_t selector,
                                         IOUserClientMethodArguments* arguments,
                                         const IOUserClientMethodDispatch* dispatch,
                                         OSObject* target,
                                         void* reference) override;

};

I am now able to retrieve the device descriptor in the Start method

        IOUSBHostDevice *device = OSDynamicCast(IOUSBHostDevice, provider);
        
        if (device) {
            
            const IOUSBDeviceDescriptor *deviceDescriptor = device->CopyDeviceDescriptor();
            if (deviceDescriptor) {
                uint16_t idVendor = deviceDescriptor->idVendor;
                uint16_t idProduct = deviceDescriptor->idProduct;
                uint8_t iSerialNumber = deviceDescriptor->iSerialNumber;
                
                
                IOUSBHostFreeDescriptor(deviceDescriptor);

            }
            
        }