source: trunk/src/kernel32/hmdevio.h@ 5587

Last change on this file since 5587 was 5587, checked in by sandervl, 24 years ago

added mailslot implemenation, named pipe fixes + FreeLibraryAndExitThread

File size: 4.4 KB
Line 
1/* $Id: hmdevio.h,v 1.2 2001-04-26 13:22:44 sandervl Exp $ */
2
3#ifndef __DEVIO_H__
4#define __DEVIO_H__
5
6/*****************************************************************************
7 * Includes *
8 *****************************************************************************/
9
10#include <handlemanager.h>
11#include "HMDevice.h"
12#include "HMObjects.h"
13
14#ifndef _OS2WIN_H
15#define GENERIC_READ 0x80000000
16#define GENERIC_WRITE 0x40000000
17#define GENERIC_EXECUTE 0x20000000
18#define GENERIC_ALL 0x10000000
19
20#define FILE_SHARE_READ 0x00000001
21#define FILE_SHARE_WRITE 0x00000002
22#define FILE_ATTRIBUTE_READONLY 0x00000001
23#define FILE_ATTRIBUTE_HIDDEN 0x00000002
24#define FILE_ATTRIBUTE_SYSTEM 0x00000004
25#define FILE_ATTRIBUTE_DIRECTORY 0x00000010
26#define FILE_ATTRIBUTE_ARCHIVE 0x00000020
27#define FILE_ATTRIBUTE_NORMAL 0x00000080
28#define FILE_ATTRIBUTE_TEMPORARY 0x00000100
29#define FILE_ATTRIBUTE_ATOMIC_WRITE 0x00000200
30#define FILE_ATTRIBUTE_XACTION_WRITE 0x00000400
31#define FILE_ATTRIBUTE_COMPRESSED 0x00000800
32#define FILE_ATTRIBUTE_HAS_EMBEDDING 0x00001000
33
34#define FILE_SHARE_READ 0x00000001
35#define FILE_SHARE_WRITE 0x00000002
36
37#define IOCTL_GPD_READ_PORT_UCHAR 0x900
38#define IOCTL_GPD_READ_PORT_USHORT 0x901
39#define IOCTL_GPD_READ_PORT_ULONG 0x902
40#define IOCTL_GPD_WRITE_PORT_UCHAR 0x910
41#define IOCTL_GPD_WRITE_PORT_USHORT 0x911
42#define IOCTL_GPD_WRITE_PORT_ULONG 0x912
43
44#define IOCTL_MAPMEM_MAP_USER_PHYSICAL_MEMORY 0x800
45#define IOCTL_MAPMEM_UNMAP_USER_PHYSICAL_MEMORY 0x801
46
47typedef struct _GENPORT_WRITE_INPUT {
48 ULONG PortNumber;
49 union {
50 ULONG LongData;
51 USHORT ShortData;
52 UCHAR CharData;
53 };
54} GENPORT_WRITE_INPUT;
55
56typedef enum _INTERFACE_TYPE {
57 InterfaceTypeUndefined = -1,
58 Internal,
59 Isa,
60 Eisa,
61 MicroChannel,
62 TurboChannel,
63 PCIBus,
64 VMEBus,
65 NuBus,
66 PCMCIABus,
67 CBus,
68 MPIBus,
69 MPSABus,
70 ProcessorInternal,
71 InternalPowerBus,
72 PNPISABus,
73 MaximumInterfaceType
74}INTERFACE_TYPE, *PINTERFACE_TYPE;
75
76typedef LARGE_INTEGER PHYSICAL_ADDRESS;
77
78typedef struct
79{
80 INTERFACE_TYPE InterfaceType;
81 ULONG BusNumber;
82 PHYSICAL_ADDRESS BusAddress;
83 ULONG AddressSpace;
84 ULONG Length;
85
86} PHYSICAL_MEMORY_INFO, *PPHYSICAL_MEMORY_INFO;
87
88typedef struct _MapDevRequest
89{
90 DWORD mdr_ServiceID;
91 LPVOID mdr_PhysicalAddress;
92 DWORD mdr_SizeInBytes;
93 LPVOID mdr_LinearAddress;
94 WORD mdr_Selector;
95 WORD mdr_Status;
96} MAPDEVREQUEST, *PMAPDEVREQUEST;
97
98#endif
99
100typedef BOOL (* WINIOCTL)(HANDLE hDevice, DWORD dwIoControlCode,
101 LPVOID lpInBuffer, DWORD nInBufferSize,
102 LPVOID lpOutBuffer, DWORD nOutBufferSize,
103 LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
104
105typedef struct {
106 char szWin32Name[32];
107 char szOS2Name[32];
108 BOOL fCreateFile;
109 DWORD hDevice;
110 WINIOCTL devIOCtl;
111} WIN32DRV;
112
113/*****************************************************************************
114 * Structures *
115 *****************************************************************************/
116
117class HMDeviceDriver : public HMDeviceKernelObjectClass
118{
119public:
120 HMDeviceDriver(LPCSTR lpDeviceName, LPSTR lpOS2DevName, BOOL fCreate, WINIOCTL pDevIOCtl);
121
122 /* this is a handler method for calls to CreateFile() */
123 virtual DWORD CreateFile (LPCSTR lpFileName,
124 PHMHANDLEDATA pHMHandleData,
125 PVOID lpSecurityAttributes,
126 PHMHANDLEDATA pHMHandleDataTemplate);
127
128 virtual BOOL CloseHandle(PHMHANDLEDATA pHMHandleData);
129
130 /* this is a handler method for calls to DeviceIoControl() */
131 virtual BOOL DeviceIoControl (PHMHANDLEDATA pHMHandleData, DWORD dwIoControlCode,
132 LPVOID lpInBuffer, DWORD nInBufferSize,
133 LPVOID lpOutBuffer, DWORD nOutBufferSize,
134 LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
135private:
136 BOOL fCreateFile;
137 LPSTR szOS2Name;
138 WINIOCTL devIOCtl;
139};
140
141void RegisterDevices();
142
143
144#endif
Note: See TracBrowser for help on using the repository browser.