96 lines
4.0 KiB
C
96 lines
4.0 KiB
C
#ifndef WEPOLL_NT_H_
|
|
#define WEPOLL_NT_H_
|
|
|
|
#include "internal.h"
|
|
#include "win.h"
|
|
|
|
WEPOLL_INTERNAL int nt_global_init(void);
|
|
|
|
typedef LONG NTSTATUS;
|
|
typedef NTSTATUS* PNTSTATUS;
|
|
|
|
#ifndef NT_SUCCESS
|
|
#define NT_SUCCESS(status) (((NTSTATUS)(status)) >= 0)
|
|
#endif
|
|
|
|
#ifndef STATUS_SUCCESS
|
|
#define STATUS_SUCCESS ((NTSTATUS) 0x00000000L)
|
|
#endif
|
|
|
|
#ifndef STATUS_PENDING
|
|
#define STATUS_PENDING ((NTSTATUS) 0x00000103L)
|
|
#endif
|
|
|
|
#ifndef STATUS_CANCELLED
|
|
#define STATUS_CANCELLED ((NTSTATUS) 0xC0000120L)
|
|
#endif
|
|
|
|
typedef struct _IO_STATUS_BLOCK {
|
|
union {
|
|
NTSTATUS Status;
|
|
PVOID Pointer;
|
|
};
|
|
ULONG_PTR Information;
|
|
} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
|
|
|
|
typedef VOID(NTAPI* PIO_APC_ROUTINE)(PVOID ApcContext,
|
|
PIO_STATUS_BLOCK IoStatusBlock,
|
|
ULONG Reserved);
|
|
|
|
typedef struct _LSA_UNICODE_STRING {
|
|
USHORT Length;
|
|
USHORT MaximumLength;
|
|
PWSTR Buffer;
|
|
} LSA_UNICODE_STRING, *PLSA_UNICODE_STRING, UNICODE_STRING, *PUNICODE_STRING;
|
|
|
|
typedef struct _OBJECT_ATTRIBUTES {
|
|
ULONG Length;
|
|
HANDLE RootDirectory;
|
|
PUNICODE_STRING ObjectName;
|
|
ULONG Attributes;
|
|
PVOID SecurityDescriptor;
|
|
PVOID SecurityQualityOfService;
|
|
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
|
|
|
|
#define NTDLL_IMPORT_LIST(X) \
|
|
X(NTSTATUS, \
|
|
NTAPI, \
|
|
NtDeviceIoControlFile, \
|
|
(HANDLE FileHandle, \
|
|
HANDLE Event, \
|
|
PIO_APC_ROUTINE ApcRoutine, \
|
|
PVOID ApcContext, \
|
|
PIO_STATUS_BLOCK IoStatusBlock, \
|
|
ULONG IoControlCode, \
|
|
PVOID InputBuffer, \
|
|
ULONG InputBufferLength, \
|
|
PVOID OutputBuffer, \
|
|
ULONG OutputBufferLength)) \
|
|
\
|
|
X(ULONG, WINAPI, RtlNtStatusToDosError, (NTSTATUS Status)) \
|
|
\
|
|
X(NTSTATUS, \
|
|
NTAPI, \
|
|
NtCreateKeyedEvent, \
|
|
(PHANDLE handle, \
|
|
ACCESS_MASK access, \
|
|
POBJECT_ATTRIBUTES attr, \
|
|
ULONG flags)) \
|
|
\
|
|
X(NTSTATUS, \
|
|
NTAPI, \
|
|
NtWaitForKeyedEvent, \
|
|
(HANDLE handle, PVOID key, BOOLEAN alertable, PLARGE_INTEGER mstimeout)) \
|
|
\
|
|
X(NTSTATUS, \
|
|
NTAPI, \
|
|
NtReleaseKeyedEvent, \
|
|
(HANDLE handle, PVOID key, BOOLEAN alertable, PLARGE_INTEGER mstimeout))
|
|
|
|
#define X(return_type, attributes, name, parameters) \
|
|
WEPOLL_INTERNAL_VAR return_type(attributes* name) parameters;
|
|
NTDLL_IMPORT_LIST(X)
|
|
#undef X
|
|
|
|
#endif /* WEPOLL_NT_H_ */
|