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); }
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); }