[DllImport(ImportFileName, EntryPoint = "GetLocalUserPasswordInformation")] // 32-bit version
 private static extern int GetLocalUserPasswordInformation32(string userName, ref UserPasswordInformation32 userPasswordInfo, out AccountStatus status);
        // Bit-size/platform inter-mediator for getting user password information
        private static int GetLocalUserPasswordInformation(string userName, out UserPasswordInformation userPasswordInfo, out AccountStatus accountStatus)
        {
            userPasswordInfo = new UserPasswordInformation();

            if (Common.GetOSPlatformID() == PlatformID.MacOSX)
            {
                int lastChangeDate, maxDaysForChange, accountExpirationDate;

                accountStatus = AccountStatus.Normal;

                // Mac OS X call
                if (GetLocalUserPasswordInformationMac(userName, out lastChangeDate, out maxDaysForChange, out accountExpirationDate) == 0)
                {
                    userPasswordInfo.lastChangeDate = lastChangeDate;
                    userPasswordInfo.maxDaysForChange = maxDaysForChange;
                    userPasswordInfo.accountExpirationDate = accountExpirationDate;
                    return 0;
                }
            }
            else
            {
                if (IntPtr.Size == 4)
                {
                    // 32-bit OS call
                    UserPasswordInformation32 userPasswordInfo32 = new UserPasswordInformation32();

                    if (GetLocalUserPasswordInformation32(userName, ref userPasswordInfo32, out accountStatus) == 0)
                    {
                        userPasswordInfo.lastChangeDate = userPasswordInfo32.lastChangeDate;
                        userPasswordInfo.minDaysForChange = userPasswordInfo32.minDaysForChange;
                        userPasswordInfo.maxDaysForChange = userPasswordInfo32.maxDaysForChange;
                        userPasswordInfo.warningDays = userPasswordInfo32.warningDays;
                        userPasswordInfo.inactivityDays = userPasswordInfo32.inactivityDays;
                        userPasswordInfo.accountExpirationDate = userPasswordInfo32.accountExpirationDate;
                        return 0;
                    }
                }
                else
                {
                    // 64-bit OS call
                    return GetLocalUserPasswordInformation64(userName, ref userPasswordInfo, out accountStatus);
                }
            }

            return 1;
        }