/* DEPENDENCIES **************************************************************/
-/* EXPORTED DATA *************************************************************/
-extern NTOSAPI POBJECT_TYPE ObDirectoryType;
-extern NTOSAPI PDEVICE_MAP ObSystemDeviceMap;
-
/* CONSTANTS *****************************************************************/
/* Values for DosDeviceDriveType */
} OBJECT_BASIC_INFORMATION, *POBJECT_BASIC_INFORMATION;
/* FIXME: Add Object Structures Here */
+/*
+ * FIXME: These will eventually become centerfold in the compliant Ob Manager
+ * For now, they are only here so Device Map is properly defined before the header
+ * changes
+ */
+typedef struct _OBJECT_DIRECTORY_ENTRY
+{
+ struct _OBJECT_DIRECTORY_ENTRY *ChainLink;
+ PVOID Object;
+ ULONG HashValue;
+} OBJECT_DIRECTORY_ENTRY, *POBJECT_DIRECTORY_ENTRY;
+
+#define NUMBER_HASH_BUCKETS 37
+typedef struct _OBJECT_DIRECTORY
+{
+ struct _OBJECT_DIRECTORY_ENTRY *HashBuckets[NUMBER_HASH_BUCKETS];
+ struct _EX_PUSH_LOCK *Lock;
+ struct _DEVICE_MAP *DeviceMap;
+ ULONG SessionId;
+} OBJECT_DIRECTORY, *POBJECT_DIRECTORY;
+
+typedef struct _DEVICE_MAP
+{
+ POBJECT_DIRECTORY DosDevicesDirectory;
+ POBJECT_DIRECTORY GlobalDosDevicesDirectory;
+ ULONG ReferenceCount;
+ ULONG DriveMap;
+ UCHAR DriveType[32];
+} DEVICE_MAP, *PDEVICE_MAP;
+
+/* EXPORTED DATA *************************************************************/
+
+extern NTOSAPI POBJECT_TYPE ObDirectoryType;
+extern NTOSAPI PDEVICE_MAP ObSystemDeviceMap;
#endif
#define FSCTL_PIPE_INTERNAL_READ_OVFLOW \
CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2048, METHOD_BUFFERED, FILE_READ_DATA)
+/* Macros for current Process/Thread built-in 'special' ID */
+#define NtCurrentProcess() ( (HANDLE)(LONG_PTR) -1 )
+#define ZwCurrentProcess() NtCurrentProcess()
+#define NtCurrentThread() ( (HANDLE)(LONG_PTR) -2 )
+#define ZwCurrentThread() NtCurrentThread()
+
/* Kernel Shared Data Constants */
#define PROCESSOR_FEATURE_MAX 64
#define SharedUserData ((KUSER_SHARED_DATA * CONST) USER_SHARED_DATA)