mirror of
https://github.com/reactos/reactos.git
synced 2024-10-06 09:24:11 +00:00
[CSRSRV]: Add a new linked list for console processes, as ListLink is used for all CSR_PROCESSes.
svn path=/trunk/; revision=55620
This commit is contained in:
parent
28178ca5e9
commit
891ac6118d
|
@ -55,6 +55,7 @@ typedef struct _CSRSS_CON_PROCESS_DATA
|
|||
ULONG HandleTableSize;
|
||||
struct _CSRSS_HANDLE *HandleTable;
|
||||
PCONTROLDISPATCHER CtrlDispatcher;
|
||||
LIST_ENTRY ConsoleLink;
|
||||
} CSRSS_CON_PROCESS_DATA, *PCSRSS_CON_PROCESS_DATA;
|
||||
|
||||
typedef struct _CSR_PROCESS
|
||||
|
|
|
@ -373,7 +373,7 @@ ConioProcessKey(MSG *msg, PCSRSS_CONSOLE Console, BOOL TextMode)
|
|||
current_entry = Console->ProcessList.Flink;
|
||||
while (current_entry != &Console->ProcessList)
|
||||
{
|
||||
current = CONTAINING_RECORD(current_entry, CSR_PROCESS, ListLink);
|
||||
current = CONTAINING_RECORD(current_entry, CSR_PROCESS, ConsoleLink);
|
||||
current_entry = current_entry->Flink;
|
||||
ConioConsoleCtrlEvent((DWORD)CTRL_C_EVENT, current);
|
||||
}
|
||||
|
|
|
@ -215,7 +215,7 @@ CSR_API(CsrAllocConsole)
|
|||
/* initialize list head */
|
||||
InitializeListHead(&Console->ProcessList);
|
||||
/* insert process data required for GUI initialization */
|
||||
InsertHeadList(&Console->ProcessList, &ProcessData->ListLink);
|
||||
InsertHeadList(&Console->ProcessList, &ProcessData->ConsoleLink);
|
||||
/* Initialize the Console */
|
||||
Status = CsrInitConsole(Console, Request->Data.AllocConsoleRequest.ShowCmd);
|
||||
if (!NT_SUCCESS(Status))
|
||||
|
@ -307,7 +307,7 @@ CSR_API(CsrAllocConsole)
|
|||
if (!NewConsole)
|
||||
{
|
||||
/* Insert into the list if it has not been added */
|
||||
InsertHeadList(&ProcessData->Console->ProcessList, &ProcessData->ListLink);
|
||||
InsertHeadList(&ProcessData->Console->ProcessList, &ProcessData->ConsoleLink);
|
||||
}
|
||||
|
||||
RtlLeaveCriticalSection(&ProcessData->HandleTableLock);
|
||||
|
@ -786,7 +786,7 @@ CSR_API(CsrGetProcessList)
|
|||
current_entry != &Console->ProcessList;
|
||||
current_entry = current_entry->Flink)
|
||||
{
|
||||
current = CONTAINING_RECORD(current_entry, CSR_PROCESS, ListLink);
|
||||
current = CONTAINING_RECORD(current_entry, CSR_PROCESS, ConsoleLink);
|
||||
if (++nItems <= Request->Data.GetProcessListRequest.nMaxIds)
|
||||
{
|
||||
*Buffer++ = HandleToUlong(current->ClientId.UniqueProcess);
|
||||
|
@ -822,7 +822,7 @@ CSR_API(CsrGenerateCtrlEvent)
|
|||
current_entry != &Console->ProcessList;
|
||||
current_entry = current_entry->Flink)
|
||||
{
|
||||
current = CONTAINING_RECORD(current_entry, CSR_PROCESS, ListLink);
|
||||
current = CONTAINING_RECORD(current_entry, CSR_PROCESS, ConsoleLink);
|
||||
if (Group == 0 || current->ProcessGroupId == Group)
|
||||
{
|
||||
ConioConsoleCtrlEvent(Request->Data.GenerateCtrlEvent.Event, current);
|
||||
|
|
|
@ -400,7 +400,7 @@ GuiConsoleWriteUserSettings(PCSRSS_CONSOLE Console, PGUI_CONSOLE_DATA GuiData)
|
|||
DPRINT("GuiConsoleWriteUserSettings: No Process!!!\n");
|
||||
return;
|
||||
}
|
||||
ProcessData = CONTAINING_RECORD(Console->ProcessList.Flink, CSR_PROCESS, ListLink);
|
||||
ProcessData = CONTAINING_RECORD(Console->ProcessList.Flink, CSR_PROCESS, ConsoleLink);
|
||||
if (!GuiConsoleOpenUserSettings(GuiData, PtrToUlong(ProcessData->ClientId.UniqueProcess), &hKey, KEY_READ | KEY_WRITE, TRUE))
|
||||
{
|
||||
return;
|
||||
|
@ -704,7 +704,7 @@ GuiConsoleHandleNcCreate(HWND hWnd, CREATESTRUCTW *Create)
|
|||
GuiConsoleUseDefaults(Console, GuiData, Console->ActiveBuffer);
|
||||
if (Console->ProcessList.Flink != &Console->ProcessList)
|
||||
{
|
||||
ProcessData = CONTAINING_RECORD(Console->ProcessList.Flink, CSR_PROCESS, ListLink);
|
||||
ProcessData = CONTAINING_RECORD(Console->ProcessList.Flink, CSR_PROCESS, ConsoleLink);
|
||||
if (GuiConsoleOpenUserSettings(GuiData, PtrToUlong(ProcessData->ClientId.UniqueProcess), &hKey, KEY_READ, FALSE))
|
||||
{
|
||||
GuiConsoleReadUserSettings(hKey, Console, GuiData, Console->ActiveBuffer);
|
||||
|
@ -1272,7 +1272,7 @@ GuiConsoleHandleClose(HWND hWnd)
|
|||
current_entry = Console->ProcessList.Flink;
|
||||
while (current_entry != &Console->ProcessList)
|
||||
{
|
||||
current = CONTAINING_RECORD(current_entry, CSR_PROCESS, ListLink);
|
||||
current = CONTAINING_RECORD(current_entry, CSR_PROCESS, ConsoleLink);
|
||||
current_entry = current_entry->Flink;
|
||||
|
||||
/* FIXME: Windows will wait up to 5 seconds for the thread to exit.
|
||||
|
|
|
@ -154,7 +154,7 @@ Win32CsrReleaseConsole(
|
|||
{
|
||||
ProcessData->Console = NULL;
|
||||
EnterCriticalSection(&Console->Lock);
|
||||
RemoveEntryList(&ProcessData->ListLink);
|
||||
RemoveEntryList(&ProcessData->ConsoleLink);
|
||||
LeaveCriticalSection(&Console->Lock);
|
||||
if (_InterlockedDecrement(&Console->ReferenceCount) == 0)
|
||||
ConioDeleteConsole(&Console->Header);
|
||||
|
|
Loading…
Reference in a new issue