blob: c9391e919f0bc8b592ff7265a2e3a904b1da79ba (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
dlltask.c
Abstract:
This module implements Csr DLL tasking routines
Author:
Mark Lucovsky (markl) 13-Nov-1990
Revision History:
--*/
#include "csrdll.h"
NTSTATUS
CsrNewThread(
VOID
)
/*++
Routine Description:
This function is called by each new thread (except the first thread in
a process.) It's function is to call the subsystem to notify it that
a new thread is starting.
Arguments:
None.
Return Value:
Status Code from either client or server
--*/
{
return NtRegisterThreadTerminatePort( CsrPortHandle );
}
NTSTATUS
CsrIdentifyAlertableThread( VOID )
{
NTSTATUS Status;
CSR_API_MSG m;
PCSR_IDENTIFY_ALERTABLE_MSG a = &m.u.IndentifyAlertable;
a->ClientId = NtCurrentTeb()->ClientId;
Status = CsrClientCallServer(
&m,
NULL,
CSR_MAKE_API_NUMBER( CSRSRV_SERVERDLL_INDEX,
CsrpIdentifyAlertable
),
sizeof( *a )
);
return Status;
}
NTSTATUS
CsrSetPriorityClass(
IN HANDLE ProcessHandle,
IN OUT PULONG PriorityClass
)
{
NTSTATUS Status;
CSR_API_MSG m;
PCSR_SETPRIORITY_CLASS_MSG a = &m.u.PriorityClass;
a->ProcessHandle = ProcessHandle;
a->PriorityClass = *PriorityClass;
Status = CsrClientCallServer(
&m,
NULL,
CSR_MAKE_API_NUMBER( CSRSRV_SERVERDLL_INDEX,
CsrpSetPriorityClass
),
sizeof( *a )
);
if ( *PriorityClass == 0 ) {
*PriorityClass = a->PriorityClass;
}
return Status;
}
|