The linux kernel will use the VIP/PID to load a device driver (like most operating systems).
BUT .. you can then use udev rules to do extra things ... including block a device based on some attributes (manufacturer string/tag for example).
Most device showing up as a serial port on linux use a usb to serial adapter and the most common ones are from FTDI.
They have a VID of 0403 (Future Technology Devices International) and then various PID depending on which of their chip is used.
On top of this FTDI allows their user to set a few things in the chip USB descriptor... including a Manufacturer string (know as iManufaturer in most C/C++ descriptor headers).
Pegasus Astro uses almost exclusively FTDI chip in their device and do set the Manufacturer string to "Pegasus Astro"
And that's what can be used to block their device as ZWO seems to be doing.
I did play with udev and it took be 5 minutes to write a rules that blocks all of my Pegasus Astro devices, just to see how easy it is to do and I assume that's exactly what ZWO is doing.
Now to prove that it is indeed what they do, someone that has a ASIAIR can eject the SD card, mount it on a linux box with a sdcard reader (like mount in on /mnt) and run a simple grep to check if there is a udev rule for Pegasus (assuming the ASIAIR sd card was mounted on /mnt) :
cd /mnt/etc/udev
grep -r -i pegasus *
This would show immediately if there is a specific rule to block Pegasus Astro devices (which does on my test machine
).
So no need to hard code VID/PID, just write udev rules to do it, much simpler (blocking VIP/PID would need to be done in udev too or directly in the ftdi_sio code for the kernel module and recompile it with the special test in it ... trust me, udev is easier and most probably how they do it).