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