SDL_JoystickGetDeviceGUID vs SDL_JoystickGetGUID

I’m trying to understand what is the difference between these two functions? When would you want to use one or the other?

I look at the online docs and .h files, but could not find anything.------------------------

Is the only difference that one uses Joystick pointer and other index?

In that case, I have another question. When I plug in XBox controller in Linux or Mac, it returns a sensible value. But when I plug it into a Windows machine, I get all zeroes?

Are those zeroes reserved for XInput devices? If yes, can I be certain that those would map the buttons in the same way for different types of controllers? I’m not using Controller API, but only Joystick API and I’m detecting settings via GUIDs.------------------------