ntifs.h

来自「使用DELPHI制作地虚拟光驱」· C头文件 代码 · 共 73 行

H
73
字号
#define TOKEN_SOURCE_LENGTH 8

typedef enum _TOKEN_TYPE {
	TokenPrimary = 1,
	TokenImpersonation
} TOKEN_TYPE;

typedef struct _TOKEN_SOURCE {
	CCHAR   SourceName[TOKEN_SOURCE_LENGTH];
	LUID    SourceIdentifier;
} TOKEN_SOURCE, *PTOKEN_SOURCE;

typedef struct _TOKEN_CONTROL {
	LUID            TokenId;
	LUID            AuthenticationId;
	LUID            ModifiedId;
	TOKEN_SOURCE    TokenSource;
} TOKEN_CONTROL, *PTOKEN_CONTROL;

typedef struct _SECURITY_CLIENT_CONTEXT {
	SECURITY_QUALITY_OF_SERVICE SecurityQos;
	PACCESS_TOKEN               ClientToken;
	BOOLEAN                     DirectlyAccessClientToken;
	BOOLEAN                     DirectAccessEffectiveOnly;
	BOOLEAN                     ServerIsRemote;
	TOKEN_CONTROL               ClientTokenControl;
} SECURITY_CLIENT_CONTEXT, *PSECURITY_CLIENT_CONTEXT;

#define PsDereferenceImpersonationToken(T)  \
{if (ARGUMENT_PRESENT(T)) {     \
	(ObDereferenceObject((T))); \
} else {                        \
	;                           \
}                               \
}

#define PsDereferencePrimaryToken(T) (ObDereferenceObject((T)))

NTKERNELAPI
VOID
PsRevertToSelf (
				VOID
				);

NTKERNELAPI
NTSTATUS
SeCreateClientSecurity (
						IN PETHREAD                     Thread,
						IN PSECURITY_QUALITY_OF_SERVICE QualityOfService,
						IN BOOLEAN                      RemoteClient,
						OUT PSECURITY_CLIENT_CONTEXT    ClientContext
						);

#define SeDeleteClientSecurity(C)  {                                           \
	if (SeTokenType((C)->ClientToken) == TokenPrimary) {               \
	PsDereferencePrimaryToken( (C)->ClientToken );                 \
	} else {                                                           \
	PsDereferenceImpersonationToken( (C)->ClientToken );           \
	}                                                                  \
}

NTKERNELAPI
VOID
SeImpersonateClient (
					 IN PSECURITY_CLIENT_CONTEXT ClientContext,
					 IN PETHREAD                 ServerThread OPTIONAL
					 );

NTKERNELAPI
TOKEN_TYPE
SeTokenType (
			 IN PACCESS_TOKEN Token
			 );

⌨️ 快捷键说明

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