Example #1
0
        /// <summary>
        /// Fetches the available locales.
        /// </summary>
        public int[] QueryAvailableLocales()
        {
            string methodName = "IOPCCommon.QueryAvailableLocales";

            try
            {
                IOPCCommon server = BeginComCall <IOPCCommon>(methodName, true);

                // query for available locales.
                int    count      = 0;
                IntPtr pLocaleIDs = IntPtr.Zero;

                server.QueryAvailableLocaleIDs(out count, out pLocaleIDs);

                // unmarshal results.
                return(ComUtils.GetInt32s(ref pLocaleIDs, count, true));
            }
            catch (Exception e)
            {
                ComCallError(methodName, e);
                return(null);
            }
            finally
            {
                EndComCall(methodName);
            }
        }
Example #2
0
        public void QueryAvailableLocaleIDs(out int[] p_LocalIDs)
        {
            p_LocalIDs = null;
            int    l_Count;
            IntPtr l_PtrIDs;
            int    l_HResult = m_IfCommon.QueryAvailableLocaleIDs(out l_Count, out l_PtrIDs);

            if (HResults.Failed(l_HResult))
            {
                Marshal.ThrowExceptionForHR(l_HResult);
            }
            if (((int)l_PtrIDs) == 0)
            {
                return;
            }
            if (l_Count < 1)
            {
                Marshal.FreeCoTaskMem(l_PtrIDs);
                return;
            }

            p_LocalIDs = new int[l_Count];
            Marshal.Copy(l_PtrIDs, p_LocalIDs, 0, l_Count);
            Marshal.FreeCoTaskMem(l_PtrIDs);
        }