I've not really been following this, but why doesn't `SHBindToParent()` call `SHBindToFolderIDListParent()`?
What you want to do is to implement `SHBindToFolderIDListParent()` using the code in `SHBindToParent()` as a start, adding the code to deal with the passed in `IShellFolder`. Then **in the same commit** change `SHBindToParent()` to call `SHBindToFolderIDListParent()`. With careful choice of the positioning of the second function with respect to first one, the diff should be quite small.