📄 apc.h
字号:
/* * apc.h * * Copyright (C) 2006 Insigme Co., Ltd * * Authors: * - Limin Jin * * This software has been developed while working on the Linux Unified Kernel * project (http://linux.insigma.com.cn) in the Insigma Reaserch Institute, * which is a subdivision of Insigma Co., Ltd (http://www.insigma.com.cn). * * The project is sponsored by Insigma Co., Ltd. * * The authors can be reached at linux@insigma.com.cn. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * Revision History: * Jan 2006 - Created. *//* * apc.h: * Reference to ReactOS code */#ifndef _APC_H#define _APC_H#include <linux/module.h>#include "thread.h"#include "process.h"#include <linux/winternl.h>#include <linux/spinlock.h>#include <linux/sched.h>#include "win32.h"#ifdef CONFIG_UNIFIED_KERNEL#ifndef TIF_APC#define TIF_APC 13#endif#ifndef IO_NO_INCREMENT #define IO_NO_INCREMENT 0#endif#define DDKAPI#define SystemDllApcDispatcher NULL#define STATUS_UNSUCCESSFUL ((NTSTATUS)0xC0000001L)#define ARGUMENT_PRESENT(ArgumentPointer) \ ((BOOLEAN) ((PVOID)ArgumentPointer != (PVOID)NULL))#define PKKERNEL_ROUTINE kernel_routine_t#define PKRUNDOWN_ROUTINE rundown_routine_t#define PKNORMAL_ROUTINE normal_routine_t#define KPROCESSOR_MODE kprocessor_mode_t#ifdef __PPC__#define CONTEXT_CONTROL 1L#define CONTEXT_FLOATING_POINT 2L#define CONTEXT_INTEGER 4L#define CONTEXT_DEBUG_REGISTERS 8L#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER)#define CONTEXT_DEBUGGER (CONTEXT_FULL)#else /*86 *//*#define SIZE_OF_80387_REGISTERS 80*//* Values for contextflags */#define CONTEXT_i386 0x10000#define CONTEXT_CONTROL (CONTEXT_i386 | 1)#define CONTEXT_INTEGER (CONTEXT_i386 | 2)#define CONTEXT_SEGMENTS (CONTEXT_i386 | 4)#define CONTEXT_FLOATING_POINT (CONTEXT_i386 | 8)#define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386 | 0x10)#define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386 | 0x20)#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)#define MAXIMUM_SUPPORTED_EXTENSION 512#endiftypedef enum _KAPC_ENVIRONMENT { OriginalApcEnvironment, AttachedApcEnvironment, CurrentApcEnvironment} KAPC_ENVIRONMENT;typedef struct kthread *PKTHREAD;typedef struct pt_regs *PKTRAP_FRAME;typedef struct kapc KAPC, *PKAPC;typedef enum _MODE { KernelMode, UserMode, MaximumMode} MODE;typedef enum _KOBJECTS { EventNotificationObject = 0, EventSynchronizationObject = 1, MutantObject = 2, ProcessObject = 3, QueueObject = 4, SemaphoreObject = 5, ThreadObject = 6, GateObject = 7, TimerNotificationObject = 8, TimerSynchronizationObject = 9, Spare2Object = 10, Spare3Object = 11, Spare4Object = 12, Spare5Object = 13, Spare6Object = 14, Spare7Object = 15, Spare8Object = 16, Spare9Object = 17, ApcObject = 18, DpcObject = 19, DeviceQueueObject = 20, EventPairObject = 21, InterruptObject = 22, ProfileObject = 23, ThreadedDpcObject = 24, MaximumKernelObject = 25} KOBJECTS;typedef LONG KPRIORITY;typedef struct _FXSAVE_FORMAT{}FXSAVE_FORMAT,*PFXSAVE_FORMAT;typedef struct _FNSAVE_FORMAT{}FNSAVE_FORMAT,*PFNSAVE_FORMAT;typedef struct _FX_SAVE_AREA { union { FNSAVE_FORMAT FnArea; FXSAVE_FORMAT FxArea; } U; ULONG NpxSavedCpu; ULONG Cr0NpxState;} FX_SAVE_AREA, *PFX_SAVE_AREA;VOIDSTDCALLtest(PVOID* NormalContext, PVOID* SystemArgument1, PVOID* SystemArgument2);VOID STDCALLKiFreeApcRoutine(PKAPC Apc, PKNORMAL_ROUTINE* NormalRoutine, PVOID* NormalContext, PVOID* SystemArgument1, PVOID* SystemArgument2);BOOLEANSTDCALLKiInsertQueueApc(PKAPC Apc, KPRIORITY PriorityBoost);VOIDSTDCALLKeInitializeApc(IN PKAPC Apc, IN PKTHREAD Thread, IN KAPC_ENVIRONMENT TargetEnvironment, IN PKKERNEL_ROUTINE KernelRoutine, IN PKRUNDOWN_ROUTINE RundownRoutine OPTIONAL, IN PKNORMAL_ROUTINE NormalRoutine, IN KPROCESSOR_MODE Mode, IN PVOID Context);BOOLEANSTDCALLKeInsertQueueApc(PKAPC Apc, PVOID SystemArgument1, PVOID SystemArgument2, KPRIORITY PriorityBoost);VOID STDCALLKiDeliverApc(KPROCESSOR_MODE DeliveryMode, PVOID Reserved, struct pt_regs * TrapFrame);BOOLEANSTDCALLKeTestAlertThread(IN KPROCESSOR_MODE AlertMode);VOIDSTDCALLKiInitializeUserApc(IN PVOID Reserved, IN PKTRAP_FRAME TrapFrame, IN PKNORMAL_ROUTINE NormalRoutine, IN PVOID NormalContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2) ; VOIDKeContextToTrapFrame(PContext Context, PKTRAP_FRAME TrapFrame);#endif /* CONFIG_UNIFIED_KERNEL */#endif /* _APC_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -