#define _HALTYPES_H
/* DEPENDENCIES **************************************************************/
-//#include <ddk/ntdddisk.h>
/* EXPORTED DATA *************************************************************/
extern ULONG NTOSAPI KdComPortInUse;
#define MB_FLAGS_BOOT_LOADER_NAME (0x200)
#define MB_FLAGS_APM_TABLE (0x400)
#define MB_FLAGS_GRAPHICS_TABLE (0x800)
+#define MB_FLAGS_ACPI_TABLE (0x1000)
/* ENUMERATIONS **************************************************************/
typedef enum _FIRMWARE_ENTRY
/* TYPES *********************************************************************/
+typedef struct _HAL_PRIVATE_DISPATCH
+{
+ ULONG Version;
+} HAL_PRIVATE_DISPATCH, *PHAL_PRIVATE_DISPATCH;
+
+#ifdef __NTOSKRNL__
+extern NTOSAPI HAL_PRIVATE_DISPATCH HalPrivateDispatchTable;
+#else
+extern NTOSAPI PHAL_PRIVATE_DISPATCH HalPrivateDispatchTable;
+#endif
+
+#define HAL_PRIVATE_DISPATCH_VERSION 1
+
typedef struct _LOADER_MODULE
{
ULONG ModStart;
extern POBJECT_TYPE NTOSAPI IoFileObjectType;
/* CONSTANTS *****************************************************************/
+#define DOE_UNLOAD_PENDING 0x1
+#define DOE_DELETE_PENDING 0x2
+#define DOE_REMOVE_PENDING 0x4
+#define DOE_REMOVE_PROCESSED 0x8
+#define DOE_START_PENDING 0x10
/* ENUMERATIONS **************************************************************/
KeRaiseUserException(
IN NTSTATUS ExceptionCode
);
+
+VOID
+STDCALL
+KeFlushWriteBuffer(VOID);
#endif
/* CONSTANTS *****************************************************************/
#define LPC_MESSAGE_BASE_SIZE 24
#define MAX_MESSAGE_DATA (0x130)
+#define PORT_MAX_DATA_LENGTH 0x104
+#define PORT_MAX_MESSAGE_LENGTH 0x148
/* ENUMERATIONS **************************************************************/
/* CONSTANTS *****************************************************************/
/* ENUMERATIONS **************************************************************/
+typedef enum _PP_NPAGED_LOOKASIDE_NUMBER
+{
+ LookasideSmallIrpList = 0,
+ LookasideLargeIrpList = 1,
+ LookasideMdlList = 2,
+ LookasideCreateInfoList = 3,
+ LookasideNameBufferList = 4,
+ LookasideTwilightList = 5,
+ LookasideCompletionList = 6,
+ LookasideMaximumList = 7
+} PP_NPAGED_LOOKASIDE_NUMBER;
/* TYPES *********************************************************************/
/* EXPORTED DATA *************************************************************/
extern NTOSAPI POBJECT_TYPE ObDirectoryType;
-extern NTOSAPI struct DEVICE_MAP* ObSystemDeviceMap;
+extern NTOSAPI PDEVICE_MAP ObSystemDeviceMap;
/* CONSTANTS *****************************************************************/
AclRevisionInformation = 1,
AclSizeInformation
} ACL_INFORMATION_CLASS;
+
+ #define TIME_ZONE_ID_UNKNOWN 0
+ #define TIME_ZONE_ID_STANDARD 1
+ #define TIME_ZONE_ID_DAYLIGHT 2
+ #define TIME_ZONE_ID_INVALID 0xFFFFFFFF
#endif
#endif
#define IsLastEntry(ListHead, Entry) \
((ListHead)->Blink == Entry)
-
-#define InsertAscendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
-{\
- PLIST_ENTRY current;\
-\
- current = (ListHead)->Flink;\
- while (current != (ListHead))\
- {\
- if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >\
- (NewEntry)->SortField)\
- {\
- break;\
- }\
- current = current->Flink;\
- }\
-\
- InsertTailList(current, &((NewEntry)->ListEntryField));\
-}
-
-#define InsertDescendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
-{\
- PLIST_ENTRY current;\
-\
- current = (ListHead)->Flink;\
- while (current != (ListHead))\
- {\
- if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <\
- (NewEntry)->SortField)\
- {\
- break;\
- }\
- current = current->Flink;\
- }\
-\
- InsertTailList(current, &((NewEntry)->ListEntryField));\
-}
-
-#define InsertAscendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
-{\
- PLIST_ENTRY current;\
-\
- current = (ListHead)->Flink;\
- while (current != (ListHead))\
- {\
- if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >=\
- (NewEntry)->SortField)\
- {\
- break;\
- }\
- current = current->Flink;\
- }\
-\
- InsertTailList(current, &((NewEntry)->ListEntryField));\
-}
-
-#define InsertDescendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
-{\
- PLIST_ENTRY current;\
-\
- current = (ListHead)->Flink;\
- while (current != (ListHead))\
- {\
- if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <=\
- (NewEntry)->SortField)\
- {\
- break;\
- }\
- current = current->Flink;\
- }\
-\
- InsertTailList(current, &((NewEntry)->ListEntryField));\
-}
/*
* Constant String Macro
OUT PCONTEXT Context
);
+NTSTATUS
+STDCALL
+NtGetPlugPlayEvent(
+ ULONG Reserved1,
+ ULONG Reserved2,
+ struct _PLUGPLAY_EVENT_BLOCK *Buffer,
+ ULONG BufferSize
+);
+
NTSTATUS
STDCALL
NtImpersonateClientOfPort(
IN POBJECT_ATTRIBUTES ObjectAttributes
);
+NTSTATUS
+STDCALL
+NtPlugPlayControl(
+ ULONG ControlCode,
+ PVOID Buffer,
+ ULONG BufferSize
+);
+
NTSTATUS
STDCALL
NtPowerInformation(
STDCALL
NtQuerySystemEnvironmentValue(
IN PUNICODE_STRING Name,
- OUT PVOID Value,
+ OUT PWSTR Value,
ULONG Length,
PULONG ReturnLength
);
VOID
);
-NTSTATUS
-STDCALL
-NtPlugPlayControl(
- DWORD Unknown1,
- DWORD Unknown2,
- DWORD Unknown3
-);
-
-NTSTATUS
-STDCALL
-NtGetPlugPlayEvent(
- ULONG Reserved1,
- ULONG Reserved2,
- PVOID Buffer,
- ULONG BufferLength
-);
-
NTSTATUS
STDCALL
NtSetSystemPowerState(
STDCALL
NtQuerySection(
IN HANDLE SectionHandle,
- IN CINT SectionInformationClass,
+ IN SECTION_INFORMATION_CLASS SectionInformationClass,
OUT PVOID SectionInformation,
IN ULONG Length,
OUT PULONG ResultLength
#define EVENT_PAIR_ALL_ACCESS (0x1F0000L)
+#define OBJECT_TYPE_CREATE 0x0001
+#define OBJECT_TYPE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
+
/* For ProcessDeviceMap */
#define DOSDEVICE_DRIVE_UNKNOWN 0
#define DOSDEVICE_DRIVE_CALCULATE 1
/* ENUMERATIONS **************************************************************/
-
typedef enum _HARDERROR_RESPONSE_OPTION
{
OptionAbortRetryIgnore,
typedef unsigned short LANGID;
typedef LANGID *PLANGID;
+struct _PLUGPLAY_EVENT_BLOCK; /* FIXME: Ask Filip if it's OK to define it */
/**** Information Structures ****/
/*
MaxPlugEventCategory\r
} PLUGPLAY_EVENT_CATEGORY;\r
\r
-#ifndef __USE_W32API\r
-typedef enum _PNP_VETO_TYPE {\r
- PNP_VetoTypeUnknown,\r
- PNP_VetoLegacyDevice,\r
- PNP_VetoPendingClose,\r
- PNP_VetoWindowsApp,\r
- PNP_VetoWindowsService,\r
- PNP_VetoOutstandingOpen,\r
- PNP_VetoDevice,\r
- PNP_VetoDriver,\r
- PNP_VetoIllegalDeviceRequest,\r
- PNP_VetoInsufficientPower,\r
- PNP_VetoNonDisableable,\r
- PNP_VetoLegacyDriver,\r
- PNP_VetoInsufficientRights,\r
-} PNP_VETO_TYPE;\r
-#endif\r
-\r
/*\r
* Plug and Play event structure used by NtGetPlugPlayEvent.\r
*\r
*\r
* Remarks\r
* This function isn't multi-thread safe!\r
- */\r
-\r
NTSTATUS STDCALL\r
NtGetPlugPlayEvent(\r
ULONG Reserved1,\r
ULONG Reserved2,\r
PPLUGPLAY_EVENT_BLOCK Buffer,\r
ULONG BufferSize);\r
+ */\r
\r
/*\r
* NtPlugPlayControl\r
ULONG Flags; /* DN_ see cfg.h */\r
} PLUGPLAY_DEVICE_STATUS_DATA, *PPLUGPLAY_DEVICE_STATUS_DATA;\r
\r
-\r
-NTSTATUS STDCALL\r
-NtPlugPlayControl(\r
- ULONG ControlCode,\r
- PVOID Buffer,\r
- ULONG BufferSize);\r
-\r
#endif /* __GUIDS_ONLY__ */\r
\r
#endif /* __NTPNP_H */\r
#define SECONDS_TO_100NS(seconds) (((LONGLONG)(seconds)) * MILLIS_TO_100NS(1000))
#define MINUTES_TO_100NS(minutes) (((LONGLONG)(minutes)) * SECONDS_TO_100NS(60))
#define HOURS_TO_100NS(hours) (((LONGLONG)(hours)) * MINUTES_TO_100NS(60))
+#define TYPE_ALIGNMENT(t) FIELD_OFFSET(struct { char x; t test; }, test)
+#define InsertAscendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
+{\
+ PLIST_ENTRY current;\
+\
+ current = (ListHead)->Flink;\
+ while (current != (ListHead))\
+ {\
+ if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >\
+ (NewEntry)->SortField)\
+ {\
+ break;\
+ }\
+ current = current->Flink;\
+ }\
+\
+ InsertTailList(current, &((NewEntry)->ListEntryField));\
+}
+
+#define InsertDescendingListFIFO(ListHead, Type, ListEntryField, NewEntry, SortField)\
+{\
+ PLIST_ENTRY current;\
+\
+ current = (ListHead)->Flink;\
+ while (current != (ListHead))\
+ {\
+ if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <\
+ (NewEntry)->SortField)\
+ {\
+ break;\
+ }\
+ current = current->Flink;\
+ }\
+\
+ InsertTailList(current, &((NewEntry)->ListEntryField));\
+}
+
+#define InsertAscendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
+{\
+ PLIST_ENTRY current;\
+\
+ current = (ListHead)->Flink;\
+ while (current != (ListHead))\
+ {\
+ if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField >=\
+ (NewEntry)->SortField)\
+ {\
+ break;\
+ }\
+ current = current->Flink;\
+ }\
+\
+ InsertTailList(current, &((NewEntry)->ListEntryField));\
+}
+
+#define InsertDescendingList(ListHead, Type, ListEntryField, NewEntry, SortField)\
+{\
+ PLIST_ENTRY current;\
+\
+ current = (ListHead)->Flink;\
+ while (current != (ListHead))\
+ {\
+ if (CONTAINING_RECORD(current, Type, ListEntryField)->SortField <=\
+ (NewEntry)->SortField)\
+ {\
+ break;\
+ }\
+ current = current->Flink;\
+ }\
+\
+ InsertTailList(current, &((NewEntry)->ListEntryField));\
+}
+
#endif
#endif
#include "ntddk.h"
-#include "ntapi.h"
+//#include "ntapi.h"
#ifdef __cplusplus
extern "C" {
#define PIN_NO_READ (4)
#define PIN_IF_BCB (8)
-#define PORT_CONNECT 0x0001
-#define PORT_ALL_ACCESS (STANDARD_RIGHTS_ALL |\
- PORT_CONNECT)
/* also in winnt.h */
#define SEC_BASED 0x00200000
#define SEC_NO_CHANGE 0x00400000
typedef struct _VACB *PVACB;
typedef struct _VAD_HEADER *PVAD_HEADER;
+typedef ULONG LBN;
+typedef LBN *PLBN;
+
+typedef ULONG VBN;
+typedef VBN *PVBN;
+
typedef struct _NOTIFY_SYNC
{
ULONG Unknown0;
#endif /* (VER_PRODUCTBUILD >= 2600) */
+typedef struct _BASE_MCB
+{
+ ULONG MaximumPairCount;
+ ULONG PairCount;
+ POOL_TYPE PoolType;
+ PVOID Mapping;
+} BASE_MCB;
+typedef BASE_MCB *PBASE_MCB;
+
+typedef struct _LARGE_MCB
+{
+ PFAST_MUTEX FastMutex;
+ BASE_MCB BaseMcb;
+} LARGE_MCB;
+typedef LARGE_MCB *PLARGE_MCB;
+
+typedef struct _MCB
+{
+ LARGE_MCB DummyFieldThatSizesThisStructureCorrectly;
+} MCB;
+typedef MCB *PMCB;
+
typedef struct _GENERATE_NAME_CONTEXT {
USHORT Checksum;
BOOLEAN CheckSumInserted;
IN NTSTATUS Ntstatus
);
+#define NLS_MB_CODE_PAGE_TAG NlsMbCodePageTag
+#define NLS_MB_OEM_CODE_PAGE_TAG NlsMbOemCodePageTag
+#define NLS_MB_CODE_PAGE_TAG NlsMbOemCodePageTag
+#define NLS_OEM_LEAD_BYTE_INFO NlsOemLeadByteInfo
+
+extern BOOLEAN NlsMbCodePageTag;
+extern BOOLEAN NlsMbOemCodePageTag;
+extern PUSHORT NlsOemLeadByteInfo;
+
#define FsRtlIsLeadDbcsCharacter(DBCS_CHAR) ( \
(BOOLEAN)((UCHAR)(DBCS_CHAR) < 0x80 ? FALSE : \
(NLS_MB_CODE_PAGE_TAG && \
IN PVOID Context,
IN PVOID Environment OPTIONAL);
-NTOSAPI
-VOID
-DDKAPI
-RtlRetrieveUlong(
- IN OUT PULONG DestinationAddress,
- IN PULONG SourceAddress);
+
+#define LONG_SIZE (sizeof(LONG))
+#define LONG_MASK (LONG_SIZE - 1)
+
+/*
+ * VOID
+ * RtlRetrieveUlong (
+ * PULONG DestinationAddress,
+ * PULONG SourceAddress
+ * );
+ */
+#define RtlRetrieveUlong(DestAddress,SrcAddress) \
+ if ((ULONG_PTR)(SrcAddress) & LONG_MASK) \
+ { \
+ ((PUCHAR)(DestAddress))[0]=((PUCHAR)(SrcAddress))[0]; \
+ ((PUCHAR)(DestAddress))[1]=((PUCHAR)(SrcAddress))[1]; \
+ ((PUCHAR)(DestAddress))[2]=((PUCHAR)(SrcAddress))[2]; \
+ ((PUCHAR)(DestAddress))[3]=((PUCHAR)(SrcAddress))[3]; \
+ } \
+ else \
+ { \
+ *((PULONG)(DestAddress))=*((PULONG)(SrcAddress)); \
+ }
NTOSAPI
VOID