internal static extern bool AuthzGetInformationFromContext( SafeAuthZClientContextHandle hAuthzClientContext, AUTHZ_CONTEXT_INFORMATION_CLASS InfoClass, int BufferSize, out int pSizeRequired, SafeBuffer Buffer );
private NtResult <SafeStructureInOutBuffer <T> > QueryBuffer <T>(AUTHZ_CONTEXT_INFORMATION_CLASS info_class, bool throw_on_error) where T : new() { if (SecurityNativeMethods.AuthzGetInformationFromContext(_handle, info_class, 0, out int required_size, SafeHGlobalBuffer.Null)) { return(NtStatus.STATUS_INVALID_PARAMETER.CreateResultFromError <SafeStructureInOutBuffer <T> >(throw_on_error)); } var err = Win32Utils.GetLastWin32Error(); if (err != Win32Error.ERROR_INSUFFICIENT_BUFFER) { return(err.CreateResultFromDosError <SafeStructureInOutBuffer <T> >(throw_on_error)); } using (var buffer = new SafeStructureInOutBuffer <T>(required_size, false)) { return(SecurityNativeMethods.AuthzGetInformationFromContext(_handle, info_class, buffer.Length, out required_size, buffer).CreateWin32Result(throw_on_error, () => buffer.Detach())); } }
public static SafeHGlobalHandle GetCtxInfo(SafeAUTHZ_CLIENT_CONTEXT_HANDLE hCtx, AUTHZ_CONTEXT_INFORMATION_CLASS type) { var b = AuthzGetInformationFromContext(hCtx, type, 0, out var szReq, IntPtr.Zero); if (!b && Win32Error.GetLastError() != Win32Error.ERROR_INSUFFICIENT_BUFFER) { TestContext.WriteLine($"AuthzGetInformationFromContext:{Win32Error.GetLastError()}"); } Assert.That(!b); if (szReq == 0) { return(SafeHGlobalHandle.Null); } var buf = new SafeHGlobalHandle((int)szReq); b = AuthzGetInformationFromContext(hCtx, type, szReq, out szReq, (IntPtr)buf); if (!b) { TestContext.WriteLine($"AuthzGetInformationFromContext:{Win32Error.GetLastError()}"); } Assert.That(b); return(buf); }
internal static extern bool AuthzModifySids( SafeAuthZClientContextHandle hAuthzClientContext, AUTHZ_CONTEXT_INFORMATION_CLASS SidClass, AuthZSidOperation[] pSidOperations, SafeTokenGroupsBuffer pSids );