コード例 #1
0
ファイル: SspiWrapper.cs プロジェクト: 85351/dotnet_framework
        static SecurityPackageInfoClass[] EnumerateSecurityPackages()
        {
            if (SecurityPackages != null)
            {
                return(SecurityPackages);
            }

            int moduleCount = 0;
            SafeFreeContextBuffer arrayBaseHandle = null;

            try
            {
                int errorCode = SafeFreeContextBuffer.EnumeratePackages(out moduleCount, out arrayBaseHandle);
                if (errorCode != 0)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new Win32Exception(errorCode));
                }

                SecurityPackageInfoClass[] securityPackages = new SecurityPackageInfoClass[moduleCount];
                for (int i = 0; i < moduleCount; i++)
                {
                    securityPackages[i] = new SecurityPackageInfoClass(arrayBaseHandle, i);
                }
                SecurityPackages = securityPackages;
            }
            finally
            {
                if (arrayBaseHandle != null)
                {
                    arrayBaseHandle.Close();
                }
            }

            return(SecurityPackages);
        }
コード例 #2
0
 private static SecurityPackageInfoClass[] EnumerateSecurityPackages()
 {
     if (SecurityPackages == null)
     {
         int pkgnum = 0;
         SafeFreeContextBuffer pkgArray = null;
         try
         {
             int error = SafeFreeContextBuffer.EnumeratePackages(out pkgnum, out pkgArray);
             if (error != 0)
             {
                 throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new Win32Exception(error));
             }
             SecurityPackageInfoClass[] classArray = new SecurityPackageInfoClass[pkgnum];
             for (int i = 0; i < pkgnum; i++)
             {
                 classArray[i] = new SecurityPackageInfoClass(pkgArray, i);
             }
             SecurityPackages = classArray;
         }
         finally
         {
             if (pkgArray != null)
             {
                 pkgArray.Close();
             }
         }
     }
     return(SecurityPackages);
 }