Until now, LPC was just a stub, any application that relied on LPC for communication would fail. This change implements parts of LPC, to allow for IPC between programs. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=30069 - fully fixed, sqlservr is able to run as expected Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=59494 - partially fixed, starmoney doesn't flat out crash anymore, but it doesn't start fully, possibly because it uses the ALPC system which was introduced in Windows Vista, the version Starmoney 10 was advertised for -- v11: ntdll/tests: Add zero-length LPC message tests. ntdll/tests: Add LPC port error handling tests. server: Handle LPC port close to break circular references. ntdll: Implement NtRegisterThreadTerminatePort. server: Implement LPC thread termination notification. ntdll: Implement NtReplyPort, NtReplyWaitReceivePort and NtReplyWaitReceivePortEx. ntdll: Implement NtRequestPort and NtRequestWaitReplyPort. server: Implement LPC message request and reply handlers. ntdll: Implement NtListenPort, NtAcceptConnectPort and NtCompleteConnectPort. ntdll: Implement NtConnectPort and NtSecureConnectPort. server: Implement LPC connection acceptance and completion. server: Implement LPC connection request and listen handlers. ntdll: Implement NtCreatePort and NtCreateWaitablePort. server: Add LPC port object infrastructure. https://gitlab.winehq.org/wine/wine/-/merge_requests/10611