In order for the modifier to inform 3ds Max what type of object it needs it implements the method Modifier::InputType(). This method returns the Class_ID of the type of object it needs for input. For example, the Edit Spline modifier implements this method as shown below:
Class_ID InputType() { return Class_ID(SPLINESHAPE_CLASS_ID,0); }
This tells 3ds Max which objects the modifier can be applied to. Only those objects that are spline shapes, or are able to convert themselves to spline shapes, may be modified by Edit Spline. The same is true for Volume Select Modifier. It requires objects that are triangle meshes for it to do its work. Therefore it implements InputType() as shown below:
Class_ID InputType() { return Class_ID(TRIOBJ_CLASS_ID,0); }
When an object is selected in 3ds Max, only those modifiers that are appropriate for modifying it are enabled in the user interface. This is done by querying the modifiers to see if their InputType() matches the Class_ID of the selected object, or the objects that it can convert itself to. If it is, the modifier is enabled, otherwise its disabled.