Isn't the purpose of using GetProcAddress here that we can get the code to work on XP systems?  Looking at MSDN, the GetProductInfo function is only available on Vista and greater (and equivalent server), so presumably, pGPI will be NULL on XP, and crash?