More logging in IISExpress shutdown (#6854)

This commit is contained in:
Pavel Krymets 2019-01-18 14:29:07 -08:00 committed by GitHub
parent 707f06ead8
commit 8006e2d07f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 5 deletions

View File

@ -453,19 +453,23 @@ namespace Microsoft.AspNetCore.Server.IntegrationTesting.IIS
internal static extern bool PostMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam); internal static extern bool PostMessage(HandleRef hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
} }
private static void SendStopMessageToProcess(int pid) private void SendStopMessageToProcess(int pid)
{ {
Logger.LogInformation($"Sending shutdown request to {pid}");
for (var ptr = WindowsNativeMethods.GetTopWindow(IntPtr.Zero); ptr != IntPtr.Zero; ptr = WindowsNativeMethods.GetWindow(ptr, 2)) for (var ptr = WindowsNativeMethods.GetTopWindow(IntPtr.Zero); ptr != IntPtr.Zero; ptr = WindowsNativeMethods.GetWindow(ptr, 2))
{ {
uint num; WindowsNativeMethods.GetWindowThreadProcessId(ptr, out var windowProcessId);
WindowsNativeMethods.GetWindowThreadProcessId(ptr, out num); if (pid == windowProcessId)
if (pid == num)
{ {
var hWnd = new HandleRef(null, ptr); var hWnd = new HandleRef(null, ptr);
WindowsNativeMethods.PostMessage(hWnd, 0x12, IntPtr.Zero, IntPtr.Zero); if (!WindowsNativeMethods.PostMessage(hWnd, 0x12, IntPtr.Zero, IntPtr.Zero))
{
throw new InvalidOperationException($"Unable to PostMessage to process {pid}. LastError: {Marshal.GetLastWin32Error()}");
}
return; return;
} }
} }
throw new InvalidOperationException($"Unable to find main window for process {pid}");
} }
private void GracefullyShutdownProcess(Process hostProcess) private void GracefullyShutdownProcess(Process hostProcess)