Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

117 lines
4.7 KiB

// Gemplus (C) 1999
// This is main Driver object for the driver.
//
// Version 1.0
// Author: Sergey Ivanov
// Date of creation - 18.05.1999
// Change log:
//
#ifndef WDMSYS_INT
#define WDMSYS_INT
#include "generic.h"
#include "system.h"
#pragma PAGEDCODE
// Interface to general system services...
class CWDMSystem : public CSystem
{
public:
NTSTATUS m_Status;
SAFE_DESTRUCTORS();
virtual VOID dispose(VOID){self_delete();};
protected:
CWDMSystem(){m_Status = STATUS_SUCCESS;};
virtual ~CWDMSystem(){};
public:
static CSystem* create(VOID);
// This object will implement next interfaces...
virtual NTSTATUS createDevice(PDRIVER_OBJECT DriverObject,
ULONG DeviceExtensionSize,
PUNICODE_STRING DeviceName OPTIONAL,
DEVICE_TYPE DeviceType,
ULONG DeviceCharacteristics,
BOOLEAN Reserved,
PDEVICE_OBJECT *DeviceObject);
virtual VOID deleteDevice(PDEVICE_OBJECT DeviceObject);
virtual PDEVICE_OBJECT attachDevice(PDEVICE_OBJECT FuncDevice,IN PDEVICE_OBJECT PhysDevice);
virtual VOID detachDevice(PDEVICE_OBJECT TargetDevice);
virtual NTSTATUS callDriver(PDEVICE_OBJECT DeviceObject,PIRP Irp);
virtual NTSTATUS registerDeviceInterface(PDEVICE_OBJECT PhysicalDeviceObject,
CONST GUID *InterfaceClassGuid,
PUNICODE_STRING ReferenceString, OPTIONAL
PUNICODE_STRING SymbolicLinkName);
virtual NTSTATUS setDeviceInterfaceState(PUNICODE_STRING SymbolicLinkName,BOOLEAN Enable);
virtual NTSTATUS createSystemThread(OUT PHANDLE ThreadHandle,
IN ULONG DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN HANDLE ProcessHandle OPTIONAL,
OUT PCLIENT_ID ClientId OPTIONAL,
IN PKSTART_ROUTINE StartRoutine,
IN PVOID StartContext);
virtual NTSTATUS terminateSystemThread(IN NTSTATUS ExitStatus);
virtual NTSTATUS referenceObjectByHandle(IN HANDLE Handle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_TYPE ObjectType OPTIONAL,
IN KPROCESSOR_MODE AccessMode,
OUT PVOID *Object,
OUT POBJECT_HANDLE_INFORMATION HandleInformation OPTIONAL
);
virtual VOID referenceObject(IN PVOID Object);
virtual VOID dereferenceObject(IN PVOID Object);
virtual PDEVICE_OBJECT getAttachedDeviceReference(IN PDEVICE_OBJECT DeviceObject);
virtual NTSTATUS ZwClose(IN HANDLE Handle);
virtual NTSTATUS createSymbolicLink(IN PUNICODE_STRING SymbolicLinkName,IN PUNICODE_STRING DeviceName);
virtual NTSTATUS deleteSymbolicLink(IN PUNICODE_STRING SymbolicLinkName);
virtual VOID invalidateDeviceRelations(IN PDEVICE_OBJECT DeviceObject,IN DEVICE_RELATION_TYPE Type);
virtual NTSTATUS getDeviceObjectPointer(IN PUNICODE_STRING ObjectName,
IN ACCESS_MASK DesiredAccess,
OUT PFILE_OBJECT *FileObject,
OUT PDEVICE_OBJECT *DeviceObject);
virtual VOID raiseIrql(IN KIRQL NewIrql,OUT KIRQL* oldIrql);
virtual VOID lowerIrql (IN KIRQL NewIrql);
virtual KIRQL getCurrentIrql();
virtual VOID initializeDeviceQueue(IN PKDEVICE_QUEUE DeviceQueue);
virtual BOOLEAN insertDeviceQueue(IN PKDEVICE_QUEUE DeviceQueue,IN PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
virtual BOOLEAN insertByKeyDeviceQueue(IN PKDEVICE_QUEUE DeviceQueue,IN PKDEVICE_QUEUE_ENTRY DeviceQueueEntry,IN ULONG SortKey);
virtual PKDEVICE_QUEUE_ENTRY removeDeviceQueue(IN PKDEVICE_QUEUE DeviceQueue);
virtual PKDEVICE_QUEUE_ENTRY removeByKeyDeviceQueue(IN PKDEVICE_QUEUE DeviceQueue,IN ULONG SortKey);
virtual BOOLEAN removeEntryDeviceQueue(IN PKDEVICE_QUEUE DeviceQueue,IN PKDEVICE_QUEUE_ENTRY DeviceQueueEntry);
virtual NTSTATUS openDeviceRegistryKey(IN PDEVICE_OBJECT DeviceObject,
IN ULONG DevInstKeyType,
IN ACCESS_MASK DesiredAccess,
OUT PHANDLE DevInstRegKey
);
virtual NTSTATUS ZwQueryValueKey(IN HANDLE KeyHandle,
IN PUNICODE_STRING ValueName,
IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
OUT PVOID KeyValueInformation,
IN ULONG Length,
OUT PULONG ResultLength
);
virtual NTSTATUS getDeviceProperty(IN PDEVICE_OBJECT DeviceObject,
IN DEVICE_REGISTRY_PROPERTY DeviceProperty,
IN ULONG BufferLength,
OUT PVOID PropertyBuffer,
OUT PULONG ResultLength
);
virtual VOID initializeFastMutex(IN PFAST_MUTEX FastMutex);
virtual VOID acquireFastMutex(IN PFAST_MUTEX FastMutex);
virtual VOID releaseFastMutex(IN PFAST_MUTEX FastMutex);
};
#endif //WDMSYS_INT