示例#1
0
        private static void GetInputBuffer(string user, out IntPtr inCredBuffer, out int inCredSize)
        {
            if (!string.IsNullOrEmpty(user))
            {
                var usernameBuf = new StringBuilder(user);
                var passwordBuf = new StringBuilder();

                inCredSize   = 1024;
                inCredBuffer = Marshal.AllocCoTaskMem(inCredSize);
                if (NativeCode.CredPackAuthenticationBuffer(0x00, usernameBuf, passwordBuf, inCredBuffer, ref inCredSize))
                {
                    return;
                }

                if (inCredBuffer != IntPtr.Zero)
                {
                    NativeCode.CoTaskMemFree(inCredBuffer);
                }
            }

            inCredBuffer = IntPtr.Zero;
            inCredSize   = 0;
        }