source: Daodan/MinGW/include/ddk/smbus.h@ 1068

Last change on this file since 1068 was 1046, checked in by alloc, 8 years ago

Daodan: Added Windows MinGW and build batch file

File size: 4.5 KB
Line 
1/*
2 * smbus.h
3 *
4 * System Management Bus driver interface
5 *
6 * This file is part of the w32api package.
7 *
8 * Contributors:
9 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
10 *
11 * THIS SOFTWARE IS NOT COPYRIGHTED
12 *
13 * This source code is offered for use in the public domain. You may
14 * use, modify or distribute it freely.
15 *
16 * This code is distributed in the hope that it will be useful but
17 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
18 * DISCLAIMED. This includes but is not limited to warranties of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
20 *
21 */
22
23#ifndef __SMBUS_H
24#define __SMBUS_H
25
26#if __GNUC__ >=3
27#pragma GCC system_header
28#endif
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34#if !defined(SMBCLASS)
35 #define SMBCLASSAPI DECLSPEC_IMPORT
36#else
37 #define SMBCLASSAPI DECLSPEC_EXPORT
38#endif
39
40#define SMB_BUS_REQUEST \
41 CTL_CODE(FILE_DEVICE_UNKNOWN, 0, METHOD_NEITHER, FILE_ANY_ACCESS)
42
43#define SMB_DEREGISTER_ALARM_NOTIFY \
44 CTL_CODE(FILE_DEVICE_UNKNOWN, 2, METHOD_NEITHER, FILE_ANY_ACCESS)
45
46#define SMB_REGISTER_ALARM_NOTIFY \
47 CTL_CODE(FILE_DEVICE_UNKNOWN, 1, METHOD_NEITHER, FILE_ANY_ACCESS)
48
49
50struct _SMB_CLASS;
51
52#define SMB_MAX_DATA_SIZE 32
53
54/* SMB_REQUEST.Status constants */
55#define SMB_STATUS_OK 0x00
56#define SMB_UNKNOWN_FAILURE 0x07
57#define SMB_ADDRESS_NOT_ACKNOWLEDGED 0x10
58#define SMB_DEVICE_ERROR 0x11
59#define SMB_COMMAND_ACCESS_DENIED 0x12
60#define SMB_UNKNOWN_ERROR 0x13
61#define SMB_DEVICE_ACCESS_DENIED 0x17
62#define SMB_TIMEOUT 0x18
63#define SMB_UNSUPPORTED_PROTOCOL 0x19
64#define SMB_BUS_BUSY 0x1A
65
66/* SMB_REQUEST.Protocol constants */
67#define SMB_WRITE_QUICK 0x00
68#define SMB_READ_QUICK 0x01
69#define SMB_SEND_BYTE 0x02
70#define SMB_RECEIVE_BYTE 0x03
71#define SMB_WRITE_BYTE 0x04
72#define SMB_READ_BYTE 0x05
73#define SMB_WRITE_WORD 0x06
74#define SMB_READ_WORD 0x07
75#define SMB_WRITE_BLOCK 0x08
76#define SMB_READ_BLOCK 0x09
77#define SMB_PROCESS_CALL 0x0A
78#define SMB_MAXIMUM_PROTOCOL 0x0A
79
80typedef struct _SMB_REQUEST {
81 UCHAR Status;
82 UCHAR Protocol;
83 UCHAR Address;
84 UCHAR Command;
85 UCHAR BlockLength;
86 UCHAR Data[SMB_MAX_DATA_SIZE];
87} SMB_REQUEST, *PSMB_REQUEST;
88
89typedef VOID STDCALL
90(*SMB_ALARM_NOTIFY)(
91 PVOID Context,
92 UCHAR Address,
93 USHORT Data);
94
95typedef struct _SMB_REGISTER_ALARM {
96 UCHAR MinAddress;
97 UCHAR MaxAddress;
98 SMB_ALARM_NOTIFY NotifyFunction;
99 PVOID NotifyContext;
100} SMB_REGISTER_ALARM, *PSMB_REGISTER_ALARM;
101
102/* SMB_CLASS.XxxVersion constants */
103#define SMB_CLASS_MAJOR_VERSION 0x0001
104#define SMB_CLASS_MINOR_VERSION 0x0000
105
106typedef NTSTATUS DDKAPI
107(*SMB_RESET_DEVICE)(
108 /*IN*/ struct _SMB_CLASS *SmbClass,
109 /*IN*/ PVOID SmbMiniport);
110
111typedef VOID DDKAPI
112(*SMB_START_IO)(
113 /*IN*/ struct _SMB_CLASS *SmbClass,
114 /*IN*/ PVOID SmbMiniport);
115
116typedef NTSTATUS DDKAPI
117(*SMB_STOP_DEVICE)(
118 /*IN*/ struct _SMB_CLASS *SmbClass,
119 /*IN*/ PVOID SmbMiniport);
120
121typedef struct _SMB_CLASS {
122 USHORT MajorVersion;
123 USHORT MinorVersion;
124 PVOID Miniport;
125 PDEVICE_OBJECT DeviceObject;
126 PDEVICE_OBJECT PDO;
127 PDEVICE_OBJECT LowerDeviceObject;
128 PIRP CurrentIrp;
129 PSMB_REQUEST CurrentSmb;
130 SMB_RESET_DEVICE ResetDevice;
131 SMB_START_IO StartIo;
132 SMB_STOP_DEVICE StopDevice;
133} SMB_CLASS, *PSMB_CLASS;
134
135SMBCLASSAPI
136VOID
137DDKAPI
138SmbClassAlarm(
139 /*IN*/ PSMB_CLASS SmbClass,
140 /*IN*/ UCHAR Address,
141 /*IN*/ USHORT Data);
142
143SMBCLASSAPI
144VOID
145DDKAPI
146SmbClassCompleteRequest(
147 /*IN*/ PSMB_CLASS SmbClass);
148
149typedef NTSTATUS DDKAPI
150(*PSMB_INITIALIZE_MINIPORT)(
151 /*IN*/ PSMB_CLASS SmbClass,
152 /*IN*/ PVOID MiniportExtension,
153 /*IN*/ PVOID MiniportContext);
154
155SMBCLASSAPI
156NTSTATUS
157DDKAPI
158SmbClassCreateFdo(
159 /*IN*/ PDRIVER_OBJECT DriverObject,
160 /*IN*/ PDEVICE_OBJECT PDO,
161 /*IN*/ ULONG MiniportExtensionSize,
162 /*IN*/ PSMB_INITIALIZE_MINIPORT MiniportInitialize,
163 /*IN*/ PVOID MiniportContext,
164 /*OUT*/ PDEVICE_OBJECT *FDO);
165
166SMBCLASSAPI
167NTSTATUS
168DDKAPI
169SmbClassInitializeDevice(
170 /*IN*/ ULONG MajorVersion,
171 /*IN*/ ULONG MinorVersion,
172 /*IN*/ PDRIVER_OBJECT DriverObject);
173
174SMBCLASSAPI
175VOID
176DDKAPI
177SmbClassLockDevice(
178 /*IN*/ PSMB_CLASS SmbClass);
179
180SMBCLASSAPI
181VOID
182DDKAPI
183SmbClassUnlockDevice(
184 /*IN*/ PSMB_CLASS SmbClass);
185
186#ifdef __cplusplus
187}
188#endif
189
190#endif /* __SMBUS_H */
Note: See TracBrowser for help on using the repository browser.