⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 api.c

📁 ReactOS是一些高手根据Windows XP的内核编写出的类XP。内核实现机理和API函数调用几乎相同。甚至可以兼容XP的程序。喜欢研究系统内核的人可以看一看。
💻 C
字号:
/*
 * COPYRIGHT:       See COPYING in the top level directory
 * PROJECT:         ReactOS kernel
 * FILE:            lib/ntdll/csr/api.c
 * PURPOSE:         CSR APIs exported through NTDLL
 * PROGRAMMER:      Alex Ionescu (alex@relsoft.net)
 */

/* INCLUDES *****************************************************************/

#include <ntdll.h>
#define NDEBUG
#include <debug.h>

/* GLOBALS *******************************************************************/
extern HANDLE CsrApiPort;

/* FUNCTIONS *****************************************************************/

/*
 * @implemented
 */
NTSTATUS
NTAPI
CsrNewThread(VOID)
{
    /* Register the termination port to CSR's */
    return NtRegisterThreadTerminatePort(CsrApiPort);
}

/*
 * @implemented
 */
NTSTATUS
NTAPI
CsrSetPriorityClass(HANDLE hProcess,
                    PULONG PriorityClass)
{
    NTSTATUS Status;
    CSR_API_MESSAGE2 ApiMessage; /* <- Remove the "2" when CSR is commited */
    PCSR_SET_PRIORITY_CLASS SetPriorityClass = &ApiMessage.SetPriorityClass;

    /* Set up the data for CSR */
    DbgBreakPoint();
    SetPriorityClass->hProcess = hProcess;
    SetPriorityClass->PriorityClass = *PriorityClass;

    /* Call it */
    Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
                                 NULL,
                                 CSR_MAKE_OPCODE(CsrSrvSetPriorityClass,
                                                 CSR_SRV_SERVER),
                                 sizeof(CSR_SET_PRIORITY_CLASS));
    
    /* Return what we got, if requested */
    if (*PriorityClass) *PriorityClass = SetPriorityClass->PriorityClass;

    /* Return to caller */
    return Status;
}

/*
 * @implemented
 */
NTSTATUS
NTAPI
CsrIdentifyAlertableThread (VOID)
{
    NTSTATUS Status;
    CSR_API_MESSAGE2 ApiMessage; /* <- Remove the "2" when CSR is commited */
    PCSR_IDENTIFY_ALTERTABLE_THREAD IdentifyAlertableThread;
    
    /* Set up the data for CSR */
    DbgBreakPoint();
    IdentifyAlertableThread = &ApiMessage.IdentifyAlertableThread;
    IdentifyAlertableThread->Cid = NtCurrentTeb()->Cid;

    /* Call it */
    Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
                                 NULL,
                                 CSR_MAKE_OPCODE(CsrSrvIdentifyAlertableThread,
                                                 CSR_SRV_SERVER),
                                 sizeof(CSR_SET_PRIORITY_CLASS));

    /* Return to caller */
    return Status;
}

/* EOF */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -