2002-10-06 Casper Hornstrup <chorns@it.dk>

* include/ddk: New subdir.
	* lib/ddk: Ditto.
	* include/ddk/(atm.h, batclass.h, cfg.h, cfgmgr32.h, d4drvif.h,
	d4iface.h, ddkmapi.h, hidclass.h, hidpi.h, hidusage.h, mcd.h,
	miniport.h, minitape.h, mountdev.h, mountmgr.h, ndis.h,
	ndisquid.h, ndistapi.h, ndisvan.h, netevent.h, netpnp.h,
	netdev.h, ntapi.h, ntdd8042.h, ntddbeep.h, ntddcdrm.h,
	ntddcdvd.h, ntddchgr.h, ntdddisk.h, ntddk.h, ntddkbd.h,
	ntddmou.h, ntddndis.h, ntddpar.h, ntddpcm.h, ntddscsi.h,
	ntddser.h, ntddstor.h, ntddtape.h, ntddtdi.h, ntddvdeo.h,
	ntddvol.h, ntifs.h, ntpoapi.h, ntstatus.h, parallel.h, pfhook.h,
	poclass.h, scsi.h, scsiscan.h, scsiwmi.h, smbus.h, srb.h,
	storport.h, tdi.h, tdiinfo.h, tdikrnl.h, tdistat.h, tvout.h,
	upssvc.h, usb.h, usb100.h, usbcamdi.h, usbdi.h, usbioctl.h,
	usbiodef.h, usbscan.h, usbuser.h, video.h, videoagp.h, win2k.h,
	winddi.h, winddk.h, winnt4.h, winxp.h, ws2san.h,
	xfilter.h): New files.
	* lib/ddk/(Makefile.in, apcups.def, cfgmgr32.def, dxapi.def,
	hal.def, hid.def, hidparse.def, mcd.def, ndis.def, ntoskrnl.def,
	scsiport.def, tdi.def, usbcamd.def, usbcamd2.def, videoprt.def,
	win32k.def): Ditto.
This commit is contained in:
Earnie Boyd 2002-10-06 22:18:26 +00:00
parent 09663d31bb
commit 2bacbfb1d1
94 changed files with 53242 additions and 0 deletions

View File

@ -1,3 +1,27 @@
2002-10-06 Casper Hornstrup <chorns@it.dk>
* include/ddk: New subdir.
* lib/ddk: Ditto.
* include/ddk/(atm.h, batclass.h, cfg.h, cfgmgr32.h, d4drvif.h,
d4iface.h, ddkmapi.h, hidclass.h, hidpi.h, hidusage.h, mcd.h,
miniport.h, minitape.h, mountdev.h, mountmgr.h, ndis.h,
ndisquid.h, ndistapi.h, ndisvan.h, netevent.h, netpnp.h,
netdev.h, ntapi.h, ntdd8042.h, ntddbeep.h, ntddcdrm.h,
ntddcdvd.h, ntddchgr.h, ntdddisk.h, ntddk.h, ntddkbd.h,
ntddmou.h, ntddndis.h, ntddpar.h, ntddpcm.h, ntddscsi.h,
ntddser.h, ntddstor.h, ntddtape.h, ntddtdi.h, ntddvdeo.h,
ntddvol.h, ntifs.h, ntpoapi.h, ntstatus.h, parallel.h, pfhook.h,
poclass.h, scsi.h, scsiscan.h, scsiwmi.h, smbus.h, srb.h,
storport.h, tdi.h, tdiinfo.h, tdikrnl.h, tdistat.h, tvout.h,
upssvc.h, usb.h, usb100.h, usbcamdi.h, usbdi.h, usbioctl.h,
usbiodef.h, usbscan.h, usbuser.h, video.h, videoagp.h, win2k.h,
winddi.h, winddk.h, winnt4.h, winxp.h, ws2san.h,
xfilter.h): New files.
* lib/ddk/(Makefile.in, apcups.def, cfgmgr32.def, dxapi.def,
hal.def, hid.def, hidparse.def, mcd.def, ndis.def, ntoskrnl.def,
scsiport.def, tdi.def, usbcamd.def, usbcamd2.def, videoprt.def,
win32k.def): Ditto.
2002-10-04 Steven Edwards <Steven_Ed4153@yahoo.com>
* lib/ntdll.def (NtAccessCheck, NtAdjustPrivilegesToken,

View File

@ -0,0 +1,503 @@
/*
* atm.h
*
* ATM support
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __ATM_H
#define __ATM_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
typedef ULONG ATM_ADDRESSTYPE;
#define SAP_TYPE_NSAP 1
#define SAP_TYPE_E164 2
#define ATM_MEDIA_SPECIFIC 1
#define CALLMGR_SPECIFIC_Q2931 1
#define ATM_NSAP 0
#define ATM_E164 1
#define ATM_MAC_ADDRESS_LENGTH 6
#define ATM_ADDRESS_LENGTH 20
typedef ULONG ATM_AAL_TYPE, *PATM_AAL_TYPE;
#define AAL_TYPE_AAL0 1
#define AAL_TYPE_AAL1 2
#define AAL_TYPE_AAL34 4
#define AAL_TYPE_AAL5 8
#define ATM_ADDR_BLANK_CHAR L' '
#define ATM_ADDR_E164_START_CHAR L'+'
#define ATM_ADDR_PUNCTUATION_CHAR L'.'
typedef enum {
IE_AALParameters,
IE_TrafficDescriptor,
IE_BroadbandBearerCapability,
IE_BHLI,
IE_BLLI,
IE_CalledPartyNumber,
IE_CalledPartySubaddress,
IE_CallingPartyNumber,
IE_CallingPartySubaddress,
IE_Cause,
IE_QOSClass,
IE_TransitNetworkSelection,
IE_BroadbandSendingComplete,
IE_LIJCallId,
IE_Raw
} Q2931_IE_TYPE;
typedef struct _Q2931_IE {
Q2931_IE_TYPE IEType;
ULONG IELength;
UCHAR IE[1];
} Q2931_IE, *PQ2931_IE;
typedef struct _AAL1_PARAMETERS {
UCHAR Subtype;
UCHAR CBRRate;
USHORT Multiplier;
UCHAR SourceClockRecoveryMethod;
UCHAR ErrorCorrectionMethod;
USHORT StructuredDataTransferBlocksize;
UCHAR PartiallyFilledCellsMethod;
} AAL1_PARAMETERS, *PAAL1_PARAMETERS;
typedef struct _AAL34_PARAMETERS {
USHORT ForwardMaxCPCSSDUSize;
USHORT BackwardMaxCPCSSDUSize;
USHORT LowestMID;
USHORT HighestMID;
UCHAR SSCSType;
} AAL34_PARAMETERS, *PAAL34_PARAMETERS;
/* AAL5_PARAMETERS.Mode constants */
#define AAL5_MODE_MESSAGE 0x01
#define AAL5_MODE_STREAMING 0x02
/* AAL5_PARAMETERS.SSCSType constants */
#define AAL5_SSCS_NULL 0x00
#define AAL5_SSCS_SSCOP_ASSURED 0x01
#define AAL5_SSCS_SSCOP_NON_ASSURED 0x02
#define AAL5_SSCS_FRAME_RELAY 0x04
typedef struct _AAL5_PARAMETERS {
ULONG ForwardMaxCPCSSDUSize;
ULONG BackwardMaxCPCSSDUSize;
UCHAR Mode;
UCHAR SSCSType;
} AAL5_PARAMETERS, *PAAL5_PARAMETERS;
typedef struct _AALUSER_PARAMETERS {
ULONG UserDefined;
} AALUSER_PARAMETERS, *PAALUSER_PARAMETERS;
typedef struct _AAL_PARAMETERS_IE {
ATM_AAL_TYPE AALType;
union {
AAL1_PARAMETERS AAL1Parameters;
AAL34_PARAMETERS AAL34Parameters;
AAL5_PARAMETERS AAL5Parameters;
AALUSER_PARAMETERS AALUserParameters;
} AALSpecificParameters;
} AAL_PARAMETERS_IE, *PAAL_PARAMETERS_IE;
typedef struct _ATM_AAL_OOB_INFO
{
ATM_AAL_TYPE AalType;
union {
struct _ATM_AAL5_INFO {
BOOLEAN CellLossPriority;
UCHAR UserToUserIndication;
UCHAR CommonPartIndicator;
} ATM_AAL5_INFO;
struct _ATM_AAL0_INFO {
BOOLEAN CellLossPriority;
UCHAR PayLoadTypeIdentifier;
} ATM_AAL0_INFO;
#ifdef __cplusplus
} u;
#else
};
#endif
} ATM_AAL_OOB_INFO, *PATM_AAL_OOB_INFO;
typedef struct _ATM_ADDRESS {
ATM_ADDRESSTYPE AddressType;
ULONG NumberOfDigits;
UCHAR Address[ATM_ADDRESS_LENGTH];
} ATM_ADDRESS, *PATM_ADDRESS;
/* ATM_BHLI_IE.HighLayerInfoType constants */
#define BHLI_ISO 0x00
#define BHLI_UserSpecific 0x01
#define BHLI_HighLayerProfile 0x02
#define BHLI_VendorSpecificAppId 0x03
typedef struct _ATM_BHLI_IE {
ULONG HighLayerInfoType;
ULONG HighLayerInfoLength;
UCHAR HighLayerInfo[8];
} ATM_BHLI_IE, *PATM_BHLI_IE;
/* ATM_BLLI_IE.Layer2Protocol constants */
#define BLLI_L2_ISO_1745 0x01
#define BLLI_L2_Q921 0x02
#define BLLI_L2_X25L 0x06
#define BLLI_L2_X25M 0x07
#define BLLI_L2_ELAPB 0x08
#define BLLI_L2_HDLC_ARM 0x09
#define BLLI_L2_HDLC_NRM 0x0A
#define BLLI_L2_HDLC_ABM 0x0B
#define BLLI_L2_LLC 0x0C
#define BLLI_L2_X75 0x0D
#define BLLI_L2_Q922 0x0E
#define BLLI_L2_USER_SPECIFIED 0x10
#define BLLI_L2_ISO_7776 0x11
/* ATM_BLLI_IE.Layer3Protocol constants */
#define BLLI_L3_X25 0x06
#define BLLI_L3_ISO_8208 0x07
#define BLLI_L3_X223 0x08
#define BLLI_L3_SIO_8473 0x09
#define BLLI_L3_T70 0x0A
#define BLLI_L3_ISO_TR9577 0x0B
#define BLLI_L3_USER_SPECIFIED 0x10
/* ATM_BLLI_IE.Layer3IPI constants */
#define BLLI_L3_IPI_SNAP 0x80
#define BLLI_L3_IPI_IP 0xCC
typedef struct _ATM_BLLI_IE {
ULONG Layer2Protocol;
UCHAR Layer2Mode;
UCHAR Layer2WindowSize;
ULONG Layer2UserSpecifiedProtocol;
ULONG Layer3Protocol;
UCHAR Layer3Mode;
UCHAR Layer3DefaultPacketSize;
UCHAR Layer3PacketWindowSize;
ULONG Layer3UserSpecifiedProtocol;
ULONG Layer3IPI;
UCHAR SnapId[5];
} ATM_BLLI_IE, *PATM_BLLI_IE;
/* ATM_BROADBAND_BEARER_CAPABILITY_IE.BearerClass constants */
#define BCOB_A 0x00
#define BCOB_C 0x01
#define BCOB_X 0x02
/* ATM_BROADBAND_BEARER_CAPABILITY_IE.TrafficType constants */
#define TT_NOIND 0x00
#define TT_CBR 0x04
#define TT_VBR 0x08
/* ATM_BROADBAND_BEARER_CAPABILITY_IE.TimingRequirements constants */
#define TR_NOIND 0x00
#define TR_END_TO_END 0x01
#define TR_NO_END_TO_END 0x02
/* ATM_BROADBAND_BEARER_CAPABILITY_IE.ClippingSusceptability constants */
#define CLIP_NOT 0x00
#define CLIP_SUS 0x20
/* ATM_BROADBAND_BEARER_CAPABILITY_IE.UserPlaneConnectionConfig constants */
#define UP_P2P 0x00
#define UP_P2MP 0x01
typedef struct _ATM_BROADBAND_BEARER_CAPABILITY_IE {
UCHAR BearerClass;
UCHAR TrafficType;
UCHAR TimingRequirements;
UCHAR ClippingSusceptability;
UCHAR UserPlaneConnectionConfig;
} ATM_BROADBAND_BEARER_CAPABILITY_IE, *PATM_BROADBAND_BEARER_CAPABILITY_IE;
typedef struct _ATM_BROADBAND_SENDING_COMPLETE_IE {
UCHAR SendingComplete;
} ATM_BROADBAND_SENDING_COMPLETE_IE, *PATM_BROADBAND_SENDING_COMPLETE_IE;
typedef struct _ATM_CALLING_PARTY_NUMBER_IE {
ATM_ADDRESS Number;
UCHAR PresentationIndication;
UCHAR ScreeningIndicator;
} ATM_CALLING_PARTY_NUMBER_IE, *PATM_CALLING_PARTY_NUMBER_IE;
/* ATM_CAUSE_IE.Location constants */
#define ATM_CAUSE_LOC_USER 0x00
#define ATM_CAUSE_LOC_PRIVATE_LOCAL 0x01
#define ATM_CAUSE_LOC_PUBLIC_LOCAL 0x02
#define ATM_CAUSE_LOC_TRANSIT_NETWORK 0x03
#define ATM_CAUSE_LOC_PUBLIC_REMOTE 0x04
#define ATM_CAUSE_LOC_PRIVATE_REMOTE 0x05
#define ATM_CAUSE_LOC_INTERNATIONAL_NETWORK 0x07
#define ATM_CAUSE_LOC_BEYOND_INTERWORKING 0x0A
/* ATM_CAUSE_IE.Cause constants */
#define ATM_CAUSE_UNALLOCATED_NUMBER 0x01
#define ATM_CAUSE_NO_ROUTE_TO_TRANSIT_NETWORK 0x02
#define ATM_CAUSE_NO_ROUTE_TO_DESTINATION 0x03
#define ATM_CAUSE_VPI_VCI_UNACCEPTABLE 0x0A
#define ATM_CAUSE_NORMAL_CALL_CLEARING 0x10
#define ATM_CAUSE_USER_BUSY 0x11
#define ATM_CAUSE_NO_USER_RESPONDING 0x12
#define ATM_CAUSE_CALL_REJECTED 0x15
#define ATM_CAUSE_NUMBER_CHANGED 0x16
#define ATM_CAUSE_USER_REJECTS_CLIR 0x17
#define ATM_CAUSE_DESTINATION_OUT_OF_ORDER 0x1B
#define ATM_CAUSE_INVALID_NUMBER_FORMAT 0x1C
#define ATM_CAUSE_STATUS_ENQUIRY_RESPONSE 0x1E
#define ATM_CAUSE_NORMAL_UNSPECIFIED 0x1F
#define ATM_CAUSE_VPI_VCI_UNAVAILABLE 0x23
#define ATM_CAUSE_NETWORK_OUT_OF_ORDER 0x26
#define ATM_CAUSE_TEMPORARY_FAILURE 0x29
#define ATM_CAUSE_ACCESS_INFORMAION_DISCARDED 0x2B
#define ATM_CAUSE_NO_VPI_VCI_AVAILABLE 0x2D
#define ATM_CAUSE_RESOURCE_UNAVAILABLE 0x2F
#define ATM_CAUSE_QOS_UNAVAILABLE 0x31
#define ATM_CAUSE_USER_CELL_RATE_UNAVAILABLE 0x33
#define ATM_CAUSE_BEARER_CAPABILITY_UNAUTHORIZED 0x39
#define ATM_CAUSE_BEARER_CAPABILITY_UNAVAILABLE 0x3A
#define ATM_CAUSE_OPTION_UNAVAILABLE 0x3F
#define ATM_CAUSE_BEARER_CAPABILITY_UNIMPLEMENTED 0x41
#define ATM_CAUSE_UNSUPPORTED_TRAFFIC_PARAMETERS 0x49
#define ATM_CAUSE_INVALID_CALL_REFERENCE 0x51
#define ATM_CAUSE_CHANNEL_NONEXISTENT 0x52
#define ATM_CAUSE_INCOMPATIBLE_DESTINATION 0x58
#define ATM_CAUSE_INVALID_ENDPOINT_REFERENCE 0x59
#define ATM_CAUSE_INVALID_TRANSIT_NETWORK_SELECTION 0x5B
#define ATM_CAUSE_TOO_MANY_PENDING_ADD_PARTY 0x5C
#define ATM_CAUSE_AAL_PARAMETERS_UNSUPPORTED 0x5D
#define ATM_CAUSE_MANDATORY_IE_MISSING 0x60
#define ATM_CAUSE_UNIMPLEMENTED_MESSAGE_TYPE 0x61
#define ATM_CAUSE_UNIMPLEMENTED_IE 0x63
#define ATM_CAUSE_INVALID_IE_CONTENTS 0x64
#define ATM_CAUSE_INVALID_STATE_FOR_MESSAGE 0x65
#define ATM_CAUSE_RECOVERY_ON_TIMEOUT 0x66
#define ATM_CAUSE_INCORRECT_MESSAGE_LENGTH 0x68
#define ATM_CAUSE_PROTOCOL_ERROR 0x6F
/* ATM_CAUSE_IE.Diagnostics constants */
#define ATM_CAUSE_COND_UNKNOWN 0x00
#define ATM_CAUSE_COND_PERMANENT 0x01
#define ATM_CAUSE_COND_TRANSIENT 0x02
#define ATM_CAUSE_REASON_USER 0x00
#define ATM_CAUSE_REASON_IE_MISSING 0x04
#define ATM_CAUSE_REASON_IE_INSUFFICIENT 0x08
#define ATM_CAUSE_PU_PROVIDER 0x00
#define ATM_CAUSE_PU_USER 0x08
#define ATM_CAUSE_NA_NORMAL 0x00
#define ATM_CAUSE_NA_ABNORMAL 0x04
typedef struct _ATM_CAUSE_IE {
UCHAR Location;
UCHAR Cause;
UCHAR DiagnosticsLength;
UCHAR Diagnostics[4];
} ATM_CAUSE_IE, *PATM_CAUSE_IE;
typedef ULONG ATM_SERVICE_CATEGORY, *PATM_SERVICE_CATEGORY;
/* ATM_FLOW_PARAMETERS.ServiceCategory constants */
#define ATM_SERVICE_CATEGORY_CBR 1
#define ATM_SERVICE_CATEGORY_VBR 2
#define ATM_SERVICE_CATEGORY_UBR 4
#define ATM_SERVICE_CATEGORY_ABR 8
/* ATM_FLOW_PARAMETERS.Reserved1 constants */
#define ATM_FLOW_PARAMS_RSVD1_MPP 0x01
typedef struct _ATM_FLOW_PARAMETERS {
ATM_SERVICE_CATEGORY ServiceCategory;
ULONG AverageCellRate;
ULONG PeakCellRate;
ULONG MinimumCellRate;
ULONG InitialCellRate;
ULONG BurstLengthCells;
ULONG MaxSduSize;
ULONG TransientBufferExposure;
ULONG CumulativeRMFixedRTT;
UCHAR RateIncreaseFactor;
UCHAR RateDecreaseFactor;
USHORT ACRDecreaseTimeFactor;
UCHAR MaximumCellsPerForwardRMCell;
UCHAR MaximumForwardRMCellInterval;
UCHAR CutoffDecreaseFactor;
UCHAR Reserved1;
ULONG MissingRMCellCount;
ULONG Reserved2;
ULONG Reserved3;
} ATM_FLOW_PARAMETERS, *PATM_FLOW_PARAMETERS;
typedef struct _ATM_VPIVCI {
ULONG Vpi;
ULONG Vci;
} ATM_VPIVCI, *PATM_VPIVCI;
typedef struct _ATM_MEDIA_PARAMETERS {
ATM_VPIVCI ConnectionId;
ATM_AAL_TYPE AALType;
ULONG CellDelayVariationCLP0;
ULONG CellDelayVariationCLP1;
ULONG CellLossRatioCLP0;
ULONG CellLossRatioCLP1;
ULONG CellTransferDelayCLP0;
ULONG CellTransferDelayCLP1;
ULONG DefaultCLP;
ATM_FLOW_PARAMETERS Transmit;
ATM_FLOW_PARAMETERS Receive;
} ATM_MEDIA_PARAMETERS, *PATM_MEDIA_PARAMETERS;
typedef struct _ATM_PVC_SAP {
ATM_BLLI_IE Blli;
ATM_BHLI_IE Bhli;
} ATM_PVC_SAP, *PATM_PVC_SAP;
/* ATM_QOS_CLASS_IE constants */
#define QOS_CLASS0 0x00
#define QOS_CLASS1 0x01
#define QOS_CLASS2 0x02
#define QOS_CLASS3 0x03
#define QOS_CLASS4 0x04
typedef struct _ATM_QOS_CLASS_IE {
UCHAR QOSClassForward;
UCHAR QOSClassBackward;
} ATM_QOS_CLASS_IE, *PATM_QOS_CLASS_IE;
typedef struct _ATM_RAW_IE {
ULONG RawIELength;
ULONG RawIEType;
UCHAR RawIEValue[1];
} ATM_RAW_IE, *PATM_RAW_IE;
typedef struct _ATM_SAP {
ATM_BLLI_IE Blli;
ATM_BHLI_IE Bhli;
ULONG NumberOfAddresses;
UCHAR Addresses[1];
} ATM_SAP, *PATM_SAP;
typedef struct _ATM_TRAFFIC_DESCRIPTOR {
ULONG PeakCellRateCLP0;
ULONG PeakCellRateCLP01;
ULONG SustainableCellRateCLP0;
ULONG SustainableCellRateCLP01;
ULONG MaximumBurstSizeCLP0;
ULONG MaximumBurstSizeCLP01;
BOOLEAN BestEffort;
BOOLEAN Tagging;
} ATM_TRAFFIC_DESCRIPTOR, *PATM_TRAFFIC_DESCRIPTOR;
typedef struct _ATM_TRAFFIC_DESCRIPTOR_IE {
ATM_TRAFFIC_DESCRIPTOR ForwardTD;
ATM_TRAFFIC_DESCRIPTOR BackwardTD;
} ATM_TRAFFIC_DESCRIPTOR_IE, *PATM_TRAFFIC_DESCRIPTOR_IE;
/* ATM_TRANSIT_NETWORK_SELECTION_IE.TypeOfNetworkId constants */
#define TNS_TYPE_NATIONAL 0x40
/* ATM_TRANSIT_NETWORK_SELECTION_IE.NetworkIdPlan constants */
#define TNS_PLAN_CARRIER_ID_CODE 0x01
typedef struct _ATM_TRANSIT_NETWORK_SELECTION_IE {
UCHAR TypeOfNetworkId;
UCHAR NetworkIdPlan;
UCHAR NetworkIdLength;
UCHAR NetworkId[1];
} ATM_TRANSIT_NETWORK_SELECTION_IE, *PATM_TRANSIT_NETWORK_SELECTION_IE;
typedef struct _ATM_LIJ_CALLID_IE {
ULONG Identifier;
} ATM_LIJ_CALLID_IE, *PATM_LIJ_CALLID_IE;
/* Q2931_ADD_PVC.Flags constants */
#define CO_FLAG_SIGNALING_VC 0x00000001
#define CO_FLAG_NO_DEST_SAP 0x00000002
typedef struct _Q2931_ADD_PVC {
ATM_ADDRESS CalledParty;
ATM_ADDRESS CallingParty;
ATM_VPIVCI ConnectionId;
ATM_AAL_TYPE AALType;
ATM_FLOW_PARAMETERS ForwardFP;
ATM_FLOW_PARAMETERS BackwardFP;
ULONG Flags;
ATM_PVC_SAP LocalSap;
ATM_PVC_SAP DestinationSap;
BOOLEAN LIJIdPresent;
ATM_LIJ_CALLID_IE LIJId;
} Q2931_ADD_PVC, *PQ2931_ADD_PVC;
typedef struct _Q2931_DELETE_PVC {
ATM_VPIVCI ConnectionId;
} Q2931_DELETE_PVC, *PQ2931_DELETE_PVC;
typedef ATM_ADDRESS ATM_CALLED_PARTY_NUMBER_IE;
typedef ATM_ADDRESS ATM_CALLED_PARTY_SUBADDRESS_IE;
typedef ATM_ADDRESS ATM_CALLING_PARTY_SUBADDRESS_IE;
typedef struct _Q2931_CALLMGR_PARAMETERS {
ATM_ADDRESS CalledParty;
ATM_ADDRESS CallingParty;
ULONG InfoElementCount;
UCHAR InfoElements[1];
} Q2931_CALLMGR_PARAMETERS, *PQ2931_CALLMGR_PARAMETERS;
typedef struct _ATM_VC_RATES_SUPPORTED {
ULONG MinCellRate;
ULONG MaxCellRate;
} ATM_VC_RATES_SUPPORTED, *PATM_VC_RATES_SUPPORTED;
typedef ULONG ATM_SERVICE_REGISTRY_TYPE;
/* ATM_SERVICE_ADDRESS_LIST.ServiceRegistryType constants */
#define ATM_SERVICE_REGISTRY_LECS 1
#define ATM_SERVICE_REGISTRY_ANS 2
typedef struct _ATM_SERVICE_ADDRESS_LIST {
ATM_SERVICE_REGISTRY_TYPE ServiceRegistryType;
ULONG NumberOfAddressesAvailable;
ULONG NumberOfAddressesReturned;
ATM_ADDRESS Address[1];
} ATM_SERVICE_ADDRESS_LIST, *PATM_SERVICE_ADDRESS_LIST;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __ATM_H */

View File

@ -0,0 +1,308 @@
/*
* batclass.h
*
* Battery class driver interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __BATCLASS_H
#define __BATCLASS_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#if defined(_BATTERYCLASS_)
#define BCLASSAPI DECLSPEC_EXPORT
#else
#define BCLASSAPI DECLSPEC_IMPORT
#endif
/* Battery device GUIDs */
DEFINE_GUID(GUID_DEVICE_BATTERY,
0x72631e54L, 0x78A4, 0x11d0, 0xbc, 0xf7, 0x00, 0xaa, 0x00, 0xb7, 0xb3, 0x2a);
DEFINE_GUID(BATTERY_STATUS_WMI_GUID,
0xfc4670d1, 0xebbf, 0x416e, 0x87, 0xce, 0x37, 0x4a, 0x4e, 0xbc, 0x11, 0x1a);
DEFINE_GUID(BATTERY_RUNTIME_WMI_GUID,
0x535a3767, 0x1ac2, 0x49bc, 0xa0, 0x77, 0x3f, 0x7a, 0x02, 0xe4, 0x0a, 0xec);
DEFINE_GUID(BATTERY_TEMPERATURE_WMI_GUID,
0x1a52a14d, 0xadce, 0x4a44, 0x9a, 0x3e, 0xc8, 0xd8, 0xf1, 0x5f, 0xf2, 0xc2);
DEFINE_GUID(BATTERY_FULL_CHARGED_CAPACITY_WMI_GUID,
0x40b40565, 0x96f7, 0x4435, 0x86, 0x94, 0x97, 0xe0, 0xe4, 0x39, 0x59, 0x05);
DEFINE_GUID(BATTERY_CYCLE_COUNT_WMI_GUID,
0xef98db24, 0x0014, 0x4c25, 0xa5, 0x0b, 0xc7, 0x24, 0xae, 0x5c, 0xd3, 0x71);
DEFINE_GUID(BATTERY_STATIC_DATA_WMI_GUID,
0x05e1e463, 0xe4e2, 0x4ea9, 0x80, 0xcb, 0x9b, 0xd4, 0xb3, 0xca, 0x06, 0x55);
DEFINE_GUID(BATTERY_STATUS_CHANGE_WMI_GUID,
0xcddfa0c3, 0x7c5b, 0x4e43, 0xa0, 0x34, 0x05, 0x9f, 0xa5, 0xb8, 0x43, 0x64);
DEFINE_GUID(BATTERY_TAG_CHANGE_WMI_GUID,
0x5e1f6e19, 0x8786, 0x4d23, 0x94, 0xfc, 0x9e, 0x74, 0x6b, 0xd5, 0xd8, 0x88);
/* BATTERY_INFORMATION.Capabilities constants */
#define BATTERY_SET_CHARGE_SUPPORTED 0x00000001
#define BATTERY_SET_DISCHARGE_SUPPORTED 0x00000002
#define BATTERY_SET_RESUME_SUPPORTED 0x00000004
#define BATTERY_IS_SHORT_TERM 0x20000000
#define BATTERY_CAPACITY_RELATIVE 0x40000000
#define BATTERY_SYSTEM_BATTERY 0x80000000
typedef struct _BATTERY_INFORMATION {
ULONG Capabilities;
UCHAR Technology;
UCHAR Reserved[3];
UCHAR Chemistry[4];
ULONG DesignedCapacity;
ULONG FullChargedCapacity;
ULONG DefaultAlert1;
ULONG DefaultAlert2;
ULONG CriticalBias;
ULONG CycleCount;
} BATTERY_INFORMATION, *PBATTERY_INFORMATION;
typedef struct _BATTERY_MANUFACTURE_DATE {
UCHAR Day;
UCHAR Month;
USHORT Year;
} BATTERY_MANUFACTURE_DATE, *PBATTERY_MANUFACTURE_DATE;
typedef struct _BATTERY_NOTIFY {
ULONG PowerState;
ULONG LowCapacity;
ULONG HighCapacity;
} BATTERY_NOTIFY, *PBATTERY_NOTIFY;
typedef struct _BATTERY_REPORTING_SCALE {
ULONG Granularity;
ULONG Capacity;
} BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE;
/* BATTERY_STATUS.PowerState flags */
#define BATTERY_POWER_ON_LINE 0x00000001
#define BATTERY_DISCHARGING 0x00000002
#define BATTERY_CHARGING 0x00000004
#define BATTERY_CRITICAL 0x00000008
/* BATTERY_STATUS.Voltage constant */
#define BATTERY_UNKNOWN_VOLTAGE 0xFFFFFFFF
/* BATTERY_STATUS.Rate constant */
#define BATTERY_UNKNOWN_RATE 0x80000000
typedef struct _BATTERY_STATUS {
ULONG PowerState;
ULONG Capacity;
ULONG Voltage;
LONG Rate;
} BATTERY_STATUS, *PBATTERY_STATUS;
/* BATTERY_INFORMATION.Capacity constants */
#define BATTERY_UNKNOWN_CAPACITY 0xFFFFFFFF
typedef enum _BATTERY_QUERY_INFORMATION_LEVEL {
BatteryInformation = 0,
BatteryGranularityInformation,
BatteryTemperature,
BatteryEstimatedTime,
BatteryDeviceName,
BatteryManufactureDate,
BatteryManufactureName,
BatteryUniqueID,
BatterySerialNumber
} BATTERY_QUERY_INFORMATION_LEVEL;
/* BatteryEstimatedTime constant */
#define BATTERY_UNKNOWN_TIME 0x80000000
/* NTSTATUS possibly returned by BCLASS_QUERY_STATUS */
#define BATTERY_TAG_INVALID 0
typedef struct _BATTERY_QUERY_INFORMATION {
ULONG BatteryTag;
BATTERY_QUERY_INFORMATION_LEVEL InformationLevel;
LONG AtRate;
} BATTERY_QUERY_INFORMATION, *PBATTERY_QUERY_INFORMATION;
typedef enum _BATTERY_SET_INFORMATION_LEVEL {
BatteryCriticalBias = 0,
BatteryCharge,
BatteryDischarge
} BATTERY_SET_INFORMATION_LEVEL;
#define MAX_BATTERY_STRING_SIZE 128
typedef struct _BATTERY_SET_INFORMATION {
ULONG BatteryTag;
BATTERY_SET_INFORMATION_LEVEL InformationLevel;
UCHAR Buffer[1];
} BATTERY_SET_INFORMATION, *PBATTERY_SET_INFORMATION;
typedef struct _BATTERY_WAIT_STATUS {
ULONG BatteryTag;
ULONG Timeout;
ULONG PowerState;
ULONG LowCapacity;
ULONG HighCapacity;
} BATTERY_WAIT_STATUS, *PBATTERY_WAIT_STATUS;
#define IOCTL_BATTERY_QUERY_TAG \
CTL_CODE(FILE_DEVICE_BATTERY, 0x10, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_BATTERY_QUERY_INFORMATION \
CTL_CODE(FILE_DEVICE_BATTERY, 0x11, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_BATTERY_SET_INFORMATION \
CTL_CODE(FILE_DEVICE_BATTERY, 0x12, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define IOCTL_BATTERY_QUERY_STATUS \
CTL_CODE(FILE_DEVICE_BATTERY, 0x13, METHOD_BUFFERED, FILE_READ_ACCESS)
typedef NTSTATUS DDKAPI
(*BCLASS_DISABLE_STATUS_NOTIFY)(
IN PVOID Context);
typedef NTSTATUS DDKAPI
(*BCLASS_QUERY_INFORMATION)(
IN PVOID Context,
IN ULONG BatteryTag,
IN BATTERY_QUERY_INFORMATION_LEVEL Level,
IN LONG AtRate OPTIONAL,
OUT PVOID Buffer,
IN ULONG BufferLength,
OUT PULONG ReturnedLength);
typedef NTSTATUS DDKAPI
(*BCLASS_QUERY_STATUS)(
IN PVOID Context,
IN ULONG BatteryTag,
OUT PBATTERY_STATUS BatteryStatus);
typedef NTSTATUS DDKAPI
(*BCLASS_QUERY_TAG)(
IN PVOID Context,
OUT PULONG BatteryTag);
typedef NTSTATUS DDKAPI
(*BCLASS_SET_INFORMATION)(
IN PVOID Context,
IN ULONG BatteryTag,
IN BATTERY_SET_INFORMATION_LEVEL Level,
IN PVOID Buffer OPTIONAL);
typedef NTSTATUS DDKAPI
(*BCLASS_SET_STATUS_NOTIFY)(
IN PVOID Context,
IN ULONG BatteryTag,
IN PBATTERY_NOTIFY BatteryNotify);
typedef struct _BATTERY_MINIPORT_INFO {
USHORT MajorVersion;
USHORT MinorVersion;
PVOID Context;
BCLASS_QUERY_TAG QueryTag;
BCLASS_QUERY_INFORMATION QueryInformation;
BCLASS_SET_INFORMATION SetInformation;
BCLASS_QUERY_STATUS QueryStatus;
BCLASS_SET_STATUS_NOTIFY SetStatusNotify;
BCLASS_DISABLE_STATUS_NOTIFY DisableStatusNotify;
PDEVICE_OBJECT Pdo;
PUNICODE_STRING DeviceName;
} BATTERY_MINIPORT_INFO, *PBATTERY_MINIPORT_INFO;
/* BATTERY_MINIPORT_INFO.XxxVersion */
#define BATTERY_CLASS_MAJOR_VERSION 0x0001
#define BATTERY_CLASS_MINOR_VERSION 0x0000
BCLASSAPI
NTSTATUS
DDKAPI
BatteryClassInitializeDevice(
IN PBATTERY_MINIPORT_INFO MiniportInfo,
IN PVOID *ClassData);
BCLASSAPI
NTSTATUS
DDKAPI
BatteryClassIoctl(
IN PVOID ClassData,
IN PIRP Irp);
BCLASSAPI
NTSTATUS
DDKAPI
BatteryClassQueryWmiDataBlock(
IN PVOID ClassData,
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN ULONG GuidIndex,
IN OUT PULONG InstanceLengthArray,
IN ULONG OutBufferSize,
OUT PUCHAR Buffer);
BCLASSAPI
NTSTATUS
DDKAPI
BatteryClassStatusNotify(
IN PVOID ClassData);
BCLASSAPI
NTSTATUS
DDKAPI
BatteryClassSystemControl(
IN PVOID ClassData,
IN PWMILIB_CONTEXT WmiLibContext,
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
OUT PSYSCTL_IRP_DISPOSITION Disposition);
BCLASSAPI
NTSTATUS
DDKAPI
BatteryClassUnload(
IN PVOID ClassData);
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __BATCLASS_H */

View File

@ -0,0 +1,123 @@
/*
* cfg.h
*
* PnP Configuration Manager shared definitions between user mode and kernel mode code
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __CFG_H
#define __CFG_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#define CM_PROB_NOT_CONFIGURED 0x00000001
#define CM_PROB_DEVLOADER_FAILED 0x00000002
#define CM_PROB_OUT_OF_MEMORY 0x00000003
#define CM_PROB_ENTRY_IS_WRONG_TYPE 0x00000004
#define CM_PROB_LACKED_ARBITRATOR 0x00000005
#define CM_PROB_BOOT_CONFIG_CONFLICT 0x00000006
#define CM_PROB_FAILED_FILTER 0x00000007
#define CM_PROB_DEVLOADER_NOT_FOUND 0x00000008
#define CM_PROB_INVALID_DATA 0x00000009
#define CM_PROB_FAILED_START 0x0000000A
#define CM_PROB_LIAR 0x0000000B
#define CM_PROB_NORMAL_CONFLICT 0x0000000C
#define CM_PROB_NOT_VERIFIED 0x0000000D
#define CM_PROB_NEED_RESTART 0x0000000E
#define CM_PROB_REENUMERATION 0x0000000F
#define CM_PROB_PARTIAL_LOG_CONF 0x00000010
#define CM_PROB_UNKNOWN_RESOURCE 0x00000011
#define CM_PROB_REINSTALL 0x00000012
#define CM_PROB_REGISTRY 0x00000013
#define CM_PROB_VXDLDR 0x00000014
#define CM_PROB_WILL_BE_REMOVED 0x00000015
#define CM_PROB_DISABLED 0x00000016
#define CM_PROB_DEVLOADER_NOT_READY 0x00000017
#define CM_PROB_DEVICE_NOT_THERE 0x00000018
#define CM_PROB_MOVED 0x00000019
#define CM_PROB_TOO_EARLY 0x0000001A
#define CM_PROB_NO_VALID_LOG_CONF 0x0000001B
#define CM_PROB_FAILED_INSTALL 0x0000001C
#define CM_PROB_HARDWARE_DISABLED 0x0000001D
#define CM_PROB_CANT_SHARE_IRQ 0x0000001E
#define CM_PROB_FAILED_ADD 0x0000001F
#define CM_PROB_DISABLED_SERVICE 0x00000020
#define CM_PROB_TRANSLATION_FAILED 0x00000021
#define CM_PROB_NO_SOFTCONFIG 0x00000022
#define CM_PROB_BIOS_TABLE 0x00000023
#define CM_PROB_IRQ_TRANSLATION_FAILED 0x00000024
#define CM_PROB_FAILED_DRIVER_ENTRY 0x00000025
#define CM_PROB_DRIVER_FAILED_PRIOR_UNLOAD 0x00000026
#define CM_PROB_DRIVER_FAILED_LOAD 0x00000027
#define CM_PROB_DRIVER_SERVICE_KEY_INVALID 0x00000028
#define CM_PROB_LEGACY_SERVICE_NO_DEVICES 0x00000029
#define CM_PROB_DUPLICATE_DEVICE 0x0000002A
#define CM_PROB_FAILED_POST_START 0x0000002B
#define CM_PROB_HALTED 0x0000002C
#define CM_PROB_PHANTOM 0x0000002D
#define CM_PROB_SYSTEM_SHUTDOWN 0x0000002E
#define CM_PROB_HELD_FOR_EJECT 0x0000002F
#define CM_PROB_DRIVER_BLOCKED 0x00000030
#define CM_PROB_REGISTRY_TOO_LARGE 0x00000031
#define LCPRI_FORCECONFIG 0x00000000
#define LCPRI_BOOTCONFIG 0x00000001
#define LCPRI_DESIRED 0x00002000
#define LCPRI_NORMAL 0x00003000
#define LCPRI_LASTBESTCONFIG 0x00003FFF
#define LCPRI_SUBOPTIMAL 0x00005000
#define LCPRI_LASTSOFTCONFIG 0x00007FFF
#define LCPRI_RESTART 0x00008000
#define LCPRI_REBOOT 0x00009000
#define LCPRI_POWEROFF 0x0000A000
#define LCPRI_HARDRECONFIG 0x0000C000
#define LCPRI_HARDWIRED 0x0000E000
#define LCPRI_IMPOSSIBLE 0x0000F000
#define LCPRI_DISABLED 0x0000FFFF
#define MAX_LCPRI 0x0000FFFF
typedef enum _PNP_VETO_TYPE {
PNP_VetoTypeUnknown,
PNP_VetoLegacyDevice,
PNP_VetoPendingClose,
PNP_VetoWindowsApp,
PNP_VetoWindowsService,
PNP_VetoOutstandingOpen,
PNP_VetoDevice,
PNP_VetoDriver,
PNP_VetoIllegalDeviceRequest,
PNP_VetoInsufficientPower,
PNP_VetoNonDisableable,
PNP_VetoLegacyDriver,
} PNP_VETO_TYPE, *PPNP_VETO_TYPE;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __CFG_H */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,108 @@
/*
* d4drvif.h
*
* DOT4 driver IOCTL interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __D4DRVIF_H
#define __D4DRVIF_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "d4iface.h"
#define FILE_DEVICE_DOT4 0x3a
#define IOCTL_DOT4_USER_BASE 2049
#define IOCTL_DOT4_ADD_ACTIVITY_BROADCAST \
CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DOT4_CLOSE_CHANNEL \
CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DOT4_CREATE_SOCKET \
CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 7, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
#define IOCTL_DOT4_DESTROY_SOCKET \
CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 9, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
#define IOCTL_DOT4_OPEN_CHANNEL \
CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 0, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
#define IOCTL_DOT4_READ \
CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 2, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
#define IOCTL_DOT4_REMOVE_ACTIVITY_BROADCAST \
CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DOT4_WAIT_ACTIVITY_BROADCAST \
CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 6, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
#define IOCTL_DOT4_WAIT_FOR_CHANNEL \
CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 8, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
#define IOCTL_DOT4_WRITE \
CTL_CODE(FILE_DEVICE_DOT4, IOCTL_DOT4_USER_BASE + 3, METHOD_IN_DIRECT, FILE_ANY_ACCESS)
#define MAX_SERVICE_LENGTH 40
typedef struct _DOT4_DC_CREATE_DATA {
unsigned char bPsid;
CHAR pServiceName[MAX_SERVICE_LENGTH + 1];
unsigned char bType;
ULONG ulBufferSize;
USHORT usMaxHtoPPacketSize;
USHORT usMaxPtoHPacketSize;
unsigned char bHsid;
} DOT4_DC_CREATE_DATA, *PDOT4_DC_CREATE_DATA;
typedef struct _DOT4_DC_DESTROY_DATA {
unsigned char bHsid;
} DOT4_DC_DESTROY_DATA, *PDOT4_DC_DESTROY_DATA;
typedef struct _DOT4_DC_OPEN_DATA {
unsigned char bHsid;
unsigned char fAddActivity;
CHANNEL_HANDLE hChannelHandle;
} DOT4_DC_OPEN_DATA, *PDOT4_DC_OPEN_DATA;
typedef struct _DOT4_DRIVER_CMD {
CHANNEL_HANDLE hChannelHandle;
ULONG ulSize;
ULONG ulOffset;
ULONG ulTimeout;
} DOT4_DRIVER_CMD, *PDOT4_DRIVER_CMD;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __D4DRVIF_H */

View File

@ -0,0 +1,88 @@
/*
* d4iface.h
*
* DOT4 interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __D4IFACE_H
#define __D4IFACE_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define DOT4_MAX_CHANNELS 128
#define NO_TIMEOUT 0
#define DOT4_CHANNEL 0
#define HP_MESSAGE_PROCESSOR 1
#define PRINTER_CHANNEL 2
#define SCANNER_CHANNEL 4
#define MIO_COMMAND_PROCESSOR 5
#define ECHO_CHANNEL 6
#define FAX_SEND_CHANNEL 7
#define FAX_RECV_CHANNEL 8
#define DIAGNOSTIC_CHANNEL 9
#define HP_RESERVED 10
#define IMAGE_DOWNLOAD 11
#define HOST_DATASTORE_UPLOAD 12
#define HOST_DATASTORE_DOWNLOAD 13
#define CONFIG_UPLOAD 14
#define CONFIG_DOWNLOAD 15
#define STREAM_TYPE_CHANNEL 1
#define PACKET_TYPE_CHANNEL 2
/* DOT4_ACTIVITY.ulMessage flags */
#define DOT4_STREAM_RECEIVED 0x100
#define DOT4_STREAM_CREDITS 0x101
#define DOT4_MESSAGE_RECEIVED 0x102
#define DOT4_DISCONNECT 0x103
#define DOT4_CHANNEL_CLOSED 0x105
typedef unsigned long CHANNEL_HANDLE, *PCHANNEL_HANDLE;
typedef struct _DOT4_ACTIVITY {
ULONG ulMessage;
ULONG ulByteCount;
CHANNEL_HANDLE hChannel;
} DOT4_ACTIVITY, *PDOT4_ACTIVITY;
typedef struct _DOT4_WMI_XFER_INFO {
ULONG ulStreamBytesWritten;
ULONG ulStreamBytesRead;
ULONG ulPacketBytesWritten;
ULONG ulPacketBytesRead;
} DOT4_WMI_XFER_INFO, *PDOT4_WMI_XFER_INFO;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __D4IFACE_H */

View File

@ -0,0 +1,338 @@
/*
* ddkmapi.h
*
* DirectDraw support for DxApi function
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __DDKMAPI_H
#define __DDKMAPI_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#if defined(_DXAPI_)
#define DXAPI DECLSPEC_EXPORT
#else
#define DXAPI DECLSPEC_IMPORT
#endif
DXAPI
DWORD
FAR PASCAL
DxApi(
IN DWORD dwFunctionNum,
IN LPVOID lpvInBuffer,
IN DWORD cbInBuffer,
OUT LPVOID lpvOutBuffer,
OUT DWORD cbOutBuffer);
typedef DWORD (FAR PASCAL *LPDXAPI)(
DWORD dwFunctionNum,
LPVOID lpvInBuffer,
DWORD cbInBuffer,
LPVOID lpvOutBuffer,
DWORD cbOutBuffer);
#define DXAPI_MAJORVERSION 1
#define DXAPI_MINORVERSION 0
#define DD_FIRST_DXAPI 0x500
#define DD_DXAPI_GETVERSIONNUMBER (DD_FIRST_DXAPI)
#define DD_DXAPI_CLOSEHANDLE (DD_FIRST_DXAPI+1)
#define DD_DXAPI_OPENDIRECTDRAW (DD_FIRST_DXAPI+2)
#define DD_DXAPI_OPENSURFACE (DD_FIRST_DXAPI+3)
#define DD_DXAPI_OPENVIDEOPORT (DD_FIRST_DXAPI+4)
#define DD_DXAPI_GETKERNELCAPS (DD_FIRST_DXAPI+5)
#define DD_DXAPI_GET_VP_FIELD_NUMBER (DD_FIRST_DXAPI+6)
#define DD_DXAPI_SET_VP_FIELD_NUMBER (DD_FIRST_DXAPI+7)
#define DD_DXAPI_SET_VP_SKIP_FIELD (DD_FIRST_DXAPI+8)
#define DD_DXAPI_GET_SURFACE_STATE (DD_FIRST_DXAPI+9)
#define DD_DXAPI_SET_SURFACE_STATE (DD_FIRST_DXAPI+10)
#define DD_DXAPI_LOCK (DD_FIRST_DXAPI+11)
#define DD_DXAPI_FLIP_OVERLAY (DD_FIRST_DXAPI+12)
#define DD_DXAPI_FLIP_VP (DD_FIRST_DXAPI+13)
#define DD_DXAPI_GET_CURRENT_VP_AUTOFLIP_SURFACE (DD_FIRST_DXAPI+14)
#define DD_DXAPI_GET_LAST_VP_AUTOFLIP_SURFACE (DD_FIRST_DXAPI+15)
#define DD_DXAPI_REGISTER_CALLBACK (DD_FIRST_DXAPI+16)
#define DD_DXAPI_UNREGISTER_CALLBACK (DD_FIRST_DXAPI+17)
#define DD_DXAPI_GET_POLARITY (DD_FIRST_DXAPI+18)
#define DD_DXAPI_OPENVPCAPTUREDEVICE (DD_FIRST_DXAPI+19)
#define DD_DXAPI_ADDVPCAPTUREBUFFER (DD_FIRST_DXAPI+20)
#define DD_DXAPI_FLUSHVPCAPTUREBUFFERS (DD_FIRST_DXAPI+21)
typedef struct _DDCAPBUFFINFO {
DWORD dwFieldNumber;
DWORD bPolarity;
LARGE_INTEGER liTimeStamp;
DWORD ddRVal;
} DDCAPBUFFINFO, FAR * LPDDCAPBUFFINFO;
/* DDADDVPCAPTUREBUFF.dwFlags constants */
#define DDADDBUFF_SYSTEMMEMORY 0x0001
#define DDADDBUFF_NONLOCALVIDMEM 0x0002
#define DDADDBUFF_INVERT 0x0004
typedef struct _DDADDVPCAPTUREBUFF {
HANDLE hCapture;
DWORD dwFlags;
PMDL pMDL;
PKEVENT pKEvent;
LPDDCAPBUFFINFO lpBuffInfo;
} DDADDVPCAPTUREBUFF, FAR * LPDDADDVPCAPTUREBUFF;
typedef struct _DDCLOSEHANDLE {
HANDLE hHandle;
} DDCLOSEHANDLE, FAR *LPDDCLOSEHANDLE;
typedef struct _DDFLIPOVERLAY {
HANDLE hDirectDraw;
HANDLE hCurrentSurface;
HANDLE hTargetSurface;
DWORD dwFlags;
} DDFLIPOVERLAY, FAR *LPDDFLIPOVERLAY;
typedef struct _DDFLIPVIDEOPORT {
HANDLE hDirectDraw;
HANDLE hVideoPort;
HANDLE hCurrentSurface;
HANDLE hTargetSurface;
DWORD dwFlags;
} DDFLIPVIDEOPORT, FAR *LPDDFLIPVIDEOPORT;
typedef struct _DDGETAUTOFLIPIN {
HANDLE hDirectDraw;
HANDLE hVideoPort;
} DDGETAUTOFLIPIN, FAR *LPDDGETAUTOFLIPIN;
typedef struct _DDGETAUTOFLIPOUT {
DWORD ddRVal;
HANDLE hVideoSurface;
HANDLE hVBISurface;
BOOL bPolarity;
} DDGETAUTOFLIPOUT, FAR *LPDDGETAUTOFLIPOUT;
typedef struct _DDGETPOLARITYIN {
HANDLE hDirectDraw;
HANDLE hVideoPort;
} DDGETPOLARITYIN, FAR *LPDDGETPOLARITYIN;
typedef struct _DDGETPOLARITYOUT {
DWORD ddRVal;
BOOL bPolarity;
} DDGETPOLARITYOUT, FAR *LPDDGETPOLARITYOUT;
typedef struct _DDGETSURFACESTATEIN {
HANDLE hDirectDraw;
HANDLE hSurface;
} DDGETSURFACESTATEIN, FAR *LPDDGETSURFACESTATEIN;
/* DDGETSURFACESTATEOUT.dwStateCaps/dwStateStatus constants */
#define DDSTATE_BOB 0x0001
#define DDSTATE_WEAVE 0x0002
#define DDSTATE_EXPLICITLY_SET 0x0004
#define DDSTATE_SOFTWARE_AUTOFLIP 0x0008
#define DDSTATE_SKIPEVENFIELDS 0x0010
typedef struct _DDGETSURFACESTATEOUT {
DWORD ddRVal;
DWORD dwStateCaps;
DWORD dwStateStatus;
} DDGETSURFACESTATEOUT, FAR *LPDDGETSURFACESTATEOUT;
typedef struct _DDGETFIELDNUMIN {
HANDLE hDirectDraw;
HANDLE hVideoPort;
} DDGETFIELDNUMIN, FAR *LPDDGETFIELDNUMIN;
typedef struct _DDGETFIELDNUMOUT {
DWORD ddRVal;
DWORD dwFieldNum;
} DDGETFIELDNUMOUT, FAR *LPDDGETFIELDNUMOUT;
typedef struct _DDGETKERNELCAPSOUT {
DWORD ddRVal;
DWORD dwCaps;
DWORD dwIRQCaps;
} DDGETKERNELCAPSOUT, FAR *LPDDGETKERNELCAPSOUT;
typedef struct _DDGETVERSIONNUMBER {
DWORD ddRVal;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
} DDGETVERSIONNUMBER, FAR *LPDDGETVERSIONNUMBER;
typedef struct _DDLOCKIN {
HANDLE hDirectDraw;
HANDLE hSurface;
} DDLOCKIN, FAR *LPDDLOCKIN;
typedef struct _DDLOCKOUT {
DWORD ddRVal;
DWORD dwSurfHeight;
DWORD dwSurfWidth;
LONG lSurfPitch;
PVOID lpSurface;
DWORD SurfaceCaps;
DWORD dwFormatFlags;
DWORD dwFormatFourCC;
DWORD dwFormatBitCount;
union {
DWORD dwRBitMask;
DWORD dwYBitMask;
};
union {
DWORD dwGBitMask;
DWORD dwUBitMask;
};
union {
DWORD dwBBitMask;
DWORD dwVBitMask;
};
} DDLOCKOUT, FAR *LPDDLOCKOUT;
/* LPDD_NOTIFYCALLBACK.dwFlags constants */
#define DDNOTIFY_DISPLAY_VSYNC 0x0001
#define DDNOTIFY_VP_VSYNC 0x0002
#define DDNOTIFY_VP_LINE 0x0004
#define DDNOTIFY_PRERESCHANGE 0x0008
#define DDNOTIFY_POSTRESCHANGE 0x0010
#define DDNOTIFY_PREDOSBOX 0x0020
#define DDNOTIFY_POSTDOSBOX 0x0040
#define DDNOTIFY_CLOSEDIRECTDRAW 0x0080
#define DDNOTIFY_CLOSESURFACE 0x0100
#define DDNOTIFY_CLOSEVIDEOPORT 0x0200
#define DDNOTIFY_CLOSECAPTURE 0x0400
typedef ULONG (FAR PASCAL *LPDD_NOTIFYCALLBACK)(
DWORD dwFlags,
PVOID pContext,
DWORD dwParam1,
DWORD dwParam2);
typedef struct _DDOPENDIRECTDRAWIN {
ULONG_PTR dwDirectDrawHandle;
LPDD_NOTIFYCALLBACK pfnDirectDrawClose;
PVOID pContext;
} DDOPENDIRECTDRAWIN, FAR *LPDDOPENDIRECTDRAWIN;
typedef struct _DDOPENDIRECTDRAWOUT {
DWORD ddRVal;
HANDLE hDirectDraw;
} DDOPENDIRECTDRAWOUT, FAR *LPDDOPENDIRECTDRAWOUT;
typedef struct _DDOPENSURFACEIN {
HANDLE hDirectDraw;
ULONG_PTR dwSurfaceHandle;
LPDD_NOTIFYCALLBACK pfnSurfaceClose;
PVOID pContext;
} DDOPENSURFACEIN, FAR *LPDDOPENSURFACEIN;
typedef struct _DDOPENSURFACEOUT {
DWORD ddRVal;
HANDLE hSurface;
} DDOPENSURFACEOUT, FAR *LPDDOPENSURFACEOUT;
typedef struct _DDOPENVIDEOPORTIN {
HANDLE hDirectDraw;
ULONG dwVideoPortHandle;
LPDD_NOTIFYCALLBACK pfnVideoPortClose;
PVOID pContext;
} DDOPENVIDEOPORTIN, FAR *LPDDOPENVIDEOPORTIN;
typedef struct _DDOPENVIDEOPORTOUT {
DWORD ddRVal;
HANDLE hVideoPort;
} DDOPENVIDEOPORTOUT, FAR *LPDDOPENVIDEOPORTOUT;
/* DDOPENVPCAPTUREDEVICEIN.dwFlags constants */
#define DDOPENCAPTURE_VIDEO 0x0001
#define DDOPENCAPTURE_VBI 0x0002
typedef struct _DDOPENVPCAPTUREDEVICEIN {
HANDLE hDirectDraw;
HANDLE hVideoPort;
DWORD dwStartLine;
DWORD dwEndLine;
DWORD dwCaptureEveryNFields;
LPDD_NOTIFYCALLBACK pfnCaptureClose;
PVOID pContext;
DWORD dwFlags;
} DDOPENVPCAPTUREDEVICEIN, FAR * LPDDOPENVPCAPTUREDEVICEIN;
typedef struct _DDOPENVPCAPTUREDEVICEOUT {
DWORD ddRVal;
HANDLE hCapture;
} DDOPENVPCAPTUREDEVICEOUT, FAR * LPDDOPENVPCAPTUREDEVICEOUT;
/* DDREGISTERCALLBACK.dwEvents constants */
#define DDEVENT_DISPLAY_VSYNC 0x0001
#define DDEVENT_VP_VSYNC 0x0002
#define DDEVENT_VP_LINE 0x0004
#define DDEVENT_PRERESCHANGE 0x0008
#define DDEVENT_POSTRESCHANGE 0x0010
#define DDEVENT_PREDOSBOX 0x0020
#define DDEVENT_POSTDOSBOX 0x0040
typedef struct _DDREGISTERCALLBACK {
HANDLE hDirectDraw;
ULONG dwEvents;
LPDD_NOTIFYCALLBACK pfnCallback;
ULONG_PTR dwParam1;
ULONG_PTR dwParam2;
PVOID pContext;
} DDREGISTERCALLBACK, FAR *LPDDREGISTERCALLBACK;
typedef struct _DDSETSURFACETATE {
HANDLE hDirectDraw;
HANDLE hSurface;
DWORD dwState;
DWORD dwStartField;
} DDSETSURFACESTATE, FAR *LPDDSETSURFACESTATE;
typedef struct _DDSETFIELDNUM {
HANDLE hDirectDraw;
HANDLE hVideoPort;
DWORD dwFieldNum;
} DDSETFIELDNUM, FAR *LPDDSETFIELDNUM;
typedef struct _DDSETSKIPFIELD {
HANDLE hDirectDraw;
HANDLE hVideoPort;
DWORD dwStartField;
} DDSETSKIPFIELD, FAR *LPDDSETSKIPFIELD;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __DDKMAPI_H */

View File

@ -0,0 +1,151 @@
/*
* hidclass.h
*
* HID class driver interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __HIDCLASS_H
#define __HIDCLASS_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "hidpi.h"
#define HID_REVISION 0x00000001
DEFINE_GUID (GUID_DEVINTERFACE_HID, \
0x4D1E55B2L, 0xF16F, 0x11CF, 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30);
DEFINE_GUID (GUID_HID_INTERFACE_NOTIFY, \
0x2c4e2e88L, 0x25e6, 0x4c33, 0x88, 0x2f, 0x3d, 0x82, 0xe6, 0x07, 0x36, 0x81);
DEFINE_GUID (GUID_HID_INTERFACE_HIDPARSE, \
0xf5c315a5, 0x69ac, 0x4bc2, 0x92, 0x79, 0xd0, 0xb6, 0x45, 0x76, 0xf4, 0x4b);
#define GUID_CLASS_INPUT GUID_DEVINTERFACE_HID
#define GUID_CLASS_INPUT_STR "4D1E55B2-F16F-11CF-88CB-001111000030"
#define HID_CTL_CODE(id) \
CTL_CODE (FILE_DEVICE_KEYBOARD, (id), METHOD_NEITHER, FILE_ANY_ACCESS)
#define HID_BUFFER_CTL_CODE(id) \
CTL_CODE (FILE_DEVICE_KEYBOARD, (id), METHOD_BUFFERED, FILE_ANY_ACCESS)
#define HID_IN_CTL_CODE(id) \
CTL_CODE (FILE_DEVICE_KEYBOARD, (id), METHOD_IN_DIRECT, FILE_ANY_ACCESS)
#define HID_OUT_CTL_CODE(id) \
CTL_CODE (FILE_DEVICE_KEYBOARD, (id), METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
#define IOCTL_GET_PHYSICAL_DESCRIPTOR HID_OUT_CTL_CODE(102)
#define IOCTL_HID_FLUSH_QUEUE HID_CTL_CODE(101)
#define IOCTL_HID_GET_COLLECTION_DESCRIPTOR HID_CTL_CODE(100)
#define IOCTL_HID_GET_COLLECTION_INFORMATION HID_BUFFER_CTL_CODE(106)
#define IOCTL_HID_GET_FEATURE HID_OUT_CTL_CODE(100)
#define IOCTL_HID_GET_HARDWARE_ID HID_OUT_CTL_CODE(103)
#define IOCTL_HID_GET_INDEXED_STRING HID_OUT_CTL_CODE(120)
#define IOCTL_HID_GET_INPUT_REPORT HID_OUT_CTL_CODE(104)
#define IOCTL_HID_GET_MANUFACTURER_STRING HID_OUT_CTL_CODE(110)
#define IOCTL_GET_NUM_DEVICE_INPUT_BUFFERS HID_BUFFER_CTL_CODE(104)
#define IOCTL_HID_GET_POLL_FREQUENCY_MSEC HID_BUFFER_CTL_CODE(102)
#define IOCTL_HID_GET_PRODUCT_STRING HID_OUT_CTL_CODE(111)
#define IOCTL_HID_GET_SERIALNUMBER_STRING HID_OUT_CTL_CODE(112)
#define IOCTL_HID_SET_FEATURE HID_IN_CTL_CODE(100)
#define IOCTL_SET_NUM_DEVICE_INPUT_BUFFERS HID_BUFFER_CTL_CODE(105)
#define IOCTL_HID_SET_OUTPUT_REPORT HID_IN_CTL_CODE(101)
#define IOCTL_HID_SET_POLL_FREQUENCY_MSEC HID_BUFFER_CTL_CODE(103)
#define IOCTL_HID_GET_DRIVER_CONFIG HID_BUFFER_CTL_CODE(100)
#define IOCTL_HID_SET_DRIVER_CONFIG HID_BUFFER_CTL_CODE(101)
#define IOCTL_HID_GET_MS_GENRE_DESCRIPTOR HID_OUT_CTL_CODE(121)
enum DeviceObjectState {
DeviceObjectStarted = 0,
DeviceObjectStopped,
DeviceObjectRemoved
};
typedef VOID DDKAPI (*PHID_STATUS_CHANGE)(
PVOID Context,
enum DeviceObjectState State);
typedef NTSTATUS DDKAPI (*PHIDP_GETCAPS)(
IN PHIDP_PREPARSED_DATA PreparsedData,
OUT PHIDP_CAPS Capabilities);
typedef struct _HID_COLLECTION_INFORMATION {
ULONG DescriptorSize;
BOOLEAN Polled;
UCHAR Reserved1[1];
USHORT VendorID;
USHORT ProductID;
USHORT VersionNumber;
} HID_COLLECTION_INFORMATION, *PHID_COLLECTION_INFORMATION;
typedef struct _HID_DRIVER_CONFIG {
ULONG Size;
ULONG RingBufferSize;
} HID_DRIVER_CONFIG, *PHID_DRIVER_CONFIG;
typedef struct _HID_INTERFACE_HIDPARSE {
#if 0
/* FIXME: COM stuff */
#ifdef __cplusplus
INTERFACE i;
#else
INTERFACE;
#endif
#endif
PHIDP_GETCAPS HidpGetCaps;
} HID_INTERFACE_HIDPARSE, *PHID_INTERFACE_HIDPARSE;
typedef struct _HID_INTERFACE_NOTIFY_PNP {
#if 0
/* FIXME: COM stuff */
#ifdef __cplusplus
INTERFACE i;
#else
INTERFACE;
#endif
#endif
PHID_STATUS_CHANGE StatusChangeFn;
PVOID CallbackContext;
} HID_INTERFACE_NOTIFY_PNP, *PHID_INTERFACE_NOTIFY_PNP;
typedef struct _HID_XFER_PACKET {
PUCHAR reportBuffer;
ULONG reportBufferLen;
UCHAR reportId;
} HID_XFER_PACKET, *PHID_XFER_PACKET;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __HIDCLASS_H */

View File

@ -0,0 +1,608 @@
/*
* hidpi.h
*
* Public Interface for HID parsing library.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __HIDPI_H
#define __HIDPI_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "hidusage.h"
#if defined(_HIDPI_)
#define HIDAPI DECLSPEC_EXPORT
#else
#define HIDAPI DECLSPEC_IMPORT
#endif
typedef PUCHAR PHIDP_REPORT_DESCRIPTOR;
typedef struct _HIDP_PREPARSED_DATA * PHIDP_PREPARSED_DATA;
typedef struct _HIDP_UNKNOWN_TOKEN {
UCHAR Token;
UCHAR Reserved[3];
ULONG BitField;
} HIDP_UNKNOWN_TOKEN, *PHIDP_UNKNOWN_TOKEN;
typedef enum _HIDP_KEYBOARD_DIRECTION {
HidP_Keyboard_Break,
HidP_Keyboard_Make
} HIDP_KEYBOARD_DIRECTION;
typedef struct _HIDP_KEYBOARD_MODIFIER_STATE {
union {
struct {
ULONG LeftControl : 1;
ULONG LeftShift : 1;
ULONG LeftAlt : 1;
ULONG LeftGUI : 1;
ULONG RightControl : 1;
ULONG RightShift : 1;
ULONG RightAlt : 1;
ULONG RigthGUI : 1;
ULONG CapsLock : 1;
ULONG ScollLock : 1;
ULONG NumLock : 1;
ULONG Reserved : 21;
};
ULONG ul;
};
} HIDP_KEYBOARD_MODIFIER_STATE, *PHIDP_KEYBOARD_MODIFIER_STATE;
typedef BOOLEAN (DDKAPI *PHIDP_INSERT_SCANCODES)(
IN PVOID Context,
IN PCHAR NewScanCodes,
IN ULONG Length);
typedef struct _USAGE_AND_PAGE {
USAGE Usage;
USAGE UsagePage;
} USAGE_AND_PAGE, *PUSAGE_AND_PAGE;
HIDAPI
NTSTATUS
DDKAPI
HidP_TranslateUsageAndPagesToI8042ScanCodes(
IN PUSAGE_AND_PAGE ChangedUsageList,
IN ULONG UsageListLength,
IN HIDP_KEYBOARD_DIRECTION KeyAction,
IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
IN PHIDP_INSERT_SCANCODES InsertCodesProcedure,
IN PVOID InsertCodesContext);
HIDAPI
NTSTATUS
DDKAPI
HidP_TranslateUsagesToI8042ScanCodes(
IN PUSAGE ChangedUsageList,
IN ULONG UsageListLength,
IN HIDP_KEYBOARD_DIRECTION KeyAction,
IN OUT PHIDP_KEYBOARD_MODIFIER_STATE ModifierState,
IN PHIDP_INSERT_SCANCODES InsertCodesProcedure,
IN PVOID InsertCodesContext);
typedef struct _HIDP_BUTTON_CAPS {
USAGE UsagePage;
UCHAR ReportID;
BOOLEAN IsAlias;
USHORT BitField;
USHORT LinkCollection;
USAGE LinkUsage;
USAGE LinkUsagePage;
BOOLEAN IsRange;
BOOLEAN IsStringRange;
BOOLEAN IsDesignatorRange;
BOOLEAN IsAbsolute;
ULONG Reserved[10];
union {
struct {
USAGE UsageMin, UsageMax;
USHORT StringMin, StringMax;
USHORT DesignatorMin, DesignatorMax;
USHORT DataIndexMin, DataIndexMax;
} Range;
struct {
USAGE Usage, Reserved1;
USHORT StringIndex, Reserved2;
USHORT DesignatorIndex, Reserved3;
USHORT DataIndex, Reserved4;
} NotRange;
};
} HIDP_BUTTON_CAPS, *PHIDP_BUTTON_CAPS;
typedef struct _HIDP_CAPS {
USAGE Usage;
USAGE UsagePage;
USHORT InputReportByteLength;
USHORT OutputReportByteLength;
USHORT FeatureReportByteLength;
USHORT Reserved[17];
USHORT NumberLinkCollectionNodes;
USHORT NumberInputButtonCaps;
USHORT NumberInputValueCaps;
USHORT NumberInputDataIndices;
USHORT NumberOutputButtonCaps;
USHORT NumberOutputValueCaps;
USHORT NumberOutputDataIndices;
USHORT NumberFeatureButtonCaps;
USHORT NumberFeatureValueCaps;
USHORT NumberFeatureDataIndices;
} HIDP_CAPS, *PHIDP_CAPS;
typedef struct _HIDP_DATA {
USHORT DataIndex;
USHORT Reserved;
union {
ULONG RawValue;
BOOLEAN On;
};
} HIDP_DATA, *PHIDP_DATA;
typedef struct _HIDP_EXTENDED_ATTRIBUTES {
UCHAR NumGlobalUnknowns;
UCHAR Reserved[3];
PHIDP_UNKNOWN_TOKEN GlobalUnknowns;
ULONG Data[1];
} HIDP_EXTENDED_ATTRIBUTES, *PHIDP_EXTENDED_ATTRIBUTES;
#define HIDP_LINK_COLLECTION_ROOT ((USHORT) -1)
#define HIDP_LINK_COLLECTION_UNSPECIFIED ((USHORT) 0)
typedef struct _HIDP_LINK_COLLECTION_NODE {
USAGE LinkUsage;
USAGE LinkUsagePage;
USHORT Parent;
USHORT NumberOfChildren;
USHORT NextSibling;
USHORT FirstChild;
ULONG CollectionType: 8;
ULONG IsAlias: 1;
ULONG Reserved: 23;
PVOID UserContext;
} HIDP_LINK_COLLECTION_NODE, *PHIDP_LINK_COLLECTION_NODE;
typedef struct _HIDP_VALUE_CAPS {
USAGE UsagePage;
UCHAR ReportID;
BOOLEAN IsAlias;
USHORT BitField;
USHORT LinkCollection;
USAGE LinkUsage;
USAGE LinkUsagePage;
BOOLEAN IsRange;
BOOLEAN IsStringRange;
BOOLEAN IsDesignatorRange;
BOOLEAN IsAbsolute;
BOOLEAN HasNull;
UCHAR Reserved;
USHORT BitSize;
USHORT ReportCount;
USHORT Reserved2[5];
ULONG UnitsExp;
ULONG Units;
LONG LogicalMin, LogicalMax;
LONG PhysicalMin, PhysicalMax;
union {
struct {
USAGE UsageMin, UsageMax;
USHORT StringMin, StringMax;
USHORT DesignatorMin, DesignatorMax;
USHORT DataIndexMin, DataIndexMax;
} Range;
struct {
USAGE Usage, Reserved1;
USHORT StringIndex, Reserved2;
USHORT DesignatorIndex, Reserved3;
USHORT DataIndex, Reserved4;
} NotRange;
};
} HIDP_VALUE_CAPS, *PHIDP_VALUE_CAPS;
typedef enum _HIDP_REPORT_TYPE {
HidP_Input,
HidP_Output,
HidP_Feature
} HIDP_REPORT_TYPE;
#define FACILITY_HID_ERROR_CODE 0x11
#define HIDP_ERROR_CODES(SEV, CODE) \
((NTSTATUS) (((SEV) << 28) | (FACILITY_HID_ERROR_CODE << 16) | (CODE)))
#define HIDP_STATUS_SUCCESS (HIDP_ERROR_CODES(0x0, 0))
#define HIDP_STATUS_NULL (HIDP_ERROR_CODES(0x8, 1))
#define HIDP_STATUS_INVALID_PREPARSED_DATA (HIDP_ERROR_CODES(0xC, 1))
#define HIDP_STATUS_INVALID_REPORT_TYPE (HIDP_ERROR_CODES(0xC, 2))
#define HIDP_STATUS_INVALID_REPORT_LENGTH (HIDP_ERROR_CODES(0xC, 3))
#define HIDP_STATUS_USAGE_NOT_FOUND (HIDP_ERROR_CODES(0xC, 4))
#define HIDP_STATUS_VALUE_OUT_OF_RANGE (HIDP_ERROR_CODES(0xC, 5))
#define HIDP_STATUS_BAD_LOG_PHY_VALUES (HIDP_ERROR_CODES(0xC, 6))
#define HIDP_STATUS_BUFFER_TOO_SMALL (HIDP_ERROR_CODES(0xC, 7))
#define HIDP_STATUS_INTERNAL_ERROR (HIDP_ERROR_CODES(0xC, 8))
#define HIDP_STATUS_I8042_TRANS_UNKNOWN (HIDP_ERROR_CODES(0xC, 9))
#define HIDP_STATUS_INCOMPATIBLE_REPORT_ID (HIDP_ERROR_CODES(0xC, 0xA))
#define HIDP_STATUS_NOT_VALUE_ARRAY (HIDP_ERROR_CODES(0xC, 0xB))
#define HIDP_STATUS_IS_VALUE_ARRAY (HIDP_ERROR_CODES(0xC, 0xC))
#define HIDP_STATUS_DATA_INDEX_NOT_FOUND (HIDP_ERROR_CODES(0xC, 0xD))
#define HIDP_STATUS_DATA_INDEX_OUT_OF_RANGE (HIDP_ERROR_CODES(0xC, 0xE))
#define HIDP_STATUS_BUTTON_NOT_PRESSED (HIDP_ERROR_CODES(0xC, 0xF))
#define HIDP_STATUS_REPORT_DOES_NOT_EXIST (HIDP_ERROR_CODES(0xC, 0x10))
#define HIDP_STATUS_NOT_IMPLEMENTED (HIDP_ERROR_CODES(0xC, 0x20))
#define HIDP_STATUS_I8242_TRANS_UNKNOWN HIDP_STATUS_I8042_TRANS_UNKNOWN
/*
* NTSTATUS
* HidP_GetButtonCaps(
* IN HIDP_REPORT_TYPE ReportType,
* OUT PHIDP_BUTTON_CAPS ButtonCaps,
* IN OUT PULONG ButtonCapsLength,
* IN PHIDP_PREPARSED_DATA PreparsedData);
*/
#define HidP_GetButtonCaps(_Type_, _Caps_, _Len_, _Data_) \
HidP_GetSpecificButtonCaps(_Type_, 0, 0, 0, _Caps_, _Len_, _Data_)
/*
* NTSTATUS
* HidP_GetButtons(
* IN HIDP_REPORT_TYPE ReportType,
* IN USAGE UsagePage,
* IN USHORT LinkCollection,
* OUT USAGE *UsageList,
* IN OUT ULONG *UsageLength,
* IN PHIDP_PREPARSED_DATA PreparsedData,
* IN PCHAR Report,
* IN ULONG ReportLength);
*/
#define HidP_GetButtons(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe) \
HidP_GetUsages(Rty, UPa, LCo, ULi, ULe, Ppd, Rep, RLe)
#define HidP_GetButtonListLength(RTy, UPa, Ppd) \
HidP_GetUsageListLength(Rty, UPa, Ppd)
/*
* NTSTATUS
* HidP_GetButtonsEx(
* IN HIDP_REPORT_TYPE ReportType,
* IN USHORT LinkCollection,
* OUT PUSAGE_AND_PAGE ButtonList,
* IN OUT ULONG *UsageLength,
* IN PHIDP_PREPARSED_DATA PreparsedData,
* IN PCHAR Report,
* IN ULONG ReportLength);
*/
#define HidP_GetButtonsEx(RT, LC, BL, UL, PD, R, RL) \
HidP_GetUsagesEx(RT, LC, BL, UL, PD, R, RL)
HIDAPI
NTSTATUS
DDKAPI
HidP_GetCaps(
IN PHIDP_PREPARSED_DATA PreparsedData,
OUT PHIDP_CAPS Capabilities);
HIDAPI
NTSTATUS
DDKAPI
HidP_GetData(
IN HIDP_REPORT_TYPE ReportType,
OUT PHIDP_DATA DataList,
IN OUT PULONG DataLength,
IN PHIDP_PREPARSED_DATA PreparsedData,
IN PCHAR Report,
IN ULONG ReportLength);
HIDAPI
NTSTATUS
DDKAPI
HidP_GetExtendedAttributes(
IN HIDP_REPORT_TYPE ReportType,
IN USHORT DataIndex,
IN PHIDP_PREPARSED_DATA PreparsedData,
OUT PHIDP_EXTENDED_ATTRIBUTES Attributes,
IN OUT PULONG LengthAttributes);
HIDAPI
NTSTATUS
DDKAPI
HidP_GetLinkCollectionNodes(
OUT PHIDP_LINK_COLLECTION_NODE LinkCollectionNodes,
IN OUT PULONG LinkCollectionNodesLength,
IN PHIDP_PREPARSED_DATA PreparsedData);
HIDAPI
NTSTATUS
DDKAPI
HidP_GetScaledUsageValue(
IN HIDP_REPORT_TYPE ReportType,
IN USAGE UsagePage,
IN USHORT LinkCollection OPTIONAL,
IN USAGE Usage,
OUT PLONG UsageValue,
IN PHIDP_PREPARSED_DATA PreparsedData,
IN PCHAR Report,
IN ULONG ReportLength);
HIDAPI
NTSTATUS
DDKAPI
HidP_GetSpecificButtonCaps(
IN HIDP_REPORT_TYPE ReportType,
IN USAGE UsagePage,
IN USHORT LinkCollection,
IN USAGE Usage,
OUT PHIDP_BUTTON_CAPS ButtonCaps,
IN OUT PULONG ButtonCapsLength,
IN PHIDP_PREPARSED_DATA PreparsedData);
HIDAPI
NTSTATUS
DDKAPI
HidP_GetSpecificValueCaps(
IN HIDP_REPORT_TYPE ReportType,
IN USAGE UsagePage,
IN USHORT LinkCollection,
IN USAGE Usage,
OUT PHIDP_VALUE_CAPS ValueCaps,
IN OUT PULONG ValueCapsLength,
IN PHIDP_PREPARSED_DATA PreparsedData);
HIDAPI
NTSTATUS
DDKAPI
HidP_GetUsages(
IN HIDP_REPORT_TYPE ReportType,
IN USAGE UsagePage,
IN USHORT LinkCollection OPTIONAL,
OUT USAGE *UsageList,
IN OUT ULONG *UsageLength,
IN PHIDP_PREPARSED_DATA PreparsedData,
IN PCHAR Report,
IN ULONG ReportLength);
HIDAPI
NTSTATUS
DDKAPI
HidP_GetUsagesEx(
IN HIDP_REPORT_TYPE ReportType,
IN USHORT LinkCollection,
OUT PUSAGE_AND_PAGE ButtonList,
IN OUT ULONG *UsageLength,
IN PHIDP_PREPARSED_DATA PreparsedData,
IN PCHAR Report,
IN ULONG ReportLength);
HIDAPI
NTSTATUS
DDKAPI
HidP_GetUsageValue(
IN HIDP_REPORT_TYPE ReportType,
IN USAGE UsagePage,
IN USHORT LinkCollection,
IN USAGE Usage,
OUT PULONG UsageValue,
IN PHIDP_PREPARSED_DATA PreparsedData,
IN PCHAR Report,
IN ULONG ReportLength);
HIDAPI
NTSTATUS
DDKAPI
HidP_GetUsageValueArray(
IN HIDP_REPORT_TYPE ReportType,
IN USAGE UsagePage,
IN USHORT LinkCollection OPTIONAL,
IN USAGE Usage,
OUT PCHAR UsageValue,
IN USHORT UsageValueByteLength,
IN PHIDP_PREPARSED_DATA PreparsedData,
IN PCHAR Report,
IN ULONG ReportLength);
/*
* NTSTATUS
* HidP_GetValueCaps(
* IN HIDP_REPORT_TYPE ReportType,
* OUT PHIDP_VALUE_CAPS ValueCaps,
* IN OUT PULONG ValueCapsLength,
* IN PHIDP_PREPARSED_DATA PreparsedData);
*/
#define HidP_GetValueCaps(_Type_, _Caps_, _Len_, _Data_) \
HidP_GetSpecificValueCaps (_Type_, 0, 0, 0, _Caps_, _Len_, _Data_)
HIDAPI
NTSTATUS
DDKAPI
HidP_InitializeReportForID(
IN HIDP_REPORT_TYPE ReportType,
IN UCHAR ReportID,
IN PHIDP_PREPARSED_DATA PreparsedData,
IN OUT PCHAR Report,
IN ULONG ReportLength);
/*
* BOOLEAN
* HidP_IsSameUsageAndPage(
* USAGE_AND_PAGE u1,
* USAGE_AND_PAGE u2);
*/
#define HidP_IsSameUsageAndPage(u1, u2) ((* (PULONG) &u1) == (* (PULONG) &u2))
HIDAPI
ULONG
DDKAPI
HidP_MaxDataListLength(
IN HIDP_REPORT_TYPE ReportType,
IN PHIDP_PREPARSED_DATA PreparsedData);
HIDAPI
ULONG
DDKAPI
HidP_MaxUsageListLength(
IN HIDP_REPORT_TYPE ReportType,
IN USAGE UsagePage OPTIONAL,
IN PHIDP_PREPARSED_DATA PreparsedData);
/*
* NTSTATUS
* HidP_SetButtons(
* IN HIDP_REPORT_TYPE ReportType,
* IN USAGE UsagePage,
* IN USHORT LinkCollection,
* IN PUSAGE UsageList,
* IN OUT PULONG UsageLength,
* IN PHIDP_PREPARSED_DATA PreparsedData,
* IN OUT PCHAR Report,
* IN ULONG ReportLength);
*/
#define HidP_SetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
HidP_SetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)
HIDAPI
NTSTATUS
DDKAPI
HidP_SetData(
IN HIDP_REPORT_TYPE ReportType,
IN PHIDP_DATA DataList,
IN OUT PULONG DataLength,
IN PHIDP_PREPARSED_DATA PreparsedData,
IN OUT PCHAR Report,
IN ULONG ReportLength);
HIDAPI
NTSTATUS
DDKAPI
HidP_SetScaledUsageValue(
IN HIDP_REPORT_TYPE ReportType,
IN USAGE UsagePage,
IN USHORT LinkCollection OPTIONAL,
IN USAGE Usage,
IN LONG UsageValue,
IN PHIDP_PREPARSED_DATA PreparsedData,
IN OUT PCHAR Report,
IN ULONG ReportLength);
HIDAPI
NTSTATUS
DDKAPI
HidP_SetUsages(
IN HIDP_REPORT_TYPE ReportType,
IN USAGE UsagePage,
IN USHORT LinkCollection, // Optional
IN PUSAGE UsageList,
IN OUT PULONG UsageLength,
IN PHIDP_PREPARSED_DATA PreparsedData,
IN OUT PCHAR Report,
IN ULONG ReportLength);
HIDAPI
NTSTATUS
DDKAPI
HidP_SetUsageValue(
IN HIDP_REPORT_TYPE ReportType,
IN USAGE UsagePage,
IN USHORT LinkCollection,
IN USAGE Usage,
IN ULONG UsageValue,
IN PHIDP_PREPARSED_DATA PreparsedData,
IN OUT PCHAR Report,
IN ULONG ReportLength);
HIDAPI
NTSTATUS
DDKAPI
HidP_SetUsageValueArray(
IN HIDP_REPORT_TYPE ReportType,
IN USAGE UsagePage,
IN USHORT LinkCollection OPTIONAL,
IN USAGE Usage,
IN PCHAR UsageValue,
IN USHORT UsageValueByteLength,
IN PHIDP_PREPARSED_DATA PreparsedData,
OUT PCHAR Report,
IN ULONG ReportLength);
/*
* NTSTATUS
* HidP_UnsetButtons(
* IN HIDP_REPORT_TYPE ReportType,
* IN USAGE UsagePage,
* IN USHORT LinkCollection,
* IN PUSAGE UsageList,
* IN OUT PULONG UsageLength,
* IN PHIDP_PREPARSED_DATA PreparsedData,
* IN OUT PCHAR Report,
* IN ULONG ReportLength);
*/
#define HidP_UnsetButtons(RT, UP, LC, UL1, UL2, PD, R, RL) \
HidP_UnsetUsages(RT, UP, LC, UL1, UL2, PD, R, RL)
HIDAPI
NTSTATUS
DDKAPI
HidP_UnsetUsages(
IN HIDP_REPORT_TYPE ReportType,
IN USAGE UsagePage,
IN USHORT LinkCollection,
IN PUSAGE UsageList,
IN OUT PULONG UsageLength,
IN PHIDP_PREPARSED_DATA PreparsedData,
IN OUT PCHAR Report,
IN ULONG ReportLength);
HIDAPI
NTSTATUS
DDKAPI
HidP_UsageAndPageListDifference(
IN PUSAGE_AND_PAGE PreviousUsageList,
IN PUSAGE_AND_PAGE CurrentUsageList,
OUT PUSAGE_AND_PAGE BreakUsageList,
OUT PUSAGE_AND_PAGE MakeUsageList,
IN ULONG UsageListLength);
HIDAPI
NTSTATUS
DDKAPI
HidP_UsageListDifference(
IN PUSAGE PreviousUsageList,
IN PUSAGE CurrentUsageList,
OUT PUSAGE BreakUsageList,
OUT PUSAGE MakeUsageList,
IN ULONG UsageListLength);
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __HIDPI_H */

View File

@ -0,0 +1,214 @@
/*
* hidusage.h
*
* HID usages
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __HIDUSAGE_H
#define __HIDUSAGE_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
typedef USHORT USAGE, *PUSAGE;
#define HID_USAGE_GENERIC_POINTER ((USAGE) 0x01)
#define HID_USAGE_GENERIC_MOUSE ((USAGE) 0x02)
#define HID_USAGE_GENERIC_JOYSTICK ((USAGE) 0x04)
#define HID_USAGE_GENERIC_GAMEPAD ((USAGE) 0x05)
#define HID_USAGE_GENERIC_KEYBOARD ((USAGE) 0x06)
#define HID_USAGE_GENERIC_KEYPAD ((USAGE) 0x07)
#define HID_USAGE_GENERIC_SYSTEM_CTL ((USAGE) 0x80)
#define HID_USAGE_GENERIC_X ((USAGE) 0x30)
#define HID_USAGE_GENERIC_Y ((USAGE) 0x31)
#define HID_USAGE_GENERIC_Z ((USAGE) 0x32)
#define HID_USAGE_GENERIC_RX ((USAGE) 0x33)
#define HID_USAGE_GENERIC_RY ((USAGE) 0x34)
#define HID_USAGE_GENERIC_RZ ((USAGE) 0x35)
#define HID_USAGE_GENERIC_SLIDER ((USAGE) 0x36)
#define HID_USAGE_GENERIC_DIAL ((USAGE) 0x37)
#define HID_USAGE_GENERIC_WHEEL ((USAGE) 0x38)
#define HID_USAGE_GENERIC_HATSWITCH ((USAGE) 0x39)
#define HID_USAGE_GENERIC_COUNTED_BUFFER ((USAGE) 0x3A)
#define HID_USAGE_GENERIC_BYTE_COUNT ((USAGE) 0x3B)
#define HID_USAGE_GENERIC_MOTION_WAKEUP ((USAGE) 0x3C)
#define HID_USAGE_GENERIC_VX ((USAGE) 0x40)
#define HID_USAGE_GENERIC_VY ((USAGE) 0x41)
#define HID_USAGE_GENERIC_VZ ((USAGE) 0x42)
#define HID_USAGE_GENERIC_VBRX ((USAGE) 0x43)
#define HID_USAGE_GENERIC_VBRY ((USAGE) 0x44)
#define HID_USAGE_GENERIC_VBRZ ((USAGE) 0x45)
#define HID_USAGE_GENERIC_VNO ((USAGE) 0x46)
#define HID_USAGE_GENERIC_SYSCTL_POWER ((USAGE) 0x81)
#define HID_USAGE_GENERIC_SYSCTL_SLEEP ((USAGE) 0x82)
#define HID_USAGE_GENERIC_SYSCTL_WAKE ((USAGE) 0x83)
#define HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU ((USAGE) 0x84)
#define HID_USAGE_GENERIC_SYSCTL_MAIN_MENU ((USAGE) 0x85)
#define HID_USAGE_GENERIC_SYSCTL_APP_MENU ((USAGE) 0x86)
#define HID_USAGE_GENERIC_SYSCTL_HELP_MENU ((USAGE) 0x87)
#define HID_USAGE_GENERIC_SYSCTL_MENU_EXIT ((USAGE) 0x88)
#define HID_USAGE_GENERIC_SYSCTL_MENU_SELECT ((USAGE) 0x89)
#define HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT ((USAGE) 0x8A)
#define HID_USAGE_GENERIC_SYSCTL_MENU_LEFT ((USAGE) 0x8B)
#define HID_USAGE_GENERIC_SYSCTL_MENU_UP ((USAGE) 0x8C)
#define HID_USAGE_GENERIC_SYSCTL_MENU_DOWN ((USAGE) 0x8D)
#define HID_USAGE_KEYBOARD_NOEVENT ((USAGE) 0x00)
#define HID_USAGE_KEYBOARD_ROLLOVER ((USAGE) 0x01)
#define HID_USAGE_KEYBOARD_POSTFAIL ((USAGE) 0x02)
#define HID_USAGE_KEYBOARD_UNDEFINED ((USAGE) 0x03)
#define HID_USAGE_KEYBOARD_aA ((USAGE) 0x04)
#define HID_USAGE_KEYBOARD_zZ ((USAGE) 0x1D)
#define HID_USAGE_KEYBOARD_ONE ((USAGE) 0x1E)
#define HID_USAGE_KEYBOARD_ZERO ((USAGE) 0x27)
#define HID_USAGE_KEYBOARD_LCTRL ((USAGE) 0xE0)
#define HID_USAGE_KEYBOARD_LSHFT ((USAGE) 0xE1)
#define HID_USAGE_KEYBOARD_LALT ((USAGE) 0xE2)
#define HID_USAGE_KEYBOARD_LGUI ((USAGE) 0xE3)
#define HID_USAGE_KEYBOARD_RCTRL ((USAGE) 0xE4)
#define HID_USAGE_KEYBOARD_RSHFT ((USAGE) 0xE5)
#define HID_USAGE_KEYBOARD_RALT ((USAGE) 0xE6)
#define HID_USAGE_KEYBOARD_RGUI ((USAGE) 0xE7)
#define HID_USAGE_KEYBOARD_SCROLL_LOCK ((USAGE) 0x47)
#define HID_USAGE_KEYBOARD_NUM_LOCK ((USAGE) 0x53)
#define HID_USAGE_KEYBOARD_CAPS_LOCK ((USAGE) 0x39)
#define HID_USAGE_KEYBOARD_F1 ((USAGE) 0x3A)
#define HID_USAGE_KEYBOARD_F12 ((USAGE) 0x45)
#define HID_USAGE_KEYBOARD_RETURN ((USAGE) 0x28)
#define HID_USAGE_KEYBOARD_ESCAPE ((USAGE) 0x29)
#define HID_USAGE_KEYBOARD_DELETE ((USAGE) 0x2A)
#define HID_USAGE_KEYBOARD_PRINT_SCREEN ((USAGE) 0x46)
#define HID_USAGE_LED_NUM_LOCK ((USAGE) 0x01)
#define HID_USAGE_LED_CAPS_LOCK ((USAGE) 0x02)
#define HID_USAGE_LED_SCROLL_LOCK ((USAGE) 0x03)
#define HID_USAGE_LED_COMPOSE ((USAGE) 0x04)
#define HID_USAGE_LED_KANA ((USAGE) 0x05)
#define HID_USAGE_LED_POWER ((USAGE) 0x06)
#define HID_USAGE_LED_SHIFT ((USAGE) 0x07)
#define HID_USAGE_LED_DO_NOT_DISTURB ((USAGE) 0x08)
#define HID_USAGE_LED_MUTE ((USAGE) 0x09)
#define HID_USAGE_LED_TONE_ENABLE ((USAGE) 0x0A)
#define HID_USAGE_LED_HIGH_CUT_FILTER ((USAGE) 0x0B)
#define HID_USAGE_LED_LOW_CUT_FILTER ((USAGE) 0x0C)
#define HID_USAGE_LED_EQUALIZER_ENABLE ((USAGE) 0x0D)
#define HID_USAGE_LED_SOUND_FIELD_ON ((USAGE) 0x0E)
#define HID_USAGE_LED_SURROUND_FIELD_ON ((USAGE) 0x0F)
#define HID_USAGE_LED_REPEAT ((USAGE) 0x10)
#define HID_USAGE_LED_STEREO ((USAGE) 0x11)
#define HID_USAGE_LED_SAMPLING_RATE_DETECT ((USAGE) 0x12)
#define HID_USAGE_LED_SPINNING ((USAGE) 0x13)
#define HID_USAGE_LED_CAV ((USAGE) 0x14)
#define HID_USAGE_LED_CLV ((USAGE) 0x15)
#define HID_USAGE_LED_RECORDING_FORMAT_DET ((USAGE) 0x16)
#define HID_USAGE_LED_OFF_HOOK ((USAGE) 0x17)
#define HID_USAGE_LED_RING ((USAGE) 0x18)
#define HID_USAGE_LED_MESSAGE_WAITING ((USAGE) 0x19)
#define HID_USAGE_LED_DATA_MODE ((USAGE) 0x1A)
#define HID_USAGE_LED_BATTERY_OPERATION ((USAGE) 0x1B)
#define HID_USAGE_LED_BATTERY_OK ((USAGE) 0x1C)
#define HID_USAGE_LED_BATTERY_LOW ((USAGE) 0x1D)
#define HID_USAGE_LED_SPEAKER ((USAGE) 0x1E)
#define HID_USAGE_LED_HEAD_SET ((USAGE) 0x1F)
#define HID_USAGE_LED_HOLD ((USAGE) 0x20)
#define HID_USAGE_LED_MICROPHONE ((USAGE) 0x21)
#define HID_USAGE_LED_COVERAGE ((USAGE) 0x22)
#define HID_USAGE_LED_NIGHT_MODE ((USAGE) 0x23)
#define HID_USAGE_LED_SEND_CALLS ((USAGE) 0x24)
#define HID_USAGE_LED_CALL_PICKUP ((USAGE) 0x25)
#define HID_USAGE_LED_CONFERENCE ((USAGE) 0x26)
#define HID_USAGE_LED_STAND_BY ((USAGE) 0x27)
#define HID_USAGE_LED_CAMERA_ON ((USAGE) 0x28)
#define HID_USAGE_LED_CAMERA_OFF ((USAGE) 0x29)
#define HID_USAGE_LED_ON_LINE ((USAGE) 0x2A)
#define HID_USAGE_LED_OFF_LINE ((USAGE) 0x2B)
#define HID_USAGE_LED_BUSY ((USAGE) 0x2C)
#define HID_USAGE_LED_READY ((USAGE) 0x2D)
#define HID_USAGE_LED_PAPER_OUT ((USAGE) 0x2E)
#define HID_USAGE_LED_PAPER_JAM ((USAGE) 0x2F)
#define HID_USAGE_LED_REMOTE ((USAGE) 0x30)
#define HID_USAGE_LED_FORWARD ((USAGE) 0x31)
#define HID_USAGE_LED_REVERSE ((USAGE) 0x32)
#define HID_USAGE_LED_STOP ((USAGE) 0x33)
#define HID_USAGE_LED_REWIND ((USAGE) 0x34)
#define HID_USAGE_LED_FAST_FORWARD ((USAGE) 0x35)
#define HID_USAGE_LED_PLAY ((USAGE) 0x36)
#define HID_USAGE_LED_PAUSE ((USAGE) 0x37)
#define HID_USAGE_LED_RECORD ((USAGE) 0x38)
#define HID_USAGE_LED_ERROR ((USAGE) 0x39)
#define HID_USAGE_LED_SELECTED_INDICATOR ((USAGE) 0x3A)
#define HID_USAGE_LED_IN_USE_INDICATOR ((USAGE) 0x3B)
#define HID_USAGE_LED_MULTI_MODE_INDICATOR ((USAGE) 0x3C)
#define HID_USAGE_LED_INDICATOR_ON ((USAGE) 0x3D)
#define HID_USAGE_LED_INDICATOR_FLASH ((USAGE) 0x3E)
#define HID_USAGE_LED_INDICATOR_SLOW_BLINK ((USAGE) 0x3F)
#define HID_USAGE_LED_INDICATOR_FAST_BLINK ((USAGE) 0x40)
#define HID_USAGE_LED_INDICATOR_OFF ((USAGE) 0x41)
#define HID_USAGE_LED_FLASH_ON_TIME ((USAGE) 0x42)
#define HID_USAGE_LED_SLOW_BLINK_ON_TIME ((USAGE) 0x43)
#define HID_USAGE_LED_SLOW_BLINK_OFF_TIME ((USAGE) 0x44)
#define HID_USAGE_LED_FAST_BLINK_ON_TIME ((USAGE) 0x45)
#define HID_USAGE_LED_FAST_BLINK_OFF_TIME ((USAGE) 0x46)
#define HID_USAGE_LED_INDICATOR_COLOR ((USAGE) 0x47)
#define HID_USAGE_LED_RED ((USAGE) 0x48)
#define HID_USAGE_LED_GREEN ((USAGE) 0x49)
#define HID_USAGE_LED_AMBER ((USAGE) 0x4A)
#define HID_USAGE_LED_GENERIC_INDICATOR ((USAGE) 0x3B)
#define HID_USAGE_PAGE_UNDEFINED ((USAGE) 0x00)
#define HID_USAGE_PAGE_GENERIC ((USAGE) 0x01)
#define HID_USAGE_PAGE_SIMULATION ((USAGE) 0x02)
#define HID_USAGE_PAGE_VR ((USAGE) 0x03)
#define HID_USAGE_PAGE_SPORT ((USAGE) 0x04)
#define HID_USAGE_PAGE_GAME ((USAGE) 0x05)
#define HID_USAGE_PAGE_KEYBOARD ((USAGE) 0x07)
#define HID_USAGE_PAGE_LED ((USAGE) 0x08)
#define HID_USAGE_PAGE_BUTTON ((USAGE) 0x09)
#define HID_USAGE_PAGE_ORDINAL ((USAGE) 0x0A)
#define HID_USAGE_PAGE_TELEPHONY ((USAGE) 0x0B)
#define HID_USAGE_PAGE_CONSUMER ((USAGE) 0x0C)
#define HID_USAGE_PAGE_DIGITIZER ((USAGE) 0x0D)
#define HID_USAGE_PAGE_UNICODE ((USAGE) 0x10)
#define HID_USAGE_PAGE_ALPHANUMERIC ((USAGE) 0x14)
#define HID_USAGE_TELEPHONY_PHONE ((USAGE) 0x01)
#define HID_USAGE_TELEPHONY_ANSWERING_MACHINE ((USAGE) 0x02)
#define HID_USAGE_TELEPHONY_MESSAGE_CONTROLS ((USAGE) 0x03)
#define HID_USAGE_TELEPHONY_HANDSET ((USAGE) 0x04)
#define HID_USAGE_TELEPHONY_HEADSET ((USAGE) 0x05)
#define HID_USAGE_TELEPHONY_KEYPAD ((USAGE) 0x06)
#define HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON ((USAGE) 0x07)
#define HID_USAGE_SIMULATION_RUDDER ((USAGE) 0xBA)
#define HID_USAGE_SIMULATION_THROTTLE ((USAGE) 0xBB)
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __HIDUSAGE_H */

View File

@ -0,0 +1,147 @@
/*
* mcd.h
*
* Media changer driver interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __MCD_H
#define __MCD_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "srb.h"
#include "scsi.h"
#include "ntddchgr.h"
#if defined(_MCD_)
#define CHANGERAPI DECLSPEC_EXPORT
#else
#define CHANGERAPI DECLSPEC_IMPORT
#endif
#ifdef DebugPrint
#undef DebugPrint
#endif
#if DBG
#define DebugPrint(x) ChangerClassDebugPrint x
#else
#define DebugPrint(x)
#endif
#define MAXIMUM_CHANGER_INQUIRY_DATA 252
CHANGERAPI
PVOID
DDKAPI
ChangerClassAllocatePool(
IN POOL_TYPE PoolType,
IN ULONG NumberOfBytes);
VOID
ChangerClassDebugPrint(
ULONG DebugPrintLevel,
PCCHAR DebugMessage,
...);
CHANGERAPI
PVOID
DDKAPI
ChangerClassFreePool(
IN PVOID PoolToFree);
CHANGERAPI
NTSTATUS
DDKAPI
ChangerClassSendSrbSynchronous(
IN PDEVICE_OBJECT DeviceObject,
IN PSCSI_REQUEST_BLOCK Srb,
IN PVOID Buffer,
IN ULONG BufferSize,
IN BOOLEAN WriteToDevice);
typedef NTSTATUS DDKAPI
(*CHANGER_INITIALIZE)(
IN PDEVICE_OBJECT DeviceObject);
typedef ULONG DDKAPI
(*CHANGER_EXTENSION_SIZE)(
VOID);
typedef VOID DDKAPI
(*CHANGER_ERROR_ROUTINE)(
PDEVICE_OBJECT DeviceObject,
PSCSI_REQUEST_BLOCK Srb,
NTSTATUS *Status,
BOOLEAN *Retry);
typedef NTSTATUS DDKAPI
(*CHANGER_COMMAND_ROUTINE)(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp);
typedef NTSTATUS DDKAPI
(*CHANGER_PERFORM_DIAGNOSTICS)(
IN PDEVICE_OBJECT DeviceObject,
OUT PWMI_CHANGER_PROBLEM_DEVICE_ERROR ChangerDeviceError);
typedef struct _MCD_INIT_DATA {
ULONG InitDataSize;
CHANGER_EXTENSION_SIZE ChangerAdditionalExtensionSize;
CHANGER_INITIALIZE ChangerInitialize;
CHANGER_ERROR_ROUTINE ChangerError;
CHANGER_PERFORM_DIAGNOSTICS ChangerPerformDiagnostics;
CHANGER_COMMAND_ROUTINE ChangerGetParameters;
CHANGER_COMMAND_ROUTINE ChangerGetStatus;
CHANGER_COMMAND_ROUTINE ChangerGetProductData;
CHANGER_COMMAND_ROUTINE ChangerSetAccess;
CHANGER_COMMAND_ROUTINE ChangerGetElementStatus;
CHANGER_COMMAND_ROUTINE ChangerInitializeElementStatus;
CHANGER_COMMAND_ROUTINE ChangerSetPosition;
CHANGER_COMMAND_ROUTINE ChangerExchangeMedium;
CHANGER_COMMAND_ROUTINE ChangerMoveMedium;
CHANGER_COMMAND_ROUTINE ChangerReinitializeUnit;
CHANGER_COMMAND_ROUTINE ChangerQueryVolumeTags;
} MCD_INIT_DATA, *PMCD_INIT_DATA;
CHANGERAPI
NTSTATUS
DDKAPI
ChangerClassInitialize(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath,
IN PMCD_INIT_DATA MCDInitData);
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __MCD_H */

View File

@ -0,0 +1,78 @@
/*
* miniport.h
*
* Type definitions for miniport drivers
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __MINIPORT_H
#define __MINIPORT_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define EMULATOR_READ_ACCESS 0x01
#define EMULATOR_WRITE_ACCESS 0x02
typedef struct _EMULATOR_ACCESS_ENTRY {
ULONG BasePort;
ULONG NumConsecutivePorts;
EMULATOR_PORT_ACCESS_TYPE AccessType;
UCHAR AccessMode;
UCHAR StringSupport;
PVOID Routine;
} EMULATOR_ACCESS_ENTRY, *PEMULATOR_ACCESS_ENTRY;
typedef enum _EMULATOR_PORT_ACCESS_TYPE {
Uchar,
Ushort,
Ulong
} EMULATOR_PORT_ACCESS_TYPE, *PEMULATOR_PORT_ACCESS_TYPE;
typedef struct _VIDEO_ACCESS_RANGE {
PHYSICAL_ADDRESS RangeStart;
ULONG RangeLength;
UCHAR RangeInIoSpace;
UCHAR RangeVisible;
UCHAR RangeShareable;
UCHAR RangePassive;
} VIDEO_ACCESS_RANGE, *PVIDEO_ACCESS_RANGE;
typedef VOID DDKAPI
(*PBANKED_SECTION_ROUTINE)(
IN ULONG ReadBank,
IN ULONG WriteBank,
IN PVOID Context);
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __MINIPORT_H */

View File

@ -0,0 +1,221 @@
/*
* minitape.h
*
* Minitape driver interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __MINITAPE_H
#define __MINITAPE_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define MEDIA_ERASEABLE 0x00000001
#define MEDIA_WRITE_ONCE 0x00000002
#define MEDIA_READ_ONLY 0x00000004
#define MEDIA_READ_WRITE 0x00000008
#define MEDIA_WRITE_PROTECTED 0x00000100
#define MEDIA_CURRENTLY_MOUNTED 0x80000000
typedef enum _TAPE_STATUS {
TAPE_STATUS_SEND_SRB_AND_CALLBACK,
TAPE_STATUS_CALLBACK,
TAPE_STATUS_CHECK_TEST_UNIT_READY,
TAPE_STATUS_SUCCESS,
TAPE_STATUS_INSUFFICIENT_RESOURCES,
TAPE_STATUS_NOT_IMPLEMENTED,
TAPE_STATUS_INVALID_DEVICE_REQUEST,
TAPE_STATUS_INVALID_PARAMETER,
TAPE_STATUS_MEDIA_CHANGED,
TAPE_STATUS_BUS_RESET,
TAPE_STATUS_SETMARK_DETECTED,
TAPE_STATUS_FILEMARK_DETECTED,
TAPE_STATUS_BEGINNING_OF_MEDIA,
TAPE_STATUS_END_OF_MEDIA,
TAPE_STATUS_BUFFER_OVERFLOW,
TAPE_STATUS_NO_DATA_DETECTED,
TAPE_STATUS_EOM_OVERFLOW,
TAPE_STATUS_NO_MEDIA,
TAPE_STATUS_IO_DEVICE_ERROR,
TAPE_STATUS_UNRECOGNIZED_MEDIA,
TAPE_STATUS_DEVICE_NOT_READY,
TAPE_STATUS_MEDIA_WRITE_PROTECTED,
TAPE_STATUS_DEVICE_DATA_ERROR,
TAPE_STATUS_NO_SUCH_DEVICE,
TAPE_STATUS_INVALID_BLOCK_LENGTH,
TAPE_STATUS_IO_TIMEOUT,
TAPE_STATUS_DEVICE_NOT_CONNECTED,
TAPE_STATUS_DATA_OVERRUN,
TAPE_STATUS_DEVICE_BUSY,
TAPE_STATUS_REQUIRES_CLEANING,
TAPE_STATUS_CLEANER_CARTRIDGE_INSTALLED
} TAPE_STATUS, *PTAPE_STATUS;
#define INQUIRYDATABUFFERSIZE 36
typedef struct _INQUIRYDATA {
UCHAR DeviceType : 5;
UCHAR DeviceTypeQualifier : 3;
UCHAR DeviceTypeModifier : 7;
UCHAR RemovableMedia : 1;
union {
UCHAR Versions;
struct {
UCHAR ANSIVersion : 3;
UCHAR ECMAVersion : 3;
UCHAR ISOVersion : 2;
};
};
UCHAR ResponseDataFormat : 4;
UCHAR HiSupport : 1;
UCHAR NormACA : 1;
UCHAR TerminateTask : 1;
UCHAR AERC : 1;
UCHAR AdditionalLength;
UCHAR Reserved;
UCHAR Addr16 : 1;
UCHAR Addr32 : 1;
UCHAR AckReqQ: 1;
UCHAR MediumChanger : 1;
UCHAR MultiPort : 1;
UCHAR ReservedBit2 : 1;
UCHAR EnclosureServices : 1;
UCHAR ReservedBit3 : 1;
UCHAR SoftReset : 1;
UCHAR CommandQueue : 1;
UCHAR TransferDisable : 1;
UCHAR LinkedCommands : 1;
UCHAR Synchronous : 1;
UCHAR Wide16Bit : 1;
UCHAR Wide32Bit : 1;
UCHAR RelativeAddressing : 1;
UCHAR VendorId[8];
UCHAR ProductId[16];
UCHAR ProductRevisionLevel[4];
UCHAR VendorSpecific[20];
UCHAR Reserved3[40];
} INQUIRYDATA, *PINQUIRYDATA;
typedef struct _MODE_CAPABILITIES_PAGE {
UCHAR PageCode : 6;
UCHAR Reserved1 : 2;
UCHAR PageLength;
UCHAR Reserved2[2];
UCHAR RO : 1;
UCHAR Reserved3 : 4;
UCHAR SPREV : 1;
UCHAR Reserved4 : 2;
UCHAR Reserved5 : 3;
UCHAR EFMT : 1;
UCHAR Reserved6 : 1;
UCHAR QFA : 1;
UCHAR Reserved7 : 2;
UCHAR LOCK : 1;
UCHAR LOCKED : 1;
UCHAR PREVENT : 1;
UCHAR UNLOAD : 1;
UCHAR Reserved8 : 2;
UCHAR ECC : 1;
UCHAR CMPRS : 1;
UCHAR Reserved9 : 1;
UCHAR BLK512 : 1;
UCHAR BLK1024 : 1;
UCHAR Reserved10 : 4;
UCHAR SLOWB : 1;
UCHAR MaximumSpeedSupported[2];
UCHAR MaximumStoredDefectedListEntries[2];
UCHAR ContinuousTransferLimit[2];
UCHAR CurrentSpeedSelected[2];
UCHAR BufferSize[2];
UCHAR Reserved11[2];
} MODE_CAPABILITIES_PAGE, *PMODE_CAPABILITIES_PAGE;
typedef BOOLEAN DDKAPI
(*TAPE_VERIFY_INQUIRY_ROUTINE)(
IN PINQUIRYDATA InquiryData,
IN PMODE_CAPABILITIES_PAGE ModeCapabilitiesPage);
typedef VOID DDKAPI
(*TAPE_EXTENSION_INIT_ROUTINE)(
IN PVOID MinitapeExtension,
IN PINQUIRYDATA InquiryData,
IN PMODE_CAPABILITIES_PAGE ModeCapabilitiesPage);
typedef VOID DDKAPI
(*TAPE_ERROR_ROUTINE)(
IN PVOID MinitapeExtension,
IN PSCSI_REQUEST_BLOCK Srb,
IN OUT PTAPE_STATUS TapeStatus);
typedef TAPE_STATUS DDKAPI
(*TAPE_PROCESS_COMMAND_ROUTINE)(
IN OUT PVOID MinitapeExtension,
IN OUT PVOID CommandExtension,
IN OUT PVOID CommandParameters,
IN OUT PSCSI_REQUEST_BLOCK Srb,
IN ULONG CallNumber,
IN TAPE_STATUS StatusOfLastCommand,
IN OUT PULONG RetryFlags);
#define TAPE_RETRY_MASK 0x0000FFFF
#define IGNORE_ERRORS 0x00010000
#define RETURN_ERRORS 0x00020000
typedef struct _TAPE_INIT_DATA {
TAPE_VERIFY_INQUIRY_ROUTINE VerifyInquiry;
BOOLEAN QueryModeCapabilitiesPage;
ULONG MinitapeExtensionSize;
TAPE_EXTENSION_INIT_ROUTINE ExtensionInit;
ULONG DefaultTimeOutValue;
TAPE_ERROR_ROUTINE TapeError;
ULONG CommandExtensionSize;
TAPE_PROCESS_COMMAND_ROUTINE CreatePartition;
TAPE_PROCESS_COMMAND_ROUTINE Erase;
TAPE_PROCESS_COMMAND_ROUTINE GetDriveParameters;
TAPE_PROCESS_COMMAND_ROUTINE GetMediaParameters;
TAPE_PROCESS_COMMAND_ROUTINE GetPosition;
TAPE_PROCESS_COMMAND_ROUTINE GetStatus;
TAPE_PROCESS_COMMAND_ROUTINE Prepare;
TAPE_PROCESS_COMMAND_ROUTINE SetDriveParameters;
TAPE_PROCESS_COMMAND_ROUTINE SetMediaParameters;
TAPE_PROCESS_COMMAND_ROUTINE SetPosition;
TAPE_PROCESS_COMMAND_ROUTINE WriteMarks;
TAPE_PROCESS_COMMAND_ROUTINE PreProcessReadWrite; /* optional */
} TAPE_INIT_DATA, *PTAPE_INIT_DATA;
typedef struct _TAPE_PHYS_POSITION {
ULONG SeekBlockAddress;
ULONG SpaceBlockCount;
} TAPE_PHYS_POSITION, PTAPE_PHYS_POSITION;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __MINITAPE_H */

View File

@ -0,0 +1,84 @@
/*
* mountdev.h
*
* Mount point manager/mounted devices interface.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __MOUNTDEV_H
#define __MOUNTDEV_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "mountmgr.h"
#define IOCTL_MOUNTDEV_QUERY_DEVICE_NAME \
CTL_CODE(MOUNTDEVCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_MOUNTDEV_QUERY_UNIQUE_ID \
CTL_CODE(MOUNTDEVCONTROLTYPE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY \
CTL_CODE(MOUNTDEVCONTROLTYPE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_MOUNTDEV_QUERY_SUGGESTED_LINK_NAME \
CTL_CODE(MOUNTDEVCONTROLTYPE, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_MOUNTDEV_LINK_CREATED \
CTL_CODE(MOUNTDEVCONTROLTYPE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_MOUNTDEV_LINK_DELETED \
CTL_CODE(MOUNTDEVCONTROLTYPE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
typedef struct _MOUNTDEV_SUGGESTED_LINK_NAME {
BOOLEAN UseOnlyIfThereAreNoOtherLinks;
USHORT NameLength;
WCHAR Name[1];
} MOUNTDEV_SUGGESTED_LINK_NAME, *PMOUNTDEV_SUGGESTED_LINK_NAME;
typedef struct _MOUNTDEV_UNIQUE_ID {
USHORT UniqueIdLength;
UCHAR UniqueId[1];
} MOUNTDEV_UNIQUE_ID, *PMOUNTDEV_UNIQUE_ID;
typedef struct _MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY_OUTPUT {
ULONG Size;
USHORT OldUniqueIdOffset;
USHORT OldUniqueIdLength;
USHORT NewUniqueIdOffset;
USHORT NewUniqueIdLength;
} MOUNTDEV_UNIQUE_ID_CHANGE_NOTIFY_OUTPUT;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __MOUNTDEV_H */

View File

@ -0,0 +1,144 @@
/*
* mountmgr.h
*
* Mount point manager interface.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __MOUNTMGR_H
#define __MOUNTMGR_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
DEFINE_GUID(MOUNTDEV_MOUNTED_DEVICE_GUID,
0x53f5630d, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
#define MOUNTMGRCONTROLTYPE ((ULONG)'m')
#define MOUNTDEVCONTROLTYPE ((ULONG)'M')
#define MOUNTMGR_DEVICE_NAME L"\\Device\\MountPointManager"
#define MOUNTMGR_DOS_DEVICE_NAME L"\\\\.\\MountPointManager"
#define IOCTL_MOUNTMGR_CREATE_POINT \
CTL_CODE(MOUNTMGRCONTROLTYPE, 0, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_QUERY_POINTS \
CTL_CODE(MOUNTMGRCONTROLTYPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_MOUNTMGR_DELETE_POINTS \
CTL_CODE(MOUNTMGRCONTROLTYPE, 1, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_DELETE_POINTS_DBONLY \
CTL_CODE(MOUNTMGRCONTROLTYPE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER \
CTL_CODE(MOUNTMGRCONTROLTYPE, 4, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_AUTO_DL_ASSIGNMENTS \
CTL_CODE(MOUNTMGRCONTROLTYPE, 5, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_CREATED \
CTL_CODE(MOUNTMGRCONTROLTYPE, 6, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_VOLUME_MOUNT_POINT_DELETED \
CTL_CODE(MOUNTMGRCONTROLTYPE, 7, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_CHANGE_NOTIFY \
CTL_CODE(MOUNTMGRCONTROLTYPE, 8, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_MOUNTMGR_KEEP_LINKS_WHEN_OFFLINE \
CTL_CODE(MOUNTMGRCONTROLTYPE, 9, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_MOUNTMGR_CHECK_UNPROCESSED_VOLUMES \
CTL_CODE(MOUNTMGRCONTROLTYPE, 10, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_MOUNTMGR_VOLUME_ARRIVAL_NOTIFICATION \
CTL_CODE(MOUNTMGRCONTROLTYPE, 11, METHOD_BUFFERED, FILE_READ_ACCESS)
typedef struct _MOUNTDEV_NAME {
USHORT NameLength;
WCHAR Name[1];
} MOUNTDEV_NAME, *PMOUNTDEV_NAME;
typedef struct _MOUNTMGR_CHANGE_NOTIFY_INFO {
ULONG EpicNumber;
} MOUNTMGR_CHANGE_NOTIFY_INFO, *PMOUNTMGR_CHANGE_NOTIFY_INFO;
typedef struct _MOUNTMGR_CREATE_POINT_INPUT {
USHORT SymbolicLinkNameOffset;
USHORT SymbolicLinkNameLength;
USHORT DeviceNameOffset;
USHORT DeviceNameLength;
} MOUNTMGR_CREATE_POINT_INPUT, *PMOUNTMGR_CREATE_POINT_INPUT;
typedef struct _MOUNTMGR_DRIVE_LETTER_INFORMATION {
BOOLEAN DriveLetterWasAssigned;
UCHAR CurrentDriveLetter;
} MOUNTMGR_DRIVE_LETTER_INFORMATION, *PMOUNTMGR_DRIVE_LETTER_INFORMATION;
typedef struct _MOUNTMGR_DRIVE_LETTER_TARGET {
USHORT DeviceNameLength;
WCHAR DeviceName[1];
} MOUNTMGR_DRIVE_LETTER_TARGET, *PMOUNTMGR_DRIVE_LETTER_TARGET;
typedef struct _MOUNTMGR_MOUNT_POINT {
ULONG SymbolicLinkNameOffset;
USHORT SymbolicLinkNameLength;
ULONG UniqueIdOffset;
USHORT UniqueIdLength;
ULONG DeviceNameOffset;
USHORT DeviceNameLength;
} MOUNTMGR_MOUNT_POINT, *PMOUNTMGR_MOUNT_POINT;
typedef struct _MOUNTMGR_MOUNT_POINTS {
ULONG Size;
ULONG NumberOfMountPoints;
MOUNTMGR_MOUNT_POINT MountPoints[1];
} MOUNTMGR_MOUNT_POINTS, *PMOUNTMGR_MOUNT_POINTS;
typedef struct _MOUNTMGR_TARGET_NAME {
USHORT DeviceNameLength;
WCHAR DeviceName[1];
} MOUNTMGR_TARGET_NAME, *PMOUNTMGR_TARGET_NAME;
typedef struct _MOUNTMGR_VOLUME_MOUNT_POINT {
USHORT SourceVolumeNameOffset;
USHORT SourceVolumeNameLength;
USHORT TargetVolumeNameOffset;
USHORT TargetVolumeNameLength;
} MOUNTMGR_VOLUME_MOUNT_POINT, *PMOUNTMGR_VOLUME_MOUNT_POINT;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __MOUNTMGR_H */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,443 @@
/*
* ndisguid.h
*
* GUIDs for NDIS drivers
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NDISGUID_H
#define __NDISGUID_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
DEFINE_GUID(GUID_NDIS_LAN_CLASS,
0xad498944, 0x762f, 0x11d0, 0x8d, 0xcb, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_ENUMERATE_ADAPTER,
0x981f2d7f, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_ENUMERATE_VC,
0x981f2d82, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_NOTIFY_ADAPTER_ARRIVAL,
0x981f2d81, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_NOTIFY_ADAPTER_REMOVAL,
0x981f2d80, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_NOTIFY_VC_ARRIVAL,
0x182f9e0c, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_NOTIFY_VC_REMOVAL,
0x981f2d79, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_NOTIFY_BIND,
0x5413531c, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_NOTIFY_UNBIND,
0x6e3ce1ec, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_WAKE_ON_MAGIC_PACKET_ONLY,
0xa14f1c97, 0x8839, 0x4f8a, 0x99, 0x96, 0xa2, 0x89, 0x96, 0xeb, 0xbf, 0x1d);
DEFINE_GUID(GUID_NDIS_802_3_CURRENT_ADDRESS,
0x44795700, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_3_MAC_OPTIONS,
0x44795703, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_3_MAXIMUM_LIST_SIZE,
0x44795702, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_3_MULTICAST_LIST,
0x44795701, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_3_PERMANENT_ADDRESS,
0x447956ff, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_3_RCV_ERROR_ALIGNMENT,
0x44795704, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_3_XMIT_MORE_COLLISIONS,
0x44795706, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_3_XMIT_ONE_COLLISION,
0x44795705, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_5_CURRENT_ADDRESS,
0x44795708, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_5_CURRENT_FUNCTIONAL,
0x44795709, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_5_CURRENT_GROUP,
0x4479570a, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_5_CURRENT_RING_STATE,
0xacf14032, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_5_CURRENT_RING_STATUS,
0x890a36ec, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_5_LAST_OPEN_STATUS,
0x4479570b, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_5_PERMANENT_ADDRESS,
0x44795707, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_5_LINE_ERRORS,
0xacf14033, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_5_LOST_FRAMES,
0xacf14034, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_802_11_ADD_WEP,
0x4307bff0, 0x2129, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_AUTHENTICATION_MODE,
0x43920a24, 0x2129, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_BSSID,
0x2504b6c2, 0x1fa5, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_BSSID_LIST,
0x69526f9a, 0x2062, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_BASIC_RATES,
0x4a198516, 0x2068, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_CONFIGURATION,
0x4a4df982, 0x2068, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_DESIRED_RATES,
0x452ee08e, 0x2536, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_DISASSOCIATE,
0x43671f40, 0x2129, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_FRAGMENTATION_THRESHOLD,
0x69aaa7c4, 0x2062, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_INFRASTRUCTURE_MODE,
0x697d5a7e, 0x2062, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_NETWORK_TYPES_SUPPORTED,
0x8531d6e6, 0x2041, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_NETWORK_TYPE_IN_USE,
0x857e2326, 0x2041, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_NUMBER_OF_ANTENNAS,
0x01779336, 0x2064, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_POWER_MODE,
0x85be837c, 0x2041, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_RATES_SUPPORTED,
0x49db8722, 0x2068, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_REMOVE_WEP,
0x433c345c, 0x2129, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_PRIVACY_FILTER,
0x6733c4e9, 0x4792, 0x11d4, 0x97, 0xf1, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_RSSI,
0x1507db16, 0x2053, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_RSSI_TRIGGER,
0x155689b8, 0x2053, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_RTS_THRESHOLD,
0x0134d07e, 0x2064, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_RX_ANTENNA_SELECTED,
0x01ac07a2, 0x2064, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_SSID,
0x7d2a90ea, 0x2041, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_STATISTICS,
0x42bb73b0, 0x2129, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_TX_POWER_LEVEL,
0x11e6ba76, 0x2053, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_802_11_TX_ANTENNA_SELECTED,
0x01dbb74a, 0x2064, 0x11d4, 0x97, 0xeb, 0x00, 0xc0, 0x4f, 0x79, 0xc4, 0x03);
DEFINE_GUID(GUID_NDIS_ATM_HW_CURRENT_ADDRESS,
0x791ad1a1, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_ATM_MAX_AAL0_PACKET_SIZE,
0x791ad1a5, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_ATM_MAX_AAL1_PACKET_SIZE,
0x791ad1a6, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_ATM_MAX_AAL34_PACKET_SIZE,
0x791ad1a7, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_ATM_MAX_AAL5_PACKET_SIZE,
0x791ad191, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_ATM_MAX_ACTIVE_VCI_BITS,
0x791ad1a3, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_ATM_MAX_ACTIVE_VCS,
0x791ad1a2, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_ATM_MAX_ACTIVE_VPI_BITS,
0x791ad1a4, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_ATM_SUPPORTED_AAL_TYPES,
0x791ad1a0, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_ATM_SUPPORTED_SERVICE_CATEGORY,
0x791ad19f, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_ATM_SUPPORTED_VC_RATES,
0x791ad19e, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_ATM_RCV_CELLS_DROPPED,
0x0a21480c, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_ATM_RCV_CELLS_OK,
0x0a21480a, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_ATM_XMIT_CELLS_OK,
0x0a21480b, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_LONG_CURRENT_ADDR,
0xacf14036, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_LONG_MAX_LIST_SIZE,
0xacf14038, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_LONG_MULTICAST_LIST,
0xacf14037, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_LONG_PERMANENT_ADDR,
0xacf14035, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_SHORT_CURRENT_ADDR,
0xacf1403a, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_SHORT_MAX_LIST_SIZE,
0xacf1403c, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_SHORT_MULTICAST_LIST,
0xacf1403b, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_SHORT_PERMANENT_ADDR,
0xacf14039, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_ATTACHMENT_TYPE,
0xacf1403d, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_DOWNSTREAM_NODE_LONG,
0xacf1403f, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_FRAME_ERRORS,
0xacf14040, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_FRAMES_LOST,
0xacf14041, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_LCT_FAILURES,
0xacf14043, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_LCONNECTION_STATE,
0xacf14045, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_LEM_REJECTS,
0xacf14044, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_RING_MGT_STATE,
0xacf14042, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_FDDI_UPSTREAM_NODE_LONG,
0xacf1403e, 0xa61c, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CURRENT_LOOKAHEAD,
0x5ec10361, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CURRENT_PACKET_FILTER,
0x5ec10360, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_DRIVER_VERSION,
0x5ec10362, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_HARDWARE_STATUS,
0x5ec10354, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_MEDIA_IN_USE,
0x5ec10356, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_MEDIA_SUPPORTED,
0x5ec10355, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_LINK_SPEED,
0x5ec10359, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_MAC_OPTIONS,
0x5ec10365, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_MAXIMUM_LOOKAHEAD,
0x5ec10357, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_MAXIMUM_FRAME_SIZE,
0x5ec10358, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_MAXIMUM_SEND_PACKETS,
0x5ec10367, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_MAXIMUM_TOTAL_SIZE,
0x5ec10363, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_MEDIA_CONNECT_STATUS,
0x5ec10366, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_RECEIVE_BLOCK_SIZE,
0x5ec1035d, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_RECEIVE_BUFFER_SPACE,
0x5ec1035b, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_TRANSMIT_BUFFER_SPACE,
0x5ec1035a, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_TRANSMIT_BLOCK_SIZE,
0x5ec1035c, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_VENDOR_DESCRIPTION,
0x5ec1035f, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_VENDOR_DRIVER_VERSION,
0x447956f9, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_VENDOR_ID,
0x5ec1035e, 0xa61a, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_RCV_ERROR,
0x447956fd, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_RCV_NO_BUFFER,
0x447956fe, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_RCV_OK,
0x447956fb, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_XMIT_ERROR,
0x447956fc, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_XMIT_OK,
0x447956fa, 0xa61b, 0x11d0, 0x8d, 0xd4, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_DRIVER_VERSION,
0x791ad198, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_HARDWARE_STATUS,
0x791ad192, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_LINK_SPEED,
0x791ad195, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_MAC_OPTIONS,
0x791ad19a, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_MEDIA_SUPPORTED,
0x791ad193, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_MEDIA_IN_USE,
0x791ad194, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_MEDIA_CONNECT_STATUS,
0x791ad19b, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_MINIMUM_LINK_SPEED,
0x791ad19d, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_VENDOR_DESCRIPTION,
0x791ad197, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_VENDOR_DRIVER_VERSION,
0x791ad19c, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_VENDOR_ID,
0x791ad196, 0xe35c, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_RCV_PDUS_ERROR,
0x0a214808, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_RCV_PDUS_OK,
0x0a214806, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_RCV_PDUS_NO_BUFFER,
0x0a214809, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_XMIT_PDUS_ERROR,
0x0a214807, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_GEN_CO_XMIT_PDUS_OK,
0x0a214805, 0xe35f, 0x11d0, 0x96, 0x92, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_STATUS_LINK_SPEED_CHANGE,
0x981f2d85, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_STATUS_MEDIA_CONNECT,
0x981f2d7d, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_STATUS_MEDIA_DISCONNECT,
0x981f2d7e, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_STATUS_MEDIA_SPECIFIC_INDICATION,
0x981f2d84, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_STATUS_RESET_END,
0x981f2d77, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
DEFINE_GUID(GUID_NDIS_STATUS_RESET_START,
0x981f2d76, 0xb1f3, 0x11d0, 0x8d, 0xd7, 0x00, 0xc0, 0x4f, 0xc3, 0x35, 0x8c);
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NDISGUID_H */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,255 @@
/*
* ndiswan.h
*
* Definitions for NDIS WAN miniport drivers
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NDISWAN_H
#define __NDISWAN_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ndis.h"
#define NDIS_USE_WAN_WRAPPER 0x00000001
#define NDIS_STATUS_TAPI_INDICATION ((NDIS_STATUS)0x40010080L)
/* NDIS_WAN_INFO.FramingBits constants */
#define RAS_FRAMING 0x00000001
#define RAS_COMPRESSION 0x00000002
#define ARAP_V1_FRAMING 0x00000004
#define ARAP_V2_FRAMING 0x00000008
#define ARAP_FRAMING (ARAP_V1_FRAMING | ARAP_V2_FRAMING)
#define PPP_MULTILINK_FRAMING 0x00000010
#define PPP_SHORT_SEQUENCE_HDR_FORMAT 0x00000020
#define PPP_MC_MULTILINK_FRAMING 0x00000040
#define PPP_FRAMING 0x00000100
#define PPP_COMPRESS_ADDRESS_CONTROL 0x00000200
#define PPP_COMPRESS_PROTOCOL_FIELD 0x00000400
#define PPP_ACCM_SUPPORTED 0x00000800
#define SLIP_FRAMING 0x00001000
#define SLIP_VJ_COMPRESSION 0x00002000
#define SLIP_VJ_AUTODETECT 0x00004000
#define MEDIA_NRZ_ENCODING 0x00010000
#define MEDIA_NRZI_ENCODING 0x00020000
#define MEDIA_NLPID 0x00040000
#define RFC_1356_FRAMING 0x00100000
#define RFC_1483_FRAMING 0x00200000
#define RFC_1490_FRAMING 0x00400000
#define LLC_ENCAPSULATION 0x00800000
#define SHIVA_FRAMING 0x01000000
#define NBF_PRESERVE_MAC_ADDRESS 0x01000000
#define PASS_THROUGH_MODE 0x10000000
#define RAW_PASS_THROUGH_MODE 0x20000000
#define TAPI_PROVIDER 0x80000000
typedef struct _NDIS_WAN_INFO {
OUT ULONG MaxFrameSize;
OUT ULONG MaxTransmit;
OUT ULONG HeaderPadding;
OUT ULONG TailPadding;
OUT ULONG Endpoints;
OUT UINT MemoryFlags;
OUT NDIS_PHYSICAL_ADDRESS HighestAcceptableAddress;
OUT ULONG FramingBits;
OUT ULONG DesiredACCM;
} NDIS_WAN_INFO, *PNDIS_WAN_INFO;
typedef struct _NDIS_WAN_GET_LINK_INFO {
IN NDIS_HANDLE NdisLinkHandle;
OUT ULONG MaxSendFrameSize;
OUT ULONG MaxRecvFrameSize;
OUT ULONG HeaderPadding;
OUT ULONG TailPadding;
OUT ULONG SendFramingBits;
OUT ULONG RecvFramingBits;
OUT ULONG SendCompressionBits;
OUT ULONG RecvCompressionBits;
OUT ULONG SendACCM;
OUT ULONG RecvACCM;
} NDIS_WAN_GET_LINK_INFO, *PNDIS_WAN_GET_LINK_INFO;
typedef struct _NDIS_WAN_SET_LINK_INFO {
IN NDIS_HANDLE NdisLinkHandle;
IN ULONG MaxSendFrameSize;
IN ULONG MaxRecvFrameSize;
IN ULONG HeaderPadding;
IN ULONG TailPadding;
IN ULONG SendFramingBits;
IN ULONG RecvFramingBits;
IN ULONG SendCompressionBits;
IN ULONG RecvCompressionBits;
IN ULONG SendACCM;
IN ULONG RecvACCM;
} NDIS_WAN_SET_LINK_INFO, *PNDIS_WAN_SET_LINK_INFO;
/* NDIS_WAN_COMPRESS_INFO.MSCompType constants */
#define NDISWAN_COMPRESSION 0x00000001
#define NDISWAN_ENCRYPTION 0x00000010
#define NDISWAN_40_ENCRYPTION 0x00000020
#define NDISWAN_128_ENCRYPTION 0x00000040
#define NDISWAN_56_ENCRYPTION 0x00000080
#define NDISWAN_HISTORY_LESS 0x01000000
/* NDIS_WAN_COMPRESS_INFO.CompType constants */
#define COMPTYPE_OUI 0
#define COMPTYPE_NT31RAS 254
#define COMPTYPE_NONE 255
typedef struct _NDIS_WAN_COMPRESS_INFO {
UCHAR SessionKey[8];
ULONG MSCompType;
UCHAR CompType;
USHORT CompLength;
union {
struct {
UCHAR CompOUI[3];
UCHAR CompSubType;
UCHAR CompValues[32];
} Proprietary;
struct {
UCHAR CompValues[32];
} Public;
};
} NDIS_WAN_COMPRESS_INFO;
typedef NDIS_WAN_COMPRESS_INFO *PNDIS_WAN_COMPRESS_INFO;
typedef struct _NDIS_WAN_GET_COMP_INFO {
IN NDIS_HANDLE NdisLinkHandle;
OUT NDIS_WAN_COMPRESS_INFO SendCapabilities;
OUT NDIS_WAN_COMPRESS_INFO RecvCapabilities;
} NDIS_WAN_GET_COMP_INFO, *PNDIS_WAN_GET_COMP_INFO;
typedef struct _NDIS_WAN_SET_COMP_INFO {
IN NDIS_HANDLE NdisLinkHandle;
IN NDIS_WAN_COMPRESS_INFO SendCapabilities;
IN NDIS_WAN_COMPRESS_INFO RecvCapabilities;
} NDIS_WAN_SET_COMP_INFO, *PNDIS_WAN_SET_COMP_INFO;
typedef struct _NDIS_WAN_GET_STATS_INFO {
IN NDIS_HANDLE NdisLinkHandle;
OUT ULONG BytesSent;
OUT ULONG BytesRcvd;
OUT ULONG FramesSent;
OUT ULONG FramesRcvd;
OUT ULONG CRCErrors;
OUT ULONG TimeoutErrors;
OUT ULONG AlignmentErrors;
OUT ULONG SerialOverrunErrors;
OUT ULONG FramingErrors;
OUT ULONG BufferOverrunErrors;
OUT ULONG BytesTransmittedUncompressed;
OUT ULONG BytesReceivedUncompressed;
OUT ULONG BytesTransmittedCompressed;
OUT ULONG BytesReceivedCompressed;
} NDIS_WAN_GET_STATS_INFO, *PNDIS_WAN_GET_STATS_INFO;
#define NdisMWanInitializeWrapper(NdisWrapperHandle, \
SystemSpecific1, \
SystemSpecific2, \
SystemSpecific3) \
{ \
NdisMInitializeWrapper(NdisWrapperHandle, \
SystemSpecific1, \
SystemSpecific2, \
SystemSpecific3); \
}
typedef struct _NDIS_WAN_CO_INFO {
OUT ULONG MaxFrameSize;
OUT ULONG MaxSendWindow;
OUT ULONG FramingBits;
OUT ULONG DesiredACCM;
} NDIS_WAN_CO_INFO, *PNDIS_WAN_CO_INFO;
typedef struct _NDIS_WAN_CO_GET_LINK_INFO {
OUT ULONG MaxSendFrameSize;
OUT ULONG MaxRecvFrameSize;
OUT ULONG SendFramingBits;
OUT ULONG RecvFramingBits;
OUT ULONG SendCompressionBits;
OUT ULONG RecvCompressionBits;
OUT ULONG SendACCM;
OUT ULONG RecvACCM;
} NDIS_WAN_CO_GET_LINK_INFO, *PNDIS_WAN_CO_GET_LINK_INFO;
typedef struct _NDIS_WAN_CO_SET_LINK_INFO {
IN ULONG MaxSendFrameSize;
IN ULONG MaxRecvFrameSize;
IN ULONG SendFramingBits;
IN ULONG RecvFramingBits;
IN ULONG SendCompressionBits;
IN ULONG RecvCompressionBits;
IN ULONG SendACCM;
IN ULONG RecvACCM;
} NDIS_WAN_CO_SET_LINK_INFO, *PNDIS_WAN_CO_SET_LINK_INFO;
typedef struct _NDIS_WAN_CO_GET_COMP_INFO {
OUT NDIS_WAN_COMPRESS_INFO SendCapabilities;
OUT NDIS_WAN_COMPRESS_INFO RecvCapabilities;
} NDIS_WAN_CO_GET_COMP_INFO, *PNDIS_WAN_CO_GET_COMP_INFO;
typedef struct _NDIS_WAN_CO_SET_COMP_INFO {
IN NDIS_WAN_COMPRESS_INFO SendCapabilities;
IN NDIS_WAN_COMPRESS_INFO RecvCapabilities;
} NDIS_WAN_CO_SET_COMP_INFO, *PNDIS_WAN_CO_SET_COMP_INFO;
typedef struct _NDIS_WAN_CO_GET_STATS_INFO {
OUT ULONG BytesSent;
OUT ULONG BytesRcvd;
OUT ULONG FramesSent;
OUT ULONG FramesRcvd;
OUT ULONG CRCErrors;
OUT ULONG TimeoutErrors;
OUT ULONG AlignmentErrors;
OUT ULONG SerialOverrunErrors;
OUT ULONG FramingErrors;
OUT ULONG BufferOverrunErrors;
OUT ULONG BytesTransmittedUncompressed;
OUT ULONG BytesReceivedUncompressed;
OUT ULONG BytesTransmittedCompressed;
OUT ULONG BytesReceivedCompressed;
} NDIS_WAN_CO_GET_STATS_INFO, *PNDIS_WAN_CO_GET_STATS_INFO;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NDISWAN_H */

View File

@ -0,0 +1,42 @@
/*
* netevent.h
*
* Network events
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NETEVENT_H
#define __NETEVENT_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#define EVENT_TRANSPORT_REGISTER_FAILED 0xC000232CL
#define EVENT_TRANSPORT_ADAPTER_NOT_FOUND 0xC000232EL
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
#endif /* __NETEVENT_H */

View File

@ -0,0 +1,73 @@
/*
* netpnp.h
*
* Network Plug and Play event support
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NETPNP_H
#define __NETPNP_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
typedef enum _NET_PNP_EVENT_CODE {
NetEventSetPower,
NetEventQueryPower,
NetEventQueryRemoveDevice,
NetEventCancelRemoveDevice,
NetEventReconfigure,
NetEventBindList,
NetEventBindsComplete,
NetEventPnPCapabilities,
NetEventMaximum
} NET_PNP_EVENT_CODE, *PNET_PNP_EVENT_CODE;
typedef struct _NET_PNP_EVENT {
NET_PNP_EVENT_CODE NetEvent;
PVOID Buffer;
ULONG BufferLength;
ULONG_PTR NdisReserved[4];
ULONG_PTR TransportReserved[4];
ULONG_PTR TdiReserved[4];
ULONG_PTR TdiClientReserved[4];
} NET_PNP_EVENT, *PNET_PNP_EVENT;
typedef enum _NET_DEVICE_POWER_STATE {
NetDeviceStateUnspecified,
NetDeviceStateD0,
NetDeviceStateD1,
NetDeviceStateD2,
NetDeviceStateD3,
NetDeviceStateMaximum
} NET_DEVICE_POWER_STATE, *PNET_DEVICE_POWER_STATE;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NETPNP_H */

View File

@ -0,0 +1,70 @@
/*
* newdev.h
*
* Driver installation DLL interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NEWDEV_H
#define __NEWDEV_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
/* UpdateDriverForPlugAndPlayDevices.InstallFlags constants */
#define INSTALLFLAG_FORCE 0x00000001
#define INSTALLFLAG_READONLY 0x00000002
#define INSTALLFLAG_NONINTERACTIVE 0x00000004
#define INSTALLFLAG_BITS 0x00000007
BOOL WINAPI
UpdateDriverForPlugAndPlayDevicesA(
HWND hwndParent,
LPCSTR HardwareId,
LPCSTR FullInfPath,
DWORD InstallFlags,
PBOOL bRebootRequired OPTIONAL);
BOOL WINAPI
UpdateDriverForPlugAndPlayDevicesW(
HWND hwndParent,
LPCWSTR HardwareId,
LPCWSTR FullInfPath,
DWORD InstallFlags,
PBOOL bRebootRequired OPTIONAL);
#ifdef UNICODE
#define UpdateDriverForPlugAndPlayDevices UpdateDriverForPlugAndPlayDevicesW
#else
#define UpdateDriverForPlugAndPlayDevices UpdateDriverForPlugAndPlayDevicesA
#endif /* UNICODE */
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NEWDEV_H */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,218 @@
/*
* ntdd8042.h
*
* i8042 IOCTL interface.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDD8042_H
#define __NTDD8042_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "ntddkbd.h"
#include "ntddmou.h"
#define IOCTL_INTERNAL_I8042_CONTROLLER_WRITE_BUFFER \
CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF2, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_I8042_HOOK_KEYBOARD \
CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_I8042_KEYBOARD_START_INFORMATION \
CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF3, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_I8042_KEYBOARD_WRITE_BUFFER \
CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0FF1, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_I8042_HOOK_MOUSE \
CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF0, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_I8042_MOUSE_START_INFORMATION \
CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF3, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_I8042_MOUSE_WRITE_BUFFER \
CTL_CODE(FILE_DEVICE_MOUSE, 0x0FF1, METHOD_NEITHER, FILE_ANY_ACCESS)
#define I8042_POWER_SYS_BUTTON 0x0001
#define I8042_SLEEP_SYS_BUTTON 0x0002
#define I8042_WAKE_SYS_BUTTON 0x0004
#define I8042_SYS_BUTTONS (I8042_POWER_SYS_BUTTON | \
I8042_SLEEP_SYS_BUTTON | \
I8042_WAKE_SYS_BUTTON)
typedef enum _TRANSMIT_STATE {
Idle = 0,
SendingBytes
} TRANSMIT_STATE;
typedef struct _OUTPUT_PACKET {
PUCHAR Bytes;
ULONG CurrentByte;
ULONG ByteCount;
TRANSMIT_STATE State;
} OUTPUT_PACKET, *POUTPUT_PACKET;
typedef enum _KEYBOARD_SCAN_STATE {
Normal,
GotE0,
GotE1
} KEYBOARD_SCAN_STATE, *PKEYBOARD_SCAN_STATE;
typedef enum _MOUSE_STATE {
MouseIdle,
XMovement,
YMovement,
ZMovement,
MouseExpectingACK,
MouseResetting
} MOUSE_STATE, *PMOUSE_STATE;
typedef enum _MOUSE_RESET_SUBSTATE {
ExpectingReset,
ExpectingResetId,
ExpectingGetDeviceIdACK,
ExpectingGetDeviceIdValue,
ExpectingSetResolutionDefaultACK,
ExpectingSetResolutionDefaultValueACK,
ExpectingSetResolutionACK,
ExpectingSetResolutionValueACK,
ExpectingSetScaling1to1ACK,
ExpectingSetScaling1to1ACK2,
ExpectingSetScaling1to1ACK3,
ExpectingReadMouseStatusACK,
ExpectingReadMouseStatusByte1,
ExpectingReadMouseStatusByte2,
ExpectingReadMouseStatusByte3,
StartPnPIdDetection,
ExpectingLoopSetSamplingRateACK,
ExpectingLoopSetSamplingRateValueACK,
ExpectingPnpIdByte1,
ExpectingPnpIdByte2,
ExpectingPnpIdByte3,
ExpectingPnpIdByte4,
ExpectingPnpIdByte5,
ExpectingPnpIdByte6,
ExpectingPnpIdByte7,
EnableWheel,
Enable5Buttons,
ExpectingGetDeviceId2ACK,
ExpectingGetDeviceId2Value,
ExpectingSetSamplingRateACK,
ExpectingSetSamplingRateValueACK,
ExpectingEnableACK,
ExpectingFinalResolutionACK,
ExpectingFinalResolutionValueACK,
ExpectingGetDeviceIdDetectACK,
ExpectingGetDeviceIdDetectValue,
CustomHookStateMinimum = 100,
CustomHookStateMaximum = 999,
I8042ReservedMinimum = 1000
} MOUSE_RESET_SUBSTATE, *PMOUSE_RESET_SUBSTATE;
typedef struct _INTERNAL_I8042_START_INFORMATION {
ULONG Size;
PKINTERRUPT InterruptObject;
ULONG Reserved[8];
} INTERNAL_I8042_START_INFORMATION, *PINTERNAL_I8042_START_INFORMATION;
typedef VOID DDKAPI
(*PI8042_ISR_WRITE_PORT)(
IN PVOID Context,
IN UCHAR Value);
typedef VOID DDKAPI
(*PI8042_QUEUE_PACKET)(
IN PVOID Context);
typedef NTSTATUS DDKAPI
(*PI8042_SYNCH_READ_PORT) (
IN PVOID Context,
OUT PUCHAR Value,
IN BOOLEAN WaitForACK);
typedef NTSTATUS DDKAPI
(*PI8042_SYNCH_WRITE_PORT)(
IN PVOID Context,
IN UCHAR Value,
IN BOOLEAN WaitForACK);
typedef NTSTATUS DDKAPI
(*PI8042_KEYBOARD_INITIALIZATION_ROUTINE)(
IN PVOID InitializationContext,
IN PVOID SynchFuncContext,
IN PI8042_SYNCH_READ_PORT ReadPort,
IN PI8042_SYNCH_WRITE_PORT WritePort,
OUT PBOOLEAN TurnTranslationOn);
typedef BOOLEAN DDKAPI
(*PI8042_KEYBOARD_ISR)(
PVOID IsrContext,
PKEYBOARD_INPUT_DATA CurrentInput,
POUTPUT_PACKET CurrentOutput,
UCHAR StatusByte,
PUCHAR Byte,
PBOOLEAN ContinueProcessing,
PKEYBOARD_SCAN_STATE ScanState);
typedef struct _INTERNAL_I8042_HOOK_KEYBOARD {
OUT PVOID Context;
OUT PI8042_KEYBOARD_INITIALIZATION_ROUTINE InitializationRoutine;
OUT PI8042_KEYBOARD_ISR IsrRoutine;
IN PI8042_ISR_WRITE_PORT IsrWritePort;
IN PI8042_QUEUE_PACKET QueueKeyboardPacket;
IN PVOID CallContext;
} INTERNAL_I8042_HOOK_KEYBOARD, *PINTERNAL_I8042_HOOK_KEYBOARD;
typedef BOOLEAN DDKAPI
(*PI8042_MOUSE_ISR)(
PVOID IsrContext,
PMOUSE_INPUT_DATA CurrentInput,
POUTPUT_PACKET CurrentOutput,
UCHAR StatusByte,
PUCHAR Byte,
PBOOLEAN ContinueProcessing,
PMOUSE_STATE MouseState,
PMOUSE_RESET_SUBSTATE ResetSubState);
typedef struct _INTERNAL_I8042_HOOK_MOUSE {
OUT PVOID Context;
OUT PI8042_MOUSE_ISR IsrRoutine;
IN PI8042_ISR_WRITE_PORT IsrWritePort;
IN PI8042_QUEUE_PACKET QueueMousePacket;
IN PVOID CallContext;
} INTERNAL_I8042_HOOK_MOUSE, *PINTERNAL_I8042_HOOK_MOUSE;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDD8042_H */

View File

@ -0,0 +1,59 @@
/*
* ntddbeep.h
*
* Beep device IOCTL interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDBEEP_H
#define __NTDDBEEP_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define DD_BEEP_DEVICE_NAME "\\Device\\Beep"
#define DD_BEEP_DEVICE_NAME_U L"\\Device\\Beep"
#define IOCTL_BEEP_SET \
CTL_CODE(FILE_DEVICE_BEEP, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
typedef struct _BEEP_SET_PARAMETERS {
ULONG Frequency;
ULONG Duration;
} BEEP_SET_PARAMETERS, *PBEEP_SET_PARAMETERS;
#define BEEP_FREQUENCY_MINIMUM 0x25
#define BEEP_FREQUENCY_MAXIMUM 0x7FFF
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDBEEP_H */

View File

@ -0,0 +1,352 @@
/*
* ntddcdrm.h
*
* CDROM IOCTL interface.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDCDRM_H
#define __NTDDCDRM_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "ntddstor.h"
#define IOCTL_CDROM_BASE FILE_DEVICE_CD_ROM
#define IOCTL_CDROM_CHECK_VERIFY \
CTL_CODE(IOCTL_CDROM_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CDROM_FIND_NEW_DEVICES \
CTL_CODE(IOCTL_CDROM_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CDROM_GET_CONTROL \
CTL_CODE(IOCTL_CDROM_BASE, 0x000D, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CDROM_GET_DRIVE_GEOMETRY \
CTL_CODE(IOCTL_CDROM_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CDROM_GET_LAST_SESSION \
CTL_CODE(IOCTL_CDROM_BASE, 0x000E, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CDROM_GET_VOLUME \
CTL_CODE(IOCTL_CDROM_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CDROM_PAUSE_AUDIO \
CTL_CODE(IOCTL_CDROM_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CDROM_PLAY_AUDIO_MSF \
CTL_CODE(IOCTL_CDROM_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CDROM_RAW_READ \
CTL_CODE(IOCTL_CDROM_BASE, 0x000F, METHOD_OUT_DIRECT, FILE_READ_ACCESS)
#define IOCTL_CDROM_READ_Q_CHANNEL \
CTL_CODE(IOCTL_CDROM_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CDROM_READ_TOC \
CTL_CODE(IOCTL_CDROM_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CDROM_READ_TOC_EX \
CTL_CODE(IOCTL_CDROM_BASE, 0x0015, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CDROM_RESUME_AUDIO \
CTL_CODE(IOCTL_CDROM_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CDROM_SEEK_AUDIO_MSF \
CTL_CODE(IOCTL_CDROM_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CDROM_SET_VOLUME \
CTL_CODE(IOCTL_CDROM_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CDROM_SIMBAD \
CTL_CODE(IOCTL_CDROM_BASE, 0x1003, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CDROM_STOP_AUDIO \
CTL_CODE(IOCTL_CDROM_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
#define MAXIMUM_NUMBER_TRACKS 100
#define MAXIMUM_CDROM_SIZE 804
#define MINIMUM_CDROM_READ_TOC_EX_SIZE 2
typedef struct _TRACK_DATA {
UCHAR Reserved;
UCHAR Control : 4;
UCHAR Adr : 4;
UCHAR TrackNumber;
UCHAR Reserved1;
UCHAR Address[4];
} TRACK_DATA, *PTRACK_DATA;
/* CDROM_DISK_DATA.DiskData flags */
#define CDROM_DISK_AUDIO_TRACK 0x00000001
#define CDROM_DISK_DATA_TRACK 0x00000002
typedef struct _CDROM_DISK_DATA {
ULONG DiskData;
} CDROM_DISK_DATA, *PCDROM_DISK_DATA;
typedef struct _CDROM_PLAY_AUDIO_MSF {
UCHAR StartingM;
UCHAR StartingS;
UCHAR StartingF;
UCHAR EndingM;
UCHAR EndingS;
UCHAR EndingF;
} CDROM_PLAY_AUDIO_MSF, *PCDROM_PLAY_AUDIO_MSF;
/* CDROM_READ_TOC_EX.Format constants */
#define CDROM_READ_TOC_EX_FORMAT_TOC 0x00
#define CDROM_READ_TOC_EX_FORMAT_SESSION 0x01
#define CDROM_READ_TOC_EX_FORMAT_FULL_TOC 0x02
#define CDROM_READ_TOC_EX_FORMAT_PMA 0x03
#define CDROM_READ_TOC_EX_FORMAT_ATIP 0x04
#define CDROM_READ_TOC_EX_FORMAT_CDTEXT 0x05
typedef struct _CDROM_READ_TOC_EX {
UCHAR Format : 4;
UCHAR Reserved1 : 3;
UCHAR Msf : 1;
UCHAR SessionTrack;
UCHAR Reserved2;
UCHAR Reserved3;
} CDROM_READ_TOC_EX, *PCDROM_READ_TOC_EX;
typedef struct _CDROM_SEEK_AUDIO_MSF {
UCHAR M;
UCHAR S;
UCHAR F;
} CDROM_SEEK_AUDIO_MSF, *PCDROM_SEEK_AUDIO_MSF;
/* CDROM_SUB_Q_DATA_FORMAT.Format constants */
#define IOCTL_CDROM_SUB_Q_CHANNEL 0x00
#define IOCTL_CDROM_CURRENT_POSITION 0x01
#define IOCTL_CDROM_MEDIA_CATALOG 0x02
#define IOCTL_CDROM_TRACK_ISRC 0x03
typedef struct _CDROM_SUB_Q_DATA_FORMAT {
UCHAR Format;
UCHAR Track;
} CDROM_SUB_Q_DATA_FORMAT, *PCDROM_SUB_Q_DATA_FORMAT;
typedef struct _CDROM_TOC {
UCHAR Length[2];
UCHAR FirstTrack;
UCHAR LastTrack;
TRACK_DATA TrackData[MAXIMUM_NUMBER_TRACKS];
} CDROM_TOC, *PCDROM_TOC;
#define CDROM_TOC_SIZE sizeof(CDROM_TOC)
typedef struct _CDROM_TOC_ATIP_DATA_BLOCK {
UCHAR CdrwReferenceSpeed : 3;
UCHAR Reserved3 : 1;
UCHAR WritePower : 3;
UCHAR True1 : 1;
UCHAR Reserved4 : 6;
UCHAR UnrestrictedUse : 1;
UCHAR Reserved5 : 1;
UCHAR A3Valid : 1;
UCHAR A2Valid : 1;
UCHAR A1Valid : 1;
UCHAR Reserved6 : 3;
UCHAR IsCdrw : 1;
UCHAR True2 : 1;
UCHAR Reserved7;
UCHAR LeadInMsf[3];
UCHAR Reserved8;
UCHAR LeadOutMsf[3];
UCHAR Reserved9;
UCHAR A1Values[3];
UCHAR Reserved10;
UCHAR A2Values[3];
UCHAR Reserved11;
UCHAR A3Values[3];
UCHAR Reserved12;
} CDROM_TOC_ATIP_DATA_BLOCK, *PCDROM_TOC_ATIP_DATA_BLOCK;
typedef struct _CDROM_TOC_ATIP_DATA {
UCHAR Length[2];
UCHAR Reserved1;
UCHAR Reserved2;
CDROM_TOC_ATIP_DATA_BLOCK Descriptors[0];
} CDROM_TOC_ATIP_DATA, *PCDROM_TOC_ATIP_DATA;
/* CDROM_TOC_CD_TEXT_DATA_BLOCK.PackType constants */
#define CDROM_CD_TEXT_PACK_ALBUM_NAME 0x80
#define CDROM_CD_TEXT_PACK_PERFORMER 0x81
#define CDROM_CD_TEXT_PACK_SONGWRITER 0x82
#define CDROM_CD_TEXT_PACK_COMPOSER 0x83
#define CDROM_CD_TEXT_PACK_ARRANGER 0x84
#define CDROM_CD_TEXT_PACK_MESSAGES 0x85
#define CDROM_CD_TEXT_PACK_DISC_ID 0x86
#define CDROM_CD_TEXT_PACK_GENRE 0x87
#define CDROM_CD_TEXT_PACK_TOC_INFO 0x88
#define CDROM_CD_TEXT_PACK_TOC_INFO2 0x89
#define CDROM_CD_TEXT_PACK_UPC_EAN 0x8e
#define CDROM_CD_TEXT_PACK_SIZE_INFO 0x8f
typedef struct _CDROM_TOC_CD_TEXT_DATA_BLOCK {
UCHAR PackType;
UCHAR TrackNumber : 7;
UCHAR ExtensionFlag : 1;
UCHAR SequenceNumber;
UCHAR CharacterPosition : 4;
UCHAR BlockNumber : 3;
UCHAR Unicode : 1;
union {
UCHAR Text[12];
WCHAR WText[6];
};
UCHAR CRC[2];
} CDROM_TOC_CD_TEXT_DATA_BLOCK, *PCDROM_TOC_CD_TEXT_DATA_BLOCK;
typedef struct _CDROM_TOC_CD_TEXT_DATA {
UCHAR Length[2];
UCHAR Reserved1;
UCHAR Reserved2;
CDROM_TOC_CD_TEXT_DATA_BLOCK Descriptors[0];
} CDROM_TOC_CD_TEXT_DATA, *PCDROM_TOC_CD_TEXT_DATA;
/* CDROM_TOC_FULL_TOC_DATA_BLOCK.Adr constants */
#define ADR_NO_MODE_INFORMATION 0x0
#define ADR_ENCODES_CURRENT_POSITION 0x1
#define ADR_ENCODES_MEDIA_CATALOG 0x2
#define ADR_ENCODES_ISRC 0x3
typedef struct _CDROM_TOC_FULL_TOC_DATA_BLOCK {
UCHAR SessionNumber;
UCHAR Control : 4;
UCHAR Adr : 4;
UCHAR Reserved1;
UCHAR Point;
UCHAR MsfExtra[3];
UCHAR Zero;
UCHAR Msf[3];
} CDROM_TOC_FULL_TOC_DATA_BLOCK, *PCDROM_TOC_FULL_TOC_DATA_BLOCK;
typedef struct _CDROM_TOC_FULL_TOC_DATA {
UCHAR Length[2];
UCHAR FirstCompleteSession;
UCHAR LastCompleteSession;
CDROM_TOC_FULL_TOC_DATA_BLOCK Descriptors[0];
} CDROM_TOC_FULL_TOC_DATA, *PCDROM_TOC_FULL_TOC_DATA;
typedef struct _CDROM_TOC_PMA_DATA {
UCHAR Length[2];
UCHAR Reserved1;
UCHAR Reserved2;
CDROM_TOC_FULL_TOC_DATA_BLOCK Descriptors[0];
} CDROM_TOC_PMA_DATA, *PCDROM_TOC_PMA_DATA;
/* SUB_Q_HEADER.AudioStatus constants */
#define AUDIO_STATUS_NOT_SUPPORTED 0x00
#define AUDIO_STATUS_IN_PROGRESS 0x11
#define AUDIO_STATUS_PAUSED 0x12
#define AUDIO_STATUS_PLAY_COMPLETE 0x13
#define AUDIO_STATUS_PLAY_ERROR 0x14
#define AUDIO_STATUS_NO_STATUS 0x15
typedef struct _SUB_Q_HEADER {
UCHAR Reserved;
UCHAR AudioStatus;
UCHAR DataLength[2];
} SUB_Q_HEADER, *PSUB_Q_HEADER;
typedef struct _SUB_Q_MEDIA_CATALOG_NUMBER {
SUB_Q_HEADER Header;
UCHAR FormatCode;
UCHAR Reserved[3];
UCHAR Reserved1 : 7;
UCHAR Mcval :1;
UCHAR MediaCatalog[15];
} SUB_Q_MEDIA_CATALOG_NUMBER, *PSUB_Q_MEDIA_CATALOG_NUMBER;
typedef struct _SUB_Q_TRACK_ISRC {
SUB_Q_HEADER Header;
UCHAR FormatCode;
UCHAR Reserved0;
UCHAR Track;
UCHAR Reserved1;
UCHAR Reserved2 : 7;
UCHAR Tcval : 1;
UCHAR TrackIsrc[15];
} SUB_Q_TRACK_ISRC, *PSUB_Q_TRACK_ISRC;
typedef struct _SUB_Q_CURRENT_POSITION {
SUB_Q_HEADER Header;
UCHAR FormatCode;
UCHAR Control : 4;
UCHAR ADR : 4;
UCHAR TrackNumber;
UCHAR IndexNumber;
UCHAR AbsoluteAddress[4];
UCHAR TrackRelativeAddress[4];
} SUB_Q_CURRENT_POSITION, *PSUB_Q_CURRENT_POSITION;
typedef union _SUB_Q_CHANNEL_DATA {
SUB_Q_CURRENT_POSITION CurrentPosition;
SUB_Q_MEDIA_CATALOG_NUMBER MediaCatalog;
SUB_Q_TRACK_ISRC TrackIsrc;
} SUB_Q_CHANNEL_DATA, *PSUB_Q_CHANNEL_DATA;
/* CDROM_AUDIO_CONTROL.LbaFormat constants */
#define AUDIO_WITH_PREEMPHASIS 0x1
#define DIGITAL_COPY_PERMITTED 0x2
#define AUDIO_DATA_TRACK 0x4
#define TWO_FOUR_CHANNEL_AUDIO 0x8
typedef struct _CDROM_AUDIO_CONTROL {
UCHAR LbaFormat;
USHORT LogicalBlocksPerSecond;
} CDROM_AUDIO_CONTROL, *PCDROM_AUDIO_CONTROL;
typedef struct _VOLUME_CONTROL {
UCHAR PortVolume[4];
} VOLUME_CONTROL, *PVOLUME_CONTROL;
typedef enum _TRACK_MODE_TYPE {
YellowMode2,
XAForm2,
CDDA
} TRACK_MODE_TYPE, *PTRACK_MODE_TYPE;
typedef struct __RAW_READ_INFO {
LARGE_INTEGER DiskOffset;
ULONG SectorCount;
TRACK_MODE_TYPE TrackMode;
} RAW_READ_INFO, *PRAW_READ_INFO;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDCDRM_H */

View File

@ -0,0 +1,214 @@
/*
* ntddcdvd.h
*
* DVD IOCTL interface.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDCDVD_H
#define __NTDDCDVD_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "ntddstor.h"
#define IOCTL_DVD_BASE FILE_DEVICE_DVD
#define IOCTL_DVD_END_SESSION \
CTL_CODE(IOCTL_DVD_BASE, 0x0403, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DVD_GET_REGION \
CTL_CODE(IOCTL_DVD_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DVD_READ_KEY \
CTL_CODE(IOCTL_DVD_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DVD_READ_STRUCTURE \
CTL_CODE(IOCTL_DVD_BASE, 0x0450, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DVD_SEND_KEY \
CTL_CODE(IOCTL_DVD_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DVD_START_SESSION \
CTL_CODE(IOCTL_DVD_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DVD_SET_READ_AHEAD \
CTL_CODE(IOCTL_DVD_BASE, 0x0404, METHOD_BUFFERED, FILE_READ_ACCESS)
typedef ULONG DVD_SESSION_ID, *PDVD_SESSION_ID;
typedef struct _STORAGE_SET_READ_AHEAD {
LARGE_INTEGER TriggerAddress;
LARGE_INTEGER TargetAddress;
} STORAGE_SET_READ_AHEAD, *PSTORAGE_SET_READ_AHEAD;
typedef enum DVD_STRUCTURE_FORMAT {
DvdPhysicalDescriptor,
DvdCopyrightDescriptor,
DvdDiskKeyDescriptor,
DvdBCADescriptor,
DvdManufacturerDescriptor,
DvdMaxDescriptor
} DVD_STRUCTURE_FORMAT, *PDVD_STRUCTURE_FORMAT;
typedef struct DVD_READ_STRUCTURE {
LARGE_INTEGER BlockByteOffset;
DVD_STRUCTURE_FORMAT Format;
DVD_SESSION_ID SessionId;
UCHAR LayerNumber;
} DVD_READ_STRUCTURE, *PDVD_READ_STRUCTURE;
typedef struct _DVD_DESCRIPTOR_HEADER {
USHORT Length;
UCHAR Reserved[2];
UCHAR Data[0];
} DVD_DESCRIPTOR_HEADER, *PDVD_DESCRIPTOR_HEADER;
typedef struct _DVD_LAYER_DESCRIPTOR {
UCHAR BookVersion : 4;
UCHAR BookType : 4;
UCHAR MinimumRate : 4;
UCHAR DiskSize : 4;
UCHAR LayerType : 4;
UCHAR TrackPath : 1;
UCHAR NumberOfLayers : 2;
UCHAR Reserved1 : 1;
UCHAR TrackDensity : 4;
UCHAR LinearDensity : 4;
ULONG StartingDataSector;
ULONG EndDataSector;
ULONG EndLayerZeroSector;
UCHAR Reserved5 : 7;
UCHAR BCAFlag : 1;
UCHAR Reserved6;
} DVD_LAYER_DESCRIPTOR, *PDVD_LAYER_DESCRIPTOR;
typedef struct _DVD_COPYRIGHT_DESCRIPTOR {
UCHAR CopyrightProtectionType;
UCHAR RegionManagementInformation;
USHORT Reserved;
} DVD_COPYRIGHT_DESCRIPTOR, *PDVD_COPYRIGHT_DESCRIPTOR;
typedef struct _DVD_DISK_KEY_DESCRIPTOR {
UCHAR DiskKeyData[2048];
} DVD_DISK_KEY_DESCRIPTOR, *PDVD_DISK_KEY_DESCRIPTOR;
typedef enum _DVD_KEY_TYPE {
DvdChallengeKey = 0x01,
DvdBusKey1,
DvdBusKey2,
DvdTitleKey,
DvdAsf,
DvdSetRpcKey = 0x6,
DvdGetRpcKey = 0x8,
DvdDiskKey = 0x80,
DvdInvalidateAGID = 0x3f
} DVD_KEY_TYPE;
typedef struct _DVD_COPY_PROTECT_KEY {
ULONG KeyLength;
DVD_SESSION_ID SessionId;
DVD_KEY_TYPE KeyType;
ULONG KeyFlags;
union {
HANDLE FileHandle;
LARGE_INTEGER TitleOffset;
} Parameters;
UCHAR KeyData[0];
} DVD_COPY_PROTECT_KEY, *PDVD_COPY_PROTECT_KEY;
#define DVD_CHALLENGE_KEY_LENGTH (12 + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_BUS_KEY_LENGTH (8 + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_TITLE_KEY_LENGTH (8 + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_DISK_KEY_LENGTH (2048 + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_RPC_KEY_LENGTH (sizeof(DVD_RPC_KEY) + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_SET_RPC_KEY_LENGTH (sizeof(DVD_SET_RPC_KEY) + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_ASF_LENGTH (sizeof(DVD_ASF) + sizeof(DVD_COPY_PROTECT_KEY))
#define DVD_END_ALL_SESSIONS ((DVD_SESSION_ID) 0xffffffff)
#define DVD_CGMS_RESERVED_MASK 0x00000078
#define DVD_CGMS_COPY_PROTECT_MASK 0x00000018
#define DVD_CGMS_COPY_PERMITTED 0x00000000
#define DVD_CGMS_COPY_ONCE 0x00000010
#define DVD_CGMS_NO_COPY 0x00000018
#define DVD_COPYRIGHT_MASK 0x00000040
#define DVD_NOT_COPYRIGHTED 0x00000000
#define DVD_COPYRIGHTED 0x00000040
#define DVD_SECTOR_PROTECT_MASK 0x00000020
#define DVD_SECTOR_NOT_PROTECTED 0x00000000
#define DVD_SECTOR_PROTECTED 0x00000020
typedef struct _DVD_BCA_DESCRIPTOR {
UCHAR BCAInformation[0];
} DVD_BCA_DESCRIPTOR, *PDVD_BCA_DESCRIPTOR;
typedef struct _DVD_MANUFACTURER_DESCRIPTOR {
UCHAR ManufacturingInformation[2048];
} DVD_MANUFACTURER_DESCRIPTOR, *PDVD_MANUFACTURER_DESCRIPTOR;
typedef struct _DVD_RPC_KEY {
UCHAR UserResetsAvailable : 3;
UCHAR ManufacturerResetsAvailable : 3;
UCHAR TypeCode : 2;
UCHAR RegionMask;
UCHAR RpcScheme;
UCHAR Reserved2[1];
} DVD_RPC_KEY, *PDVD_RPC_KEY;
typedef struct _DVD_SET_RPC_KEY {
UCHAR PreferredDriveRegionCode;
UCHAR Reserved[3];
} DVD_SET_RPC_KEY, *PDVD_SET_RPC_KEY;
typedef struct _DVD_ASF {
UCHAR Reserved0[3];
UCHAR SuccessFlag : 1;
UCHAR Reserved1 : 7;
} DVD_ASF, *PDVD_ASF;
typedef struct _DVD_REGION {
UCHAR CopySystem;
UCHAR RegionData;
UCHAR SystemRegion;
UCHAR ResetCount;
} DVD_REGION, *PDVD_REGION;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDCDVD_H */

View File

@ -0,0 +1,358 @@
/*
* ntddchgr.h
*
* Media changer IOCTL interface.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDCHGR_H
#define __NTDDCHGR_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "ntddstor.h"
#define DD_CHANGER_DEVICE_NAME "\\Device\\Changer"
#define DD_CHANGER_DEVICE_NAME_U L"\\Device\\Changer"
#define IOCTL_CHANGER_BASE FILE_DEVICE_CHANGER
#define IOCTL_CHANGER_EXCHANGE_MEDIUM \
CTL_CODE(IOCTL_CHANGER_BASE, 0x0008, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CHANGER_GET_ELEMENT_STATUS \
CTL_CODE(IOCTL_CHANGER_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_CHANGER_GET_PARAMETERS \
CTL_CODE(IOCTL_CHANGER_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CHANGER_GET_PRODUCT_DATA \
CTL_CODE(IOCTL_CHANGER_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CHANGER_GET_STATUS \
CTL_CODE(IOCTL_CHANGER_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS \
CTL_CODE(IOCTL_CHANGER_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CHANGER_MOVE_MEDIUM \
CTL_CODE(IOCTL_CHANGER_BASE, 0x0009, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CHANGER_QUERY_VOLUME_TAGS \
CTL_CODE(IOCTL_CHANGER_BASE, 0x000B, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_CHANGER_REINITIALIZE_TRANSPORT \
CTL_CODE(IOCTL_CHANGER_BASE, 0x000A, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_CHANGER_SET_ACCESS \
CTL_CODE(IOCTL_CHANGER_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_CHANGER_SET_POSITION \
CTL_CODE(IOCTL_CHANGER_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS)
#define MAX_VOLUME_ID_SIZE 36
#define MAX_VOLUME_TEMPLATE_SIZE 40
typedef enum _ELEMENT_TYPE {
AllElements,
ChangerTransport,
ChangerSlot,
ChangerIEPort,
ChangerDrive,
ChangerDoor,
ChangerKeypad,
ChangerMaxElement
} ELEMENT_TYPE, *PELEMENT_TYPE;
typedef struct _CHANGER_ELEMENT {
ELEMENT_TYPE ElementType;
ULONG ElementAddress;
} CHANGER_ELEMENT, *PCHANGER_ELEMENT;
typedef struct _CHANGER_ELEMENT_LIST {
CHANGER_ELEMENT Element;
ULONG NumberOfElements;
} CHANGER_ELEMENT_LIST, *PCHANGER_ELEMENT_LIST;
typedef struct _CHANGER_INITIALIZE_ELEMENT_STATUS {
CHANGER_ELEMENT_LIST ElementList;
BOOLEAN BarCodeScan;
} CHANGER_INITIALIZE_ELEMENT_STATUS, *PCHANGER_INITIALIZE_ELEMENT_STATUS;
typedef struct _CHANGER_READ_ELEMENT_STATUS {
CHANGER_ELEMENT_LIST ElementList;
BOOLEAN VolumeTagInfo;
} CHANGER_READ_ELEMENT_STATUS, *PCHANGER_READ_ELEMENT_STATUS;
typedef struct _CHANGER_SET_POSITION {
CHANGER_ELEMENT Transport;
CHANGER_ELEMENT Destination;
BOOLEAN Flip;
} CHANGER_SET_POSITION, *PCHANGER_SET_POSITION;
typedef struct _CHANGER_EXCHANGE_MEDIUM {
CHANGER_ELEMENT Transport;
CHANGER_ELEMENT Source;
CHANGER_ELEMENT Destination1;
CHANGER_ELEMENT Destination2;
BOOLEAN Flip1;
BOOLEAN Flip2;
} CHANGER_EXCHANGE_MEDIUM, *PCHANGER_EXCHANGE_MEDIUM;
typedef struct _CHANGER_MOVE_MEDIUM {
CHANGER_ELEMENT Transport;
CHANGER_ELEMENT Source;
CHANGER_ELEMENT Destination;
BOOLEAN Flip;
} CHANGER_MOVE_MEDIUM, *PCHANGER_MOVE_MEDIUM;
#define VENDOR_ID_LENGTH 8
#define PRODUCT_ID_LENGTH 16
#define REVISION_LENGTH 4
#define SERIAL_NUMBER_LENGTH 32
typedef struct _CHANGER_PRODUCT_DATA {
UCHAR VendorId[VENDOR_ID_LENGTH];
UCHAR ProductId[PRODUCT_ID_LENGTH];
UCHAR Revision[REVISION_LENGTH];
UCHAR SerialNumber[SERIAL_NUMBER_LENGTH];
UCHAR DeviceType;
} CHANGER_PRODUCT_DATA, *PCHANGER_PRODUCT_DATA;
/* CHANGER_SET_ACCESS.Control constants */
#define LOCK_ELEMENT 0
#define UNLOCK_ELEMENT 1
#define EXTEND_IEPORT 2
#define RETRACT_IEPORT 3
typedef struct _CHANGER_SET_ACCESS {
CHANGER_ELEMENT Element;
ULONG Control;
} CHANGER_SET_ACCESS, *PCHANGER_SET_ACCESS;
typedef enum _CHANGER_DEVICE_PROBLEM_TYPE {
DeviceProblemNone,
DeviceProblemHardware,
DeviceProblemCHMError,
DeviceProblemDoorOpen,
DeviceProblemCalibrationError,
DeviceProblemTargetFailure,
DeviceProblemCHMMoveError,
DeviceProblemCHMZeroError,
DeviceProblemCartridgeInsertError,
DeviceProblemPositionError,
DeviceProblemSensorError,
DeviceProblemCartridgeEjectError,
DeviceProblemGripperError,
DeviceProblemDriveError
} CHANGER_DEVICE_PROBLEM_TYPE, *PCHANGER_DEVICE_PROBLEM_TYPE;
/* CHANGER_ELEMENT_STATUS(_EX).Flags constants */
#define ELEMENT_STATUS_FULL 0x00000001
#define ELEMENT_STATUS_IMPEXP 0x00000002
#define ELEMENT_STATUS_EXCEPT 0x00000004
#define ELEMENT_STATUS_ACCESS 0x00000008
#define ELEMENT_STATUS_EXENAB 0x00000010
#define ELEMENT_STATUS_INENAB 0x00000020
#define ELEMENT_STATUS_PRODUCT_DATA 0x00000040
#define ELEMENT_STATUS_LUN_VALID 0x00001000
#define ELEMENT_STATUS_ID_VALID 0x00002000
#define ELEMENT_STATUS_NOT_BUS 0x00008000
#define ELEMENT_STATUS_INVERT 0x00400000
#define ELEMENT_STATUS_SVALID 0x00800000
#define ELEMENT_STATUS_PVOLTAG 0x10000000
#define ELEMENT_STATUS_AVOLTAG 0x20000000
/* CHANGER_ELEMENT_STATUS(_EX).ExceptionCode constants */
#define ERROR_LABEL_UNREADABLE 0x00000001
#define ERROR_LABEL_QUESTIONABLE 0x00000002
#define ERROR_SLOT_NOT_PRESENT 0x00000004
#define ERROR_DRIVE_NOT_INSTALLED 0x00000008
#define ERROR_TRAY_MALFUNCTION 0x00000010
#define ERROR_INIT_STATUS_NEEDED 0x00000011
#define ERROR_UNHANDLED_ERROR 0xFFFFFFFF
typedef struct _CHANGER_ELEMENT_STATUS {
CHANGER_ELEMENT Element;
CHANGER_ELEMENT SrcElementAddress;
ULONG Flags;
ULONG ExceptionCode;
UCHAR TargetId;
UCHAR Lun;
USHORT Reserved;
UCHAR PrimaryVolumeID[MAX_VOLUME_ID_SIZE];
UCHAR AlternateVolumeID[MAX_VOLUME_ID_SIZE];
} CHANGER_ELEMENT_STATUS, *PCHANGER_ELEMENT_STATUS;
typedef struct _CHANGER_ELEMENT_STATUS_EX {
CHANGER_ELEMENT Element;
CHANGER_ELEMENT SrcElementAddress;
ULONG Flags;
ULONG ExceptionCode;
UCHAR TargetId;
UCHAR Lun;
USHORT Reserved;
UCHAR PrimaryVolumeID[MAX_VOLUME_ID_SIZE];
UCHAR AlternateVolumeID[MAX_VOLUME_ID_SIZE];
UCHAR VendorIdentification[VENDOR_ID_LENGTH];
UCHAR ProductIdentification[PRODUCT_ID_LENGTH];
UCHAR SerialNumber[SERIAL_NUMBER_LENGTH];
} CHANGER_ELEMENT_STATUS_EX, *PCHANGER_ELEMENT_STATUS_EX;
/* CHANGER_SEND_VOLUME_TAG_INFORMATION.ActionCode constants */
#define SEARCH_ALL 0x0
#define SEARCH_PRIMARY 0x1
#define SEARCH_ALTERNATE 0x2
#define SEARCH_ALL_NO_SEQ 0x4
#define SEARCH_PRI_NO_SEQ 0x5
#define SEARCH_ALT_NO_SEQ 0x6
#define ASSERT_PRIMARY 0x8
#define ASSERT_ALTERNATE 0x9
#define REPLACE_PRIMARY 0xA
#define REPLACE_ALTERNATE 0xB
#define UNDEFINE_PRIMARY 0xC
#define UNDEFINE_ALTERNATE 0xD
typedef struct _CHANGER_SEND_VOLUME_TAG_INFORMATION {
CHANGER_ELEMENT StartingElement;
ULONG ActionCode;
UCHAR VolumeIDTemplate[MAX_VOLUME_TEMPLATE_SIZE];
} CHANGER_SEND_VOLUME_TAG_INFORMATION, *PCHANGER_SEND_VOLUME_TAG_INFORMATION;
/* GET_CHANGER_PARAMETERS.Features0 constants */
#define CHANGER_BAR_CODE_SCANNER_INSTALLED 0x00000001
#define CHANGER_INIT_ELEM_STAT_WITH_RANGE 0x00000002
#define CHANGER_CLOSE_IEPORT 0x00000004
#define CHANGER_OPEN_IEPORT 0x00000008
#define CHANGER_STATUS_NON_VOLATILE 0x00000010
#define CHANGER_EXCHANGE_MEDIA 0x00000020
#define CHANGER_CLEANER_SLOT 0x00000040
#define CHANGER_LOCK_UNLOCK 0x00000080
#define CHANGER_CARTRIDGE_MAGAZINE 0x00000100
#define CHANGER_MEDIUM_FLIP 0x00000200
#define CHANGER_POSITION_TO_ELEMENT 0x00000400
#define CHANGER_REPORT_IEPORT_STATE 0x00000800
#define CHANGER_STORAGE_DRIVE 0x00001000
#define CHANGER_STORAGE_IEPORT 0x00002000
#define CHANGER_STORAGE_SLOT 0x00004000
#define CHANGER_STORAGE_TRANSPORT 0x00008000
#define CHANGER_DRIVE_CLEANING_REQUIRED 0x00010000
#define CHANGER_PREDISMOUNT_EJECT_REQUIRED 0x00020000
#define CHANGER_CLEANER_ACCESS_NOT_VALID 0x00040000
#define CHANGER_PREMOUNT_EJECT_REQUIRED 0x00080000
#define CHANGER_VOLUME_IDENTIFICATION 0x00100000
#define CHANGER_VOLUME_SEARCH 0x00200000
#define CHANGER_VOLUME_ASSERT 0x00400000
#define CHANGER_VOLUME_REPLACE 0x00800000
#define CHANGER_VOLUME_UNDEFINE 0x01000000
#define CHANGER_SERIAL_NUMBER_VALID 0x04000000
#define CHANGER_DEVICE_REINITIALIZE_CAPABLE 0x08000000
#define CHANGER_KEYPAD_ENABLE_DISABLE 0x10000000
#define CHANGER_DRIVE_EMPTY_ON_DOOR_ACCESS 0x20000000
#define CHANGER_RESERVED_BIT 0x80000000
/* GET_CHANGER_PARAMETERS.Features1 constants */
#define CHANGER_PREDISMOUNT_ALIGN_TO_SLOT 0x80000001
#define CHANGER_PREDISMOUNT_ALIGN_TO_DRIVE 0x80000002
#define CHANGER_CLEANER_AUTODISMOUNT 0x80000004
#define CHANGER_TRUE_EXCHANGE_CAPABLE 0x80000008
#define CHANGER_SLOTS_USE_TRAYS 0x80000010
#define CHANGER_RTN_MEDIA_TO_ORIGINAL_ADDR 0x80000020
#define CHANGER_CLEANER_OPS_NOT_SUPPORTED 0x80000040
#define CHANGER_IEPORT_USER_CONTROL_OPEN 0x80000080
#define CHANGER_IEPORT_USER_CONTROL_CLOSE 0x80000100
#define CHANGER_MOVE_EXTENDS_IEPORT 0x80000200
#define CHANGER_MOVE_RETRACTS_IEPORT 0x80000400
/* GET_CHANGER_PARAMETERS.MoveFrom,ExchangeFrom,PositionCapabilities constants */
#define CHANGER_TO_TRANSPORT 0x01
#define CHANGER_TO_SLOT 0x02
#define CHANGER_TO_IEPORT 0x04
#define CHANGER_TO_DRIVE 0x08
/* GET_CHANGER_PARAMETERS.LockUnlockCapabilities constants */
#define LOCK_UNLOCK_IEPORT 0x01
#define LOCK_UNLOCK_DOOR 0x02
#define LOCK_UNLOCK_KEYPAD 0x04
typedef struct _GET_CHANGER_PARAMETERS {
ULONG Size;
USHORT NumberTransportElements;
USHORT NumberStorageElements;
USHORT NumberCleanerSlots;
USHORT NumberIEElements;
USHORT NumberDataTransferElements;
USHORT NumberOfDoors;
USHORT FirstSlotNumber;
USHORT FirstDriveNumber;
USHORT FirstTransportNumber;
USHORT FirstIEPortNumber;
USHORT FirstCleanerSlotAddress;
USHORT MagazineSize;
ULONG DriveCleanTimeout;
ULONG Features0;
ULONG Features1;
UCHAR MoveFromTransport;
UCHAR MoveFromSlot;
UCHAR MoveFromIePort;
UCHAR MoveFromDrive;
UCHAR ExchangeFromTransport;
UCHAR ExchangeFromSlot;
UCHAR ExchangeFromIePort;
UCHAR ExchangeFromDrive;
UCHAR LockUnlockCapabilities;
UCHAR PositionCapabilities;
UCHAR Reserved1[2];
ULONG Reserved2[2];
} GET_CHANGER_PARAMETERS, * PGET_CHANGER_PARAMETERS;
typedef struct READ_ELEMENT_ADDRESS_INFO {
ULONG NumberOfElements;
CHANGER_ELEMENT_STATUS ElementStatus[1];
} READ_ELEMENT_ADDRESS_INFO, *PREAD_ELEMENT_ADDRESS_INFO;
typedef struct _TAPE_WMI_OPERATIONS {
ULONG Method;
ULONG DataBufferSize;
PVOID DataBuffer;
} TAPE_WMI_OPERATIONS, *PTAPE_WMI_OPERATIONS;
typedef struct _WMI_CHANGER_PROBLEM_DEVICE_ERROR {
ULONG ChangerProblemType;
} WMI_CHANGER_PROBLEM_DEVICE_ERROR, *PWMI_CHANGER_PROBLEM_DEVICE_ERROR;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDCHGR_H */

View File

@ -0,0 +1,522 @@
/*
* ntdddisk.h
*
* Disk IOCTL interface.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDDISK_H
#define __NTDDDISK_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "ntddstor.h"
#define DD_DISK_DEVICE_NAME "\\Device\\UNKNOWN"
#define DD_DISK_DEVICE_NAME_U L"\\Device\\UNKNOWN"
#define IOCTL_DISK_BASE FILE_DEVICE_DISK
#define IOCTL_DISK_CHECK_VERIFY \
CTL_CODE(IOCTL_DISK_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DISK_CONTROLLER_NUMBER \
CTL_CODE(IOCTL_DISK_BASE, 0x0011, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISK_CREATE_DISK \
CTL_CODE(IOCTL_DISK_BASE, 0x0016, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_DELETE_DRIVE_LAYOUT \
CTL_CODE(IOCTL_DISK_BASE, 0x0040, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_FIND_NEW_DEVICES \
CTL_CODE(IOCTL_DISK_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DISK_FORMAT_TRACKS \
CTL_CODE(IOCTL_DISK_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_FORMAT_TRACKS_EX \
CTL_CODE(IOCTL_DISK_BASE, 0x000b, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_GET_CACHE_INFORMATION \
CTL_CODE(IOCTL_DISK_BASE, 0x0035, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DISK_GET_DRIVE_GEOMETRY \
CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISK_GET_DRIVE_GEOMETRY_EX \
CTL_CODE(IOCTL_DISK_BASE, 0x0028, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISK_GET_DRIVE_LAYOUT \
CTL_CODE(IOCTL_DISK_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DISK_GET_DRIVE_LAYOUT_EX \
CTL_CODE(IOCTL_DISK_BASE, 0x0014, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISK_GET_MEDIA_TYPES \
CTL_CODE(IOCTL_DISK_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISK_GET_LENGTH_INFO \
CTL_CODE(IOCTL_DISK_BASE, 0x0017, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DISK_GET_PARTITION_INFO \
CTL_CODE(IOCTL_DISK_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DISK_GET_PARTITION_INFO_EX \
CTL_CODE(IOCTL_DISK_BASE, 0x0012, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISK_GROW_PARTITION \
CTL_CODE(IOCTL_DISK_BASE, 0x0034, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_INTERNAL_CLEAR_VERIFY \
CTL_CODE(IOCTL_DISK_BASE, 0x0101, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_DISK_INTERNAL_SET_VERIFY \
CTL_CODE(IOCTL_DISK_BASE, 0x0100, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_DISK_IS_WRITABLE \
CTL_CODE(IOCTL_DISK_BASE, 0x0009, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISK_PERFORMANCE \
CTL_CODE(IOCTL_DISK_BASE, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISK_PERFORMANCE_OFF \
CTL_CODE(IOCTL_DISK_BASE, 0x0018, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_DISK_REASSIGN_BLOCKS \
CTL_CODE(IOCTL_DISK_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_RESERVE \
CTL_CODE(IOCTL_DISK_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_DISK_SET_CACHE_INFORMATION \
CTL_CODE(IOCTL_DISK_BASE, 0x0036, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_SET_DRIVE_LAYOUT \
CTL_CODE(IOCTL_DISK_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_SET_DRIVE_LAYOUT_EX \
CTL_CODE(IOCTL_DISK_BASE, 0x0015, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_SET_PARTITION_INFO \
CTL_CODE(IOCTL_DISK_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_SET_PARTITION_INFO_EX \
CTL_CODE(IOCTL_DISK_BASE, 0x0013, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_UPDATE_DRIVE_SIZE \
CTL_CODE(IOCTL_DISK_BASE, 0x0032, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_DISK_VERIFY \
CTL_CODE(IOCTL_DISK_BASE, 0x0005, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define SMART_GET_VERSION \
CTL_CODE(IOCTL_DISK_BASE, 0x0020, METHOD_BUFFERED, FILE_READ_ACCESS)
#define SMART_RCV_DRIVE_DATA \
CTL_CODE(IOCTL_DISK_BASE, 0x0022, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define SMART_SEND_DRIVE_COMMAND \
CTL_CODE(IOCTL_DISK_BASE, 0x0021, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define PARTITION_ENTRY_UNUSED 0x00
#define PARTITION_FAT_12 0x01
#define PARTITION_XENIX_1 0x02
#define PARTITION_XENIX_2 0x03
#define PARTITION_FAT_16 0x04
#define PARTITION_EXTENDED 0x05
#define PARTITION_HUGE 0x06
#define PARTITION_IFS 0x07
#define PARTITION_OS2BOOTMGR 0x0A
#define PARTITION_FAT32 0x0B
#define PARTITION_FAT32_XINT13 0x0C
#define PARTITION_XINT13 0x0E
#define PARTITION_XINT13_EXTENDED 0x0F
#define PARTITION_PREP 0x41
#define PARTITION_LDM 0x42
#define PARTITION_UNIX 0x63
#define VALID_NTFT 0xC0
#define PARTITION_NTFT 0x80
#define IsFTPartition( PartitionType ) \
(((PartitionType) & PARTITION_NTFT) && \
IsRecognizedPartition(PartitionType))
#define IsContainerPartition(PartitionType) \
(((PartitionType) == PARTITION_EXTENDED) || \
((PartitionType) == PARTITION_XINT13_EXTENDED))
#define IsRecognizedPartition(PartitionType) ( \
(((PartitionType) & PARTITION_NTFT) && (((PartitionType) & ~0xC0) == PARTITION_FAT_12)) || \
(((PartitionType) & PARTITION_NTFT) && (((PartitionType) & ~0xC0) == PARTITION_HUGE)) || \
(((PartitionType) & PARTITION_NTFT) && (((PartitionType) & ~0xC0) == PARTITION_IFS)) || \
(((PartitionType) & PARTITION_NTFT) && (((PartitionType) & ~0xC0) == PARTITION_FAT32)) || \
(((PartitionType) & PARTITION_NTFT) && (((PartitionType) & ~0xC0) == PARTITION_FAT32_XINT13)) || \
(((PartitionType) & PARTITION_NTFT) && (((PartitionType) & ~0xC0) == PARTITION_XINT13)) || \
((PartitionType) == PARTITION_FAT_12) || \
((PartitionType) == PARTITION_FAT_16) || \
((PartitionType) == PARTITION_HUGE) || \
((PartitionType) == PARTITION_IFS) || \
((PartitionType) == PARTITION_FAT32) || \
((PartitionType) == PARTITION_FAT32_XINT13) || \
((PartitionType) == PARTITION_XINT13))
#define WMI_DISK_GEOMETRY_GUID \
{0x25007f51, 0x57c2, 0x11d1, {0xa5, 0x28, 0x0, 0xa0, 0xc9, 0x6, 0x29, 0x10}}
typedef USHORT BAD_TRACK_NUMBER;
typedef USHORT *PBAD_TRACK_NUMBER;
typedef enum _MEDIA_TYPE {
Unknown,
F5_1Pt2_512,
F3_1Pt44_512,
F3_2Pt88_512,
F3_20Pt8_512,
F3_720_512,
F5_360_512,
F5_320_512,
F5_320_1024,
F5_180_512,
F5_160_512,
RemovableMedia,
FixedMedia,
F3_120M_512,
F3_640_512,
F5_640_512,
F5_720_512,
F3_1Pt2_512,
F3_1Pt23_1024,
F5_1Pt23_1024,
F3_128Mb_512,
F3_230Mb_512,
F8_256_128
} MEDIA_TYPE, *PMEDIA_TYPE;
typedef enum _DETECTION_TYPE {
DetectNone,
DetectInt13,
DetectExInt13
} DETECTION_TYPE;
typedef struct _DISK_CONTROLLER_NUMBER {
ULONG ControllerNumber;
ULONG DiskNumber;
} DISK_CONTROLLER_NUMBER, *PDISK_CONTROLLER_NUMBER;
typedef struct _DISK_INT13_INFO {
USHORT DriveSelect;
ULONG MaxCylinders;
USHORT SectorsPerTrack;
USHORT MaxHeads;
USHORT NumberDrives;
} DISK_INT13_INFO, *PDISK_INT13_INFO;
typedef struct _DISK_EX_INT13_INFO {
USHORT ExBufferSize;
USHORT ExFlags;
ULONG ExCylinders;
ULONG ExHeads;
ULONG ExSectorsPerTrack;
ULONG64 ExSectorsPerDrive;
USHORT ExSectorSize;
USHORT ExReserved;
} DISK_EX_INT13_INFO, *PDISK_EX_INT13_INFO;
typedef struct _DISK_DETECTION_INFO {
ULONG SizeOfDetectInfo;
DETECTION_TYPE DetectionType;
union {
struct {
DISK_INT13_INFO Int13;
DISK_EX_INT13_INFO ExInt13;
};
};
} DISK_DETECTION_INFO, *PDISK_DETECTION_INFO;
typedef struct _DISK_GEOMETRY {
LARGE_INTEGER Cylinders;
MEDIA_TYPE MediaType;
ULONG TracksPerCylinder;
ULONG SectorsPerTrack;
ULONG BytesPerSector;
} DISK_GEOMETRY, *PDISK_GEOMETRY;
typedef struct _DISK_GEOMETRY_EX {
DISK_GEOMETRY Geometry;
LARGE_INTEGER DiskSize;
UCHAR Data[1];
} DISK_GEOMETRY_EX, *PDISK_GEOMETRY_EX;
#define DiskGeometryGetPartition(Geometry) \
((PDISK_PARTITION_INFO)((Geometry) + 1))
#define DiskGeometryGetDetect(Geometry)\
((PDISK_DETECTION_INFO)(((PBYTE)DiskGeometryGetPartition(Geometry) + \
DiskGeometryGetPartition(Geometry)->SizeOfPartitionInfo)))
typedef struct _PARTITION_INFORMATION {
LARGE_INTEGER StartingOffset;
LARGE_INTEGER PartitionLength;
DWORD HiddenSectors;
DWORD PartitionNumber;
BYTE PartitionType;
BOOLEAN BootIndicator;
BOOLEAN RecognizedPartition;
BOOLEAN RewritePartition;
} PARTITION_INFORMATION, *PPARTITION_INFORMATION;
typedef struct _PARTITION_INFORMATION_GPT {
GUID PartitionType;
GUID PartitionId;
ULONG64 Attributes;
WCHAR Name [36];
} PARTITION_INFORMATION_GPT, *PPARTITION_INFORMATION_GPT;
typedef struct _DISK_PARTITION_INFO {
ULONG SizeOfPartitionInfo;
PARTITION_STYLE PartitionStyle;
union {
struct {
ULONG Signature;
ULONG CheckSum;
} Mbr;
struct {
GUID DiskId;
} Gpt;
};
} DISK_PARTITION_INFO, *PDISK_PARTITION_INFO;
typedef struct _DISK_PERFORMANCE {
LARGE_INTEGER BytesRead;
LARGE_INTEGER BytesWritten;
LARGE_INTEGER ReadTime;
LARGE_INTEGER WriteTime;
LARGE_INTEGER IdleTime;
ULONG ReadCount;
ULONG WriteCount;
ULONG QueueDepth;
ULONG SplitCount;
LARGE_INTEGER QueryTime;
ULONG StorageDeviceNumber;
WCHAR StorageManagerName[8];
} DISK_PERFORMANCE, *PDISK_PERFORMANCE;
typedef struct _PARTITION_INFORMATION_EX {
PARTITION_STYLE PartitionStyle;
LARGE_INTEGER StartingOffset;
LARGE_INTEGER PartitionLength;
ULONG PartitionNumber;
BOOLEAN RewritePartition;
union {
PARTITION_INFORMATION_MBR Mbr;
PARTITION_INFORMATION_GPT Gpt;
};
} PARTITION_INFORMATION_EX, *PPARTITION_INFORMATION_EX;
typedef struct _FORMAT_EX_PARAMETERS {
MEDIA_TYPE MediaType;
ULONG StartCylinderNumber;
ULONG EndCylinderNumber;
ULONG StartHeadNumber;
ULONG EndHeadNumber;
USHORT FormatGapLength;
USHORT SectorsPerTrack;
USHORT SectorNumber[1];
} FORMAT_EX_PARAMETERS, *PFORMAT_EX_PARAMETERS;
typedef struct _FORMAT_PARAMETERS {
MEDIA_TYPE MediaType;
ULONG StartCylinderNumber;
ULONG EndCylinderNumber;
ULONG StartHeadNumber;
ULONG EndHeadNumber;
} FORMAT_PARAMETERS, *PFORMAT_PARAMETERS;
typedef struct _GET_LENGTH_INFORMATION {
LARGE_INTEGER Length;
} GET_LENGTH_INFORMATION, *PGET_LENGTH_INFORMATION;
typedef struct _REASSIGN_BLOCKS {
WORD Reserved;
WORD Count;
DWORD BlockNumber[1];
} REASSIGN_BLOCKS, *PREASSIGN_BLOCKS;
typedef struct _SET_PARTITION_INFORMATION {
UCHAR PartitionType;
} SET_PARTITION_INFORMATION, *PSET_PARTITION_INFORMATION;
typedef SET_PARTITION_INFORMATION SET_PARTITION_INFORMATION_MBR;
typedef PARTITION_INFORMATION_GPT SET_PARTITION_INFORMATION_GPT;
typedef struct _SET_PARTITION_INFORMATION_EX {
PARTITION_STYLE PartitionStyle;
union {
SET_PARTITION_INFORMATION_MBR Mbr;
SET_PARTITION_INFORMATION_GPT Gpt;
};
} SET_PARTITION_INFORMATION_EX, *PSET_PARTITION_INFORMATION_EX;
typedef struct _VERIFY_INFORMATION {
LARGE_INTEGER StartingOffset;
DWORD Length;
} VERIFY_INFORMATION, *PVERIFY_INFORMATION;
typedef enum {
EqualPriority,
KeepPrefetchedData,
KeepReadData
} DISK_CACHE_RETENTION_PRIORITY;
typedef struct _DISK_CACHE_INFORMATION {
BOOLEAN ParametersSavable;
BOOLEAN ReadCacheEnabled;
BOOLEAN WriteCacheEnabled;
DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority;
DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority;
USHORT DisablePrefetchTransferLength;
BOOLEAN PrefetchScalar;
union {
struct {
USHORT Minimum;
USHORT Maximum;
USHORT MaximumBlocks;
} ScalarPrefetch;
struct {
USHORT Minimum;
USHORT Maximum;
} BlockPrefetch;
};
} DISK_CACHE_INFORMATION, *PDISK_CACHE_INFORMATION;
typedef struct _DISK_GROW_PARTITION {
ULONG PartitionNumber;
LARGE_INTEGER BytesToGrow;
} DISK_GROW_PARTITION, *PDISK_GROW_PARTITION;
/* GETVERSIONINPARAMS.fCapabilities constants */
#define CAP_ATA_ID_CMD 1
#define CAP_ATAPI_ID_CMD 2
#define CAP_SMART_CMD 4
typedef struct _GETVERSIONINPARAMS {
UCHAR bVersion;
UCHAR bRevision;
UCHAR bReserved;
UCHAR bIDEDeviceMap;
ULONG fCapabilities;
ULONG dwReserved[4];
} GETVERSIONINPARAMS, *PGETVERSIONINPARAMS, *LPGETVERSIONINPARAMS;
/* IDEREGS.bCommandReg constants */
#define ATAPI_ID_CMD 0xA1
#define ID_CMD 0xEC
#define SMART_CMD 0xB0
#define SMART_CYL_LOW 0x4F
#define SMART_CYL_HI 0xC2
typedef struct _IDEREGS {
UCHAR bFeaturesReg;
UCHAR bSectorCountReg;
UCHAR bSectorNumberReg;
UCHAR bCylLowReg;
UCHAR bCylHighReg;
UCHAR bDriveHeadReg;
UCHAR bCommandReg;
UCHAR bReserved;
} IDEREGS, *PIDEREGS, *LPIDEREGS;
typedef struct _SENDCMDINPARAMS {
ULONG cBufferSize;
IDEREGS irDriveRegs;
UCHAR bDriveNumber;
UCHAR bReserved[3];
ULONG dwReserved[4];
UCHAR bBuffer[1];
} SENDCMDINPARAMS, *PSENDCMDINPARAMS, *LPSENDCMDINPARAMS;
/* DRIVERSTATUS.bDriverError constants */
#define SMART_NO_ERROR 0
#define SMART_IDE_ERROR 1
#define SMART_INVALID_FLAG 2
#define SMART_INVALID_COMMAND 3
#define SMART_INVALID_BUFFER 4
#define SMART_INVALID_DRIVE 5
#define SMART_INVALID_IOCTL 6
#define SMART_ERROR_NO_MEM 7
#define SMART_INVALID_REGISTER 8
#define SMART_NOT_SUPPORTED 9
#define SMART_NO_IDE_DEVICE 10
#define SMART_OFFLINE_ROUTINE_OFFLINE 0
#define SMART_SHORT_SELFTEST_OFFLINE 1
#define SMART_EXTENDED_SELFTEST_OFFLINE 2
#define SMART_ABORT_OFFLINE_SELFTEST 127
#define SMART_SHORT_SELFTEST_CAPTIVE 129
#define SMART_EXTENDED_SELFTEST_CAPTIVE 130
typedef struct _DRIVERSTATUS {
UCHAR bDriverError;
UCHAR bIDEError;
UCHAR bReserved[2];
ULONG dwReserved[2];
} DRIVERSTATUS, *PDRIVERSTATUS, *LPDRIVERSTATUS;
#define READ_ATTRIBUTE_BUFFER_SIZE 512
#define IDENTIFY_BUFFER_SIZE 512
#define READ_THRESHOLD_BUFFER_SIZE 512
#define SMART_LOG_SECTOR_SIZE 512
typedef struct _SENDCMDOUTPARAMS {
ULONG cBufferSize;
DRIVERSTATUS DriverStatus;
UCHAR bBuffer[1];
} SENDCMDOUTPARAMS, *PSENDCMDOUTPARAMS, *LPSENDCMDOUTPARAMS;
#define READ_ATTRIBUTES 0xD0
#define READ_THRESHOLDS 0xD1
#define ENABLE_DISABLE_AUTOSAVE 0xD2
#define SAVE_ATTRIBUTE_VALUES 0xD3
#define EXECUTE_OFFLINE_DIAGS 0xD4
#define SMART_READ_LOG 0xD5
#define SMART_WRITE_LOG 0xd6
#define ENABLE_SMART 0xD8
#define DISABLE_SMART 0xD9
#define RETURN_SMART_STATUS 0xDA
#define ENABLE_DISABLE_AUTO_OFFLINE 0xDB
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDDISK_H */

View File

@ -0,0 +1,90 @@
/*
* ntddk.h
*
* Windows Device Driver Kit
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* DEFINES:
* DBG - Debugging enabled/disabled (0/1)
* POOL_TAGGING - Enable pool tagging
* _X86_ - X86 environment
*/
#ifndef __NTDDK_H
#define __NTDDK_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include <stdarg.h>
#include <windef.h>
#include <ntdef.h>
#include <basetyps.h>
/* Base types, structures and definitions */
typedef short CSHORT;
typedef CONST int CINT;
typedef CONST char *PCSZ;
#ifndef STATIC
#define STATIC static
#endif
#ifndef CALLBACK
#define CALLBACK
#endif
#ifndef DECL_IMPORT
#define DECL_IMPORT __attribute__((dllimport))
#endif
#ifndef DECL_EXPORT
#define DECL_EXPORT __attribute__((dllexport))
#endif
/* Windows NT status codes */
#include "ntstatus.h"
/* Windows NT definitions exported to user mode */
#include "winnt.h"
/* Windows Device Driver Kit */
#include "winddk.h"
/* Definitions only in Windows XP */
#include "winxp.h"
/* Definitions only in Windows 2000 */
#include "win2k.h"
/* Definitions only in Windows NT 4 */
#include "winnt4.h"
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDK_H */

View File

@ -0,0 +1,140 @@
/*
* ntddkbd.h
*
* Keyboard IOCTL interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDKBD_H
#define __NTDDKBD_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define DD_KEYBOARD_DEVICE_NAME "\\Device\\KeyboardClass"
#define DD_KEYBOARD_DEVICE_NAME_U L"\\Device\\KeyboardClass"
#define IOCTL_KEYBOARD_QUERY_ATTRIBUTES \
CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_KEYBOARD_QUERY_INDICATORS \
CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0010, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_KEYBOARD_QUERY_INDICATOR_TRANSLATION \
CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0020, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_KEYBOARD_QUERY_TYPEMATIC \
CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0008, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_KEYBOARD_SET_TYPEMATIC \
CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0001, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_KEYBOARD_SET_INDICATORS \
CTL_CODE(FILE_DEVICE_KEYBOARD, 0x0002, METHOD_BUFFERED, FILE_ANY_ACCESS)
DEFINE_GUID(GUID_DEVINTERFACE_KEYBOARD, \
0x884b96c3, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x14, 0x05, 0xdd);
#define KEYBOARD_ERROR_VALUE_BASE 10000
/* KEYBOARD_INPUT_DATA.MakeCode constants */
#define KEYBOARD_OVERRUN_MAKE_CODE 0xFF
/* KEYBOARD_INPUT_DATA.Flags constants */
#define KEY_MAKE 0
#define KEY_BREAK 1
#define KEY_E0 2
#define KEY_E1 4
typedef struct _KEYBOARD_INPUT_DATA {
USHORT UnitId;
USHORT MakeCode;
USHORT Flags;
USHORT Reserved;
ULONG ExtraInformation;
} KEYBOARD_INPUT_DATA, *PKEYBOARD_INPUT_DATA;
typedef struct _KEYBOARD_TYPEMATIC_PARAMETERS {
USHORT UnitId;
USHORT Rate;
USHORT Delay;
} KEYBOARD_TYPEMATIC_PARAMETERS, *PKEYBOARD_TYPEMATIC_PARAMETERS;
typedef struct _KEYBOARD_ID {
UCHAR Type;
UCHAR Subtype;
} KEYBOARD_ID, *PKEYBOARD_ID;
#define ENHANCED_KEYBOARD(Id) ((Id).Type == 2 || (Id).Type == 4 || FAREAST_KEYBOARD(Id))
#define FAREAST_KEYBOARD(Id) ((Id).Type == 7 || (Id).Type == 8)
typedef struct _KEYBOARD_INDICATOR_PARAMETERS {
USHORT UnitId;
USHORT LedFlags;
} KEYBOARD_INDICATOR_PARAMETERS, *PKEYBOARD_INDICATOR_PARAMETERS;
typedef struct _INDICATOR_LIST {
USHORT MakeCode;
USHORT IndicatorFlags;
} INDICATOR_LIST, *PINDICATOR_LIST;
typedef struct _KEYBOARD_INDICATOR_TRANSLATION {
USHORT NumberOfIndicatorKeys;
INDICATOR_LIST IndicatorList[1];
} KEYBOARD_INDICATOR_TRANSLATION, *PKEYBOARD_INDICATOR_TRANSLATION;
typedef struct _KEYBOARD_ATTRIBUTES {
KEYBOARD_ID KeyboardIdentifier;
USHORT KeyboardMode;
USHORT NumberOfFunctionKeys;
USHORT NumberOfIndicators;
USHORT NumberOfKeysTotal;
ULONG InputDataQueueLength;
KEYBOARD_TYPEMATIC_PARAMETERS KeyRepeatMinimum;
KEYBOARD_TYPEMATIC_PARAMETERS KeyRepeatMaximum;
} KEYBOARD_ATTRIBUTES, *PKEYBOARD_ATTRIBUTES;
typedef struct _KEYBOARD_UNIT_ID_PARAMETER {
USHORT UnitId;
} KEYBOARD_UNIT_ID_PARAMETER, *PKEYBOARD_UNIT_ID_PARAMETER;
typedef struct _KEYBOARD_IME_STATUS {
USHORT UnitId;
ULONG ImeOpen;
ULONG ImeConvMode;
} KEYBOARD_IME_STATUS, *PKEYBOARD_IME_STATUS;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDKBD_H */

View File

@ -0,0 +1,120 @@
/*
* ntddmou.h
*
* Mouse device IOCTL interface.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDMOU_H
#define __NTDDMOU_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define DD_MOUSE_DEVICE_NAME "\\Device\\PointerClass"
#define DD_MOUSE_DEVICE_NAME_U L"\\Device\\PointerClass"
#define IOCTL_MOUSE_QUERY_ATTRIBUTES \
CTL_CODE(FILE_DEVICE_MOUSE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
DEFINE_GUID(GUID_DEVINTERFACE_MOUSE, \
0x378de44c, 0x56ef, 0x11d1, 0xbc, 0x8c, 0x00, 0xa0, 0xc9, 0x14, 0x05, 0xdd);
#define MOUSE_ERROR_VALUE_BASE 20000
/* MOUSE_INPUT_DATA.ButtonFlags constants */
#define MOUSE_LEFT_BUTTON_DOWN 0x0001
#define MOUSE_LEFT_BUTTON_UP 0x0002
#define MOUSE_RIGHT_BUTTON_DOWN 0x0004
#define MOUSE_RIGHT_BUTTON_UP 0x0008
#define MOUSE_MIDDLE_BUTTON_DOWN 0x0010
#define MOUSE_MIDDLE_BUTTON_UP 0x0020
#define MOUSE_BUTTON_4_DOWN 0x0040
#define MOUSE_BUTTON_4_UP 0x0080
#define MOUSE_BUTTON_5_DOWN 0x0100
#define MOUSE_BUTTON_5_UP 0x0200
#define MOUSE_WHEEL 0x0400
#define MOUSE_BUTTON_1_DOWN MOUSE_LEFT_BUTTON_DOWN
#define MOUSE_BUTTON_1_UP MOUSE_LEFT_BUTTON_UP
#define MOUSE_BUTTON_2_DOWN MOUSE_RIGHT_BUTTON_DOWN
#define MOUSE_BUTTON_2_UP MOUSE_RIGHT_BUTTON_UP
#define MOUSE_BUTTON_3_DOWN MOUSE_MIDDLE_BUTTON_DOWN
#define MOUSE_BUTTON_3_UP MOUSE_MIDDLE_BUTTON_UP
/* MOUSE_INPUT_DATA.Flags constants */
#define MOUSE_MOVE_RELATIVE 0
#define MOUSE_MOVE_ABSOLUTE 1
#define MOUSE_VIRTUAL_DESKTOP 0x02
#define MOUSE_ATTRIBUTES_CHANGED 0x04
typedef struct _MOUSE_INPUT_DATA {
USHORT UnitId;
USHORT Flags;
union {
ULONG Buttons;
struct {
USHORT ButtonFlags;
USHORT ButtonData;
};
};
ULONG RawButtons;
LONG LastX;
LONG LastY;
ULONG ExtraInformation;
} MOUSE_INPUT_DATA, *PMOUSE_INPUT_DATA;
typedef struct _MOUSE_UNIT_ID_PARAMETER {
USHORT UnitId;
} MOUSE_UNIT_ID_PARAMETER, *PMOUSE_UNIT_ID_PARAMETER;
/* MOUSE_ATTRIBUTES.MouseIdentifier constants */
#define MOUSE_INPORT_HARDWARE 0x0001
#define MOUSE_I8042_HARDWARE 0x0002
#define MOUSE_SERIAL_HARDWARE 0x0004
#define BALLPOINT_I8042_HARDWARE 0x0008
#define BALLPOINT_SERIAL_HARDWARE 0x0010
#define WHEELMOUSE_I8042_HARDWARE 0x0020
#define WHEELMOUSE_SERIAL_HARDWARE 0x0040
#define MOUSE_HID_HARDWARE 0x0080
#define WHEELMOUSE_HID_HARDWARE 0x0100
typedef struct _MOUSE_ATTRIBUTES {
USHORT MouseIdentifier;
USHORT NumberOfButtons;
USHORT SampleRate;
ULONG InputDataQueueLength;
} MOUSE_ATTRIBUTES, *PMOUSE_ATTRIBUTES;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDMOU_H */

View File

@ -0,0 +1,188 @@
/*
* ntddndis.h
*
* NDIS device driver interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDNDIS_H
#define __NTDDNDIS_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#pragma pack(push,4)
#include "ntddk.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef enum _NDIS_WAN_QUALITY {
NdisWanRaw,
NdisWanErrorControl,
NdisWanReliable
} NDIS_WAN_QUALITY, *PNDIS_WAN_QUALITY;
typedef enum _NDIS_DEVICE_POWER_STATE {
NdisDeviceStateUnspecified = 0,
NdisDeviceStateD0,
NdisDeviceStateD1,
NdisDeviceStateD2,
NdisDeviceStateD3,
NdisDeviceStateMaximum
} NDIS_DEVICE_POWER_STATE, *PNDIS_DEVICE_POWER_STATE;
typedef struct _NDIS_PM_WAKE_UP_CAPABILITIES {
NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp;
NDIS_DEVICE_POWER_STATE MinPatternWakeUp;
NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp;
} NDIS_PM_WAKE_UP_CAPABILITIES, *PNDIS_PM_WAKE_UP_CAPABILITIES;
/* NDIS_PNP_CAPABILITIES.Flags constants */
#define NDIS_DEVICE_WAKE_UP_ENABLE 0x00000001
#define NDIS_DEVICE_WAKE_ON_PATTERN_MATCH_ENABLE 0x00000002
#define NDIS_DEVICE_WAKE_ON_MAGIC_PACKET_ENABLE 0x00000004
typedef struct _NDIS_PNP_CAPABILITIES {
ULONG Flags;
NDIS_PM_WAKE_UP_CAPABILITIES WakeUpCapabilities;
} NDIS_PNP_CAPABILITIES, *PNDIS_PNP_CAPABILITIES;
/* Required Object IDs (OIDs) */
#define OID_GEN_SUPPORTED_LIST 0x00010101
#define OID_GEN_HARDWARE_STATUS 0x00010102
#define OID_GEN_MEDIA_SUPPORTED 0x00010103
#define OID_GEN_MEDIA_IN_USE 0x00010104
#define OID_GEN_MAXIMUM_LOOKAHEAD 0x00010105
#define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106
#define OID_GEN_LINK_SPEED 0x00010107
#define OID_GEN_TRANSMIT_BUFFER_SPACE 0x00010108
#define OID_GEN_RECEIVE_BUFFER_SPACE 0x00010109
#define OID_GEN_TRANSMIT_BLOCK_SIZE 0x0001010A
#define OID_GEN_RECEIVE_BLOCK_SIZE 0x0001010B
#define OID_GEN_VENDOR_ID 0x0001010C
#define OID_GEN_VENDOR_DESCRIPTION 0x0001010D
#define OID_GEN_CURRENT_PACKET_FILTER 0x0001010E
#define OID_GEN_CURRENT_LOOKAHEAD 0x0001010F
#define OID_GEN_DRIVER_VERSION 0x00010110
#define OID_GEN_MAXIMUM_TOTAL_SIZE 0x00010111
#define OID_GEN_PROTOCOL_OPTIONS 0x00010112
#define OID_GEN_MAC_OPTIONS 0x00010113
#define OID_GEN_MEDIA_CONNECT_STATUS 0x00010114
#define OID_GEN_MAXIMUM_SEND_PACKETS 0x00010115
#define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116
#define OID_GEN_SUPPORTED_GUIDS 0x00010117
#define OID_GEN_NETWORK_LAYER_ADDRESSES 0x00010118
#define OID_GEN_TRANSPORT_HEADER_OFFSET 0x00010119
#define OID_GEN_MACHINE_NAME 0x0001021A
#define OID_GEN_RNDIS_CONFIG_PARAMETER 0x0001021B
#define OID_GEN_VLAN_ID 0x0001021C
/* Optional OIDs */
#define OID_GEN_MEDIA_CAPABILITIES 0x00010201
#define OID_GEN_PHYSICAL_MEDIUM 0x00010202
/* Required statistics OIDs */
#define OID_GEN_XMIT_OK 0x00020101
#define OID_GEN_RCV_OK 0x00020102
#define OID_GEN_XMIT_ERROR 0x00020103
#define OID_GEN_RCV_ERROR 0x00020104
#define OID_GEN_RCV_NO_BUFFER 0x00020105
/* Optional statistics OIDs */
#define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201
#define OID_GEN_DIRECTED_FRAMES_XMIT 0x00020202
#define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203
#define OID_GEN_MULTICAST_FRAMES_XMIT 0x00020204
#define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205
#define OID_GEN_BROADCAST_FRAMES_XMIT 0x00020206
#define OID_GEN_DIRECTED_BYTES_RCV 0x00020207
#define OID_GEN_DIRECTED_FRAMES_RCV 0x00020208
#define OID_GEN_MULTICAST_BYTES_RCV 0x00020209
#define OID_GEN_MULTICAST_FRAMES_RCV 0x0002020A
#define OID_GEN_BROADCAST_BYTES_RCV 0x0002020B
#define OID_GEN_BROADCAST_FRAMES_RCV 0x0002020C
#define OID_GEN_RCV_CRC_ERROR 0x0002020D
#define OID_GEN_TRANSMIT_QUEUE_LENGTH 0x0002020E
#define OID_GEN_GET_TIME_CAPS 0x0002020F
#define OID_GEN_GET_NETCARD_TIME 0x00020210
#define OID_GEN_NETCARD_LOAD 0x00020211
#define OID_GEN_DEVICE_PROFILE 0x00020212
#define OID_GEN_INIT_TIME_MS 0x00020213
#define OID_GEN_RESET_COUNTS 0x00020214
#define OID_GEN_MEDIA_SENSE_COUNTS 0x00020215
#define OID_GEN_FRIENDLY_NAME 0x00020216
#define OID_GEN_MINIPORT_INFO 0x00020217
#define OID_GEN_RESET_VERIFY_PARAMETERS 0x00020218
/* IEEE 802.3 (Ethernet) OIDs */
#define NDIS_802_3_MAC_OPTION_PRIORITY 0x00000001
#define OID_802_3_PERMANENT_ADDRESS 0x01010101
#define OID_802_3_CURRENT_ADDRESS 0x01010102
#define OID_802_3_MULTICAST_LIST 0x01010103
#define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104
#define OID_802_3_MAC_OPTIONS 0x01010105
#define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101
#define OID_802_3_XMIT_ONE_COLLISION 0x01020102
#define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103
#define OID_802_3_XMIT_DEFERRED 0x01020201
#define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202
#define OID_802_3_RCV_OVERRUN 0x01020203
#define OID_802_3_XMIT_UNDERRUN 0x01020204
#define OID_802_3_XMIT_HEARTBEAT_FAILURE 0x01020205
#define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206
#define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207
/* OID_GEN_MINIPORT_INFO constants */
#define NDIS_MINIPORT_BUS_MASTER 0x00000001
#define NDIS_MINIPORT_WDM_DRIVER 0x00000002
#define NDIS_MINIPORT_SG_LIST 0x00000004
#define NDIS_MINIPORT_SUPPORTS_MEDIA_QUERY 0x00000008
#define NDIS_MINIPORT_INDICATES_PACKETS 0x00000010
#define NDIS_MINIPORT_IGNORE_PACKET_QUEUE 0x00000020
#define NDIS_MINIPORT_IGNORE_REQUEST_QUEUE 0x00000040
#define NDIS_MINIPORT_IGNORE_TOKEN_RING_ERRORS 0x00000080
#define NDIS_MINIPORT_INTERMEDIATE_DRIVER 0x00000100
#define NDIS_MINIPORT_IS_NDIS_5 0x00000200
#define NDIS_MINIPORT_IS_CO 0x00000400
#define NDIS_MINIPORT_DESERIALIZE 0x00000800
#define NDIS_MINIPORT_REQUIRES_MEDIA_POLLING 0x00001000
#define NDIS_MINIPORT_SUPPORTS_MEDIA_SENSE 0x00002000
#define NDIS_MINIPORT_NETBOOT_CARD 0x00004000
#define NDIS_MINIPORT_PM_SUPPORTED 0x00008000
#define NDIS_MINIPORT_SUPPORTS_MAC_ADDRESS_OVERWRITE 0x00010000
#define NDIS_MINIPORT_USES_SAFE_BUFFER_APIS 0x00020000
#define NDIS_MINIPORT_HIDDEN 0x00040000
#define NDIS_MINIPORT_SWENUM 0x00080000
#define NDIS_MINIPORT_SURPRISE_REMOVE_OK 0x00100000
#define NDIS_MINIPORT_NO_HALT_ON_SUSPEND 0x00200000
#define NDIS_MINIPORT_HARDWARE_DEVICE 0x00400000
#define NDIS_MINIPORT_SUPPORTS_CANCEL_SEND_PACKETS 0x00800000
#define NDIS_MINIPORT_64BITS_DMA 0x01000000
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDNDIS_H */

View File

@ -0,0 +1,124 @@
/*
* ntddpar.h
*
* Parallel port driver interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDPAR_H
#define __NTDDPAR_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
/* Parallel port device GUIDs */
DEFINE_GUID (GUID_DEVINTERFACE_PARALLEL,
0x97F76EF0, 0xF883, 0x11D0, 0xAF, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x84, 0x5C);
DEFINE_GUID (GUID_DEVINTERFACE_PARCLASS,
0x811FC6A5, 0xF728, 0x11D0, 0xA5, 0x37, 0x00, 0x00, 0xF8, 0x75, 0x3E, 0xD1);
#define GUID_PARALLEL_DEVICE GUID_DEVINTERFACE_PARALLEL
#define GUID_PARCLASS_DEVICE GUID_DEVINTERFACE_PARCLASS
#define IOCTL_IEEE1284_GET_MODE \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_IEEE1284_NEGOTIATE \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PAR_GET_DEFAULT_MODES \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PAR_GET_DEVICE_CAPS \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PAR_IS_PORT_FREE \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PAR_QUERY_DEVICE_ID \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PAR_QUERY_DEVICE_ID_SIZE \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PAR_QUERY_INFORMATION \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PAR_QUERY_LOCATION \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PAR_QUERY_RAW_DEVICE_ID \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PAR_SET_INFORMATION \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PAR_SET_READ_ADDRESS \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PAR_SET_WRITE_ADDRESS \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
typedef struct _PAR_DEVICE_ID_SIZE_INFORMATION {
ULONG DeviceIdSize;
} PAR_DEVICE_ID_SIZE_INFORMATION, *PPAR_DEVICE_ID_SIZE_INFORMATION;
#define PARALLEL_INIT 0x01
#define PARALLEL_AUTOFEED 0x02
#define PARALLEL_PAPER_EMPTY 0x04
#define PARALLEL_OFF_LINE 0x08
#define PARALLEL_POWER_OFF 0x10
#define PARALLEL_NOT_CONNECTED 0x20
#define PARALLEL_BUSY 0x40
#define PARALLEL_SELECTED 0x80
typedef struct _PAR_QUERY_INFORMATION {
UCHAR Status;
} PAR_QUERY_INFORMATION, *PPAR_QUERY_INFORMATION;
typedef struct _PAR_SET_INFORMATION {
UCHAR Init;
} PAR_SET_INFORMATION, *PPAR_SET_INFORMATION;
typedef struct _PARCLASS_NEGOTIATION_MASK {
USHORT usReadMask;
USHORT usWriteMask;
} PARCLASS_NEGOTIATION_MASK, *PPARCLASS_NEGOTIATION_MASK;
#define NONE 0x0000
#define CENTRONICS 0x0001
#define IEEE_COMPATIBILITY 0x0002
#define NIBBLE 0x0004
#define CHANNEL_NIBBLE 0x0008
#define BYTE_BIDIR 0x0010
#define EPP_HW 0x0020
#define EPP_SW 0x0040
#define EPP_ANY 0x0060
#define BOUNDED_ECP 0x0080
#define ECP_HW_NOIRQ 0x0100
#define ECP_HW_IRQ 0x0200
#define ECP_SW 0x0400
#define ECP_ANY 0x0780
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDPAR_H */

View File

@ -0,0 +1,170 @@
/*
* ntddpcm.h
*
* PCMCIA IOCTL interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDPCM_H
#define __NTDDPCM_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define IOCTL_PCMCIA_BASE FILE_DEVICE_CONTROLLER
#define DD_PCMCIA_DEVICE_NAME "\\\\.\\Pcmcia"
#define DD_PCMCIA_DEVICE_NAME_U L"\\\\.\\Pcmcia"
#define IOCTL_GET_TUPLE_DATA \
CTL_CODE(IOCTL_PCMCIA_BASE, 3000, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SOCKET_INFORMATION \
CTL_CODE(IOCTL_PCMCIA_BASE, 3004, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define DEVICE_IDENTIFIER_LENGTH 64
#define DRIVER_NAME_LENGTH 32
#define MANUFACTURER_NAME_LENGTH 64
#define PcmciaInvalidControllerType 0xffffffff
typedef struct _TUPLE_REQUEST {
USHORT Socket;
} TUPLE_REQUEST, *PTUPLE_REQUEST;
typedef enum _PCMCIA_CONTROLLER_CLASS {
PcmciaInvalidControllerClass = -1,
PcmciaIntelCompatible,
PcmciaCardBusCompatible,
PcmciaElcController,
PcmciaDatabook,
PcmciaPciPcmciaBridge,
PcmciaCirrusLogic,
PcmciaTI,
PcmciaTopic,
PcmciaRicoh,
PcmciaDatabookCB,
PcmciaOpti,
PcmciaTrid,
PcmciaO2Micro,
PcmciaNEC,
PcmciaNEC_98
} PCMCIA_CONTROLLER_CLASS, *PPCMCIA_CONTROLLER_CLASS;
typedef struct _PCMCIA_SOCKET_INFORMATION {
USHORT Socket;
USHORT TupleCrc;
UCHAR Manufacturer[MANUFACTURER_NAME_LENGTH];
UCHAR Identifier[DEVICE_IDENTIFIER_LENGTH];
UCHAR DriverName[DRIVER_NAME_LENGTH];
UCHAR DeviceFunctionId;
UCHAR Reserved;
UCHAR CardInSocket;
UCHAR CardEnabled;
ULONG ControllerType;
} PCMCIA_SOCKET_INFORMATION, *PPCMCIA_SOCKET_INFORMATION;
#define PcmciaClassFromControllerType(type) ((PCMCIA_CONTROLLER_CLASS)((type) & 0xff))
#define PcmciaModelFromControllerType(type) (((type) >> 8) & 0x3ffff)
#define PcmciaRevisionFromControllerType(type) ((type) >> 26)
DEFINE_GUID(GUID_PCMCIA_INTERFACE_STANDARD, \
0xbed5dadfL, 0x38fb, 0x11d1, 0x94, 0x62, 0x00, 0xc0, 0x4f, 0xb9, 0x60, 0xee);
typedef ULONG MEMORY_SPACE;
typedef ULONG STDCALL
(*PPCMCIA_READ_WRITE_CONFIG)(
IN PVOID Context,
IN ULONG WhichSpace,
IN PUCHAR Buffer,
IN ULONG Offset,
IN ULONG Length);
#define PCCARD_PCI_CONFIGURATION_SPACE 0
#define PCCARD_ATTRIBUTE_MEMORY 1
#define PCCARD_COMMON_MEMORY 2
#define PCCARD_ATTRIBUTE_MEMORY_INDIRECT 3
#define PCCARD_COMMON_MEMORY_INDIRECT 4
typedef struct _PCMCIA_BUS_INTERFACE_STANDARD {
USHORT Size;
USHORT Version;
PVOID Context;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
PPCMCIA_READ_WRITE_CONFIG ReadConfig;
PPCMCIA_READ_WRITE_CONFIG WriteConfig;
} PCMCIA_BUS_INTERFACE_STANDARD, *PPCMCIA_BUS_INTERFACE_STANDARD;
#define PCMCIA_MEMORY_8BIT_ACCESS 0
#define PCMCIA_MEMORY_16BIT_ACCESS 1
typedef BOOLEAN STDCALL
(*PPCMCIA_MODIFY_MEMORY_WINDOW)(
IN PVOID Context,
IN ULONGLONG HostBase,
IN ULONGLONG CardBase,
IN BOOLEAN Enable,
IN ULONG WindowSize OPTIONAL,
IN UCHAR AccessSpeed OPTIONAL,
IN UCHAR BusWidth OPTIONAL,
IN BOOLEAN IsAttributeMemory OPTIONAL);
#define PCMCIA_VPP_0V 0
#define PCMCIA_VPP_12V 1
#define PCMCIA_VPP_IS_VCC 2
typedef BOOLEAN STDCALL
(*PPCMCIA_SET_VPP)(
IN PVOID Context,
IN UCHAR VppLevel);
typedef BOOLEAN STDCALL
(*PPCMCIA_IS_WRITE_PROTECTED)(
IN PVOID Context);
typedef struct _PCMCIA_INTERFACE_STANDARD {
USHORT Size;
USHORT Version;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
PVOID Context;
PPCMCIA_MODIFY_MEMORY_WINDOW ModifyMemoryWindow;
PPCMCIA_SET_VPP SetVpp;
PPCMCIA_IS_WRITE_PROTECTED IsWriteProtected;
} PCMCIA_INTERFACE_STANDARD, *PPCMCIA_INTERFACE_STANDARD;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDPCM_H */

View File

@ -0,0 +1,176 @@
/*
* ntddscsi.h
*
* SCSI port IOCTL interface.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDSCSI_H
#define __NTDDSCSI_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define DD_SCSI_DEVICE_NAME "\\Device\\ScsiPort"
#define DD_SCSI_DEVICE_NAME_U L"\\Device\\ScsiPort"
#define IOCTL_SCSI_BASE FILE_DEVICE_CONTROLLER
#define IOCTL_SCSI_GET_INQUIRY_DATA \
CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SCSI_GET_CAPABILITIES \
CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SCSI_GET_ADDRESS \
CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SCSI_MINIPORT \
CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_SCSI_PASS_THROUGH \
CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_SCSI_PASS_THROUGH_DIRECT \
CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_SCSI_RESCAN_BUS \
CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS)
DEFINE_GUID(ScsiRawInterfaceGuid, \
0x53f56309L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(WmiScsiAddressGuid, \
0x53f5630fL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
typedef struct _SCSI_PASS_THROUGH {
USHORT Length;
UCHAR ScsiStatus;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR CdbLength;
UCHAR SenseInfoLength;
UCHAR DataIn;
ULONG DataTransferLength;
ULONG TimeOutValue;
ULONG_PTR DataBufferOffset;
ULONG SenseInfoOffset;
UCHAR Cdb[16];
} SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
typedef struct _SCSI_PASS_THROUGH_DIRECT {
USHORT Length;
UCHAR ScsiStatus;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR CdbLength;
UCHAR SenseInfoLength;
UCHAR DataIn;
ULONG DataTransferLength;
ULONG TimeOutValue;
PVOID DataBuffer;
ULONG SenseInfoOffset;
UCHAR Cdb[16];
} SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
typedef struct _SRB_IO_CONTROL {
ULONG HeaderLength;
UCHAR Signature[8];
ULONG Timeout;
ULONG ControlCode;
ULONG ReturnCode;
ULONG Length;
} SRB_IO_CONTROL, *PSRB_IO_CONTROL;
typedef struct _SCSI_ADDRESS {
ULONG Length;
UCHAR PortNumber;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
} SCSI_ADDRESS, *PSCSI_ADDRESS;
typedef struct _SCSI_BUS_DATA {
UCHAR NumberOfLogicalUnits;
UCHAR InitiatorBusId;
ULONG InquiryDataOffset;
}SCSI_BUS_DATA, *PSCSI_BUS_DATA;
typedef struct _SCSI_ADAPTER_BUS_INFO {
UCHAR NumberOfBuses;
SCSI_BUS_DATA BusData[1];
} SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
typedef struct _IO_SCSI_CAPABILITIES {
ULONG Length;
ULONG MaximumTransferLength;
ULONG MaximumPhysicalPages;
ULONG SupportedAsynchronousEvents;
ULONG AlignmentMask;
BOOLEAN TaggedQueuing;
BOOLEAN AdapterScansDown;
BOOLEAN AdapterUsesPio;
} IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES;
typedef struct _SCSI_INQUIRY_DATA {
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
BOOLEAN DeviceClaimed;
ULONG InquiryDataLength;
ULONG NextInquiryDataOffset;
UCHAR InquiryData[1];
} SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
#define SCSI_IOCTL_DATA_OUT 0
#define SCSI_IOCTL_DATA_IN 1
#define SCSI_IOCTL_DATA_UNSPECIFIED 2
typedef struct _DUMP_POINTERS {
PADAPTER_OBJECT AdapterObject;
PVOID MappedRegisterBase;
PVOID DumpData;
PVOID CommonBufferVa;
LARGE_INTEGER CommonBufferPa;
ULONG CommonBufferSize;
BOOLEAN AllocateCommonBuffers;
BOOLEAN UseDiskDump;
UCHAR Spare1[2];
PVOID DeviceObject;
} DUMP_POINTERS, *PDUMP_POINTERS;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDSCSI_H */

View File

@ -0,0 +1,454 @@
/*
* ntddser.h
*
* Serial port driver interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDSER_H
#define __NTDDSER_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
/* GUIDs */
DEFINE_GUID(GUID_DEVINTERFACE_COMPORT,
0x86e0d1e0L, 0x8089, 0x11d0, 0x9c, 0xe4, 0x08, 0x00, 0x3e, 0x30, 0x1f, 0x73);
DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR,
0x4D36E978L, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18);
#define IOCTL_SERIAL_CLEAR_STATS \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 36, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_CLR_DTR \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_CLR_RTS \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_CONFIG_SIZE \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 32, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_BAUD_RATE \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_CHARS \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_COMMSTATUS \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 27, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_DTRRTS \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_HANDFLOW \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_LINE_CONTROL \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_MODEM_CONTROL \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 37, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_MODEMSTATUS \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 26, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_PROPERTIES \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 29, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_STATS \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 35, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_TIMEOUTS \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_GET_WAIT_MASK \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 16, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_IMMEDIATE_CHAR \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_LSRMST_INSERT \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_PURGE \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 19, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_RESET_DEVICE \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_BAUD_RATE \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_BREAK_ON \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_BREAK_OFF \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_CHARS \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_DTR \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_FIFO_CONTROL \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 39, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_HANDFLOW \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 25, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_LINE_CONTROL \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_MODEM_CONTROL \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 38, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_QUEUE_SIZE \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_RTS \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_TIMEOUTS \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_WAIT_MASK \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 17, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_XOFF \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_SET_XON \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_WAIT_ON_MASK \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 18, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_XOFF_COUNTER \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 28, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_INTERNAL_BASIC_SETTINGS \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 3, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_INTERNAL_CANCEL_WAIT_WAKE \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 2, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_INTERNAL_DO_WAIT_WAKE \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERIAL_INTERNAL_RESTORE_SETTINGS \
CTL_CODE (FILE_DEVICE_SERIAL_PORT, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERENUM_PORT_DESC \
CTL_CODE (FILE_DEVICE_SERENUM, 130, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SERENUM_GET_PORT_NAME \
CTL_CODE (FILE_DEVICE_SERENUM, 131, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_SERENUM_REMOVE_SELF \
CTL_CODE (FILE_DEVICE_SERENUM, 129, METHOD_NEITHER, FILE_ANY_ACCESS)
typedef struct _SERIAL_BAUD_RATE {
ULONG BaudRate;
} SERIAL_BAUD_RATE, *PSERIAL_BAUD_RATE;
/* SERIAL_BAUD_RATE.BaudRate constants */
#define SERIAL_BAUD_075 0x00000001
#define SERIAL_BAUD_110 0x00000002
#define SERIAL_BAUD_134_5 0x00000004
#define SERIAL_BAUD_150 0x00000008
#define SERIAL_BAUD_300 0x00000010
#define SERIAL_BAUD_600 0x00000020
#define SERIAL_BAUD_1200 0x00000040
#define SERIAL_BAUD_1800 0x00000080
#define SERIAL_BAUD_2400 0x00000100
#define SERIAL_BAUD_4800 0x00000200
#define SERIAL_BAUD_7200 0x00000400
#define SERIAL_BAUD_9600 0x00000800
#define SERIAL_BAUD_14400 0x00001000
#define SERIAL_BAUD_19200 0x00002000
#define SERIAL_BAUD_38400 0x00004000
#define SERIAL_BAUD_56K 0x00008000
#define SERIAL_BAUD_128K 0x00010000
#define SERIAL_BAUD_115200 0x00020000
#define SERIAL_BAUD_57600 0x00040000
#define SERIAL_BAUD_USER 0x10000000
typedef struct _SERIAL_CHARS {
UCHAR EofChar;
UCHAR ErrorChar;
UCHAR BreakChar;
UCHAR EventChar;
UCHAR XonChar;
UCHAR XoffChar;
} SERIAL_CHARS, *PSERIAL_CHARS;
typedef struct _SERIAL_STATUS {
ULONG Errors;
ULONG HoldReasons;
ULONG AmountInInQueue;
ULONG AmountInOutQueue;
BOOLEAN EofReceived;
BOOLEAN WaitForImmediate;
} SERIAL_STATUS, *PSERIAL_STATUS;
typedef struct _SERIAL_HANDFLOW {
ULONG ControlHandShake;
ULONG FlowReplace;
LONG XonLimit;
LONG XoffLimit;
} SERIAL_HANDFLOW, *PSERIAL_HANDFLOW;
#define SERIAL_DTR_MASK 0x00000003
#define SERIAL_DTR_CONTROL 0x00000001
#define SERIAL_DTR_HANDSHAKE 0x00000002
#define SERIAL_CTS_HANDSHAKE 0x00000008
#define SERIAL_DSR_HANDSHAKE 0x00000010
#define SERIAL_DCD_HANDSHAKE 0x00000020
#define SERIAL_OUT_HANDSHAKEMASK 0x00000038
#define SERIAL_DSR_SENSITIVITY 0x00000040
#define SERIAL_ERROR_ABORT 0x80000000
#define SERIAL_CONTROL_INVALID 0x7fffff84
#define SERIAL_AUTO_TRANSMIT 0x00000001
#define SERIAL_AUTO_RECEIVE 0x00000002
#define SERIAL_ERROR_CHAR 0x00000004
#define SERIAL_NULL_STRIPPING 0x00000008
#define SERIAL_BREAK_CHAR 0x00000010
#define SERIAL_RTS_MASK 0x000000c0
#define SERIAL_RTS_CONTROL 0x00000040
#define SERIAL_RTS_HANDSHAKE 0x00000080
#define SERIAL_TRANSMIT_TOGGLE 0x000000c0
#define SERIAL_XOFF_CONTINUE 0x80000000
#define SERIAL_FLOW_INVALID 0x7fffff20
typedef struct _SERIAL_LINE_CONTROL {
UCHAR StopBits;
UCHAR Parity;
UCHAR WordLength;
} SERIAL_LINE_CONTROL, *PSERIAL_LINE_CONTROL;
/* SERIAL_LINE_CONTROL.StopBits constants */
#define STOP_BIT_1 0x00
#define STOP_BITS_1_5 0x01
#define STOP_BITS_2 0x02
/* SERIAL_LINE_CONTROL.Parity constants */
#define NO_PARITY 0x00
#define ODD_PARITY 0x01
#define EVEN_PARITY 0x02
#define MARK_PARITY 0x03
#define SPACE_PARITY 0x04
/* IOCTL_SERIAL_(GET_MODEM_CONTROL, SET_MODEM_CONTROL) flags */
#define SERIAL_IOC_MCR_DTR 0x00000001
#define SERIAL_IOC_MCR_RTS 0x00000002
#define SERIAL_IOC_MCR_OUT1 0x00000004
#define SERIAL_IOC_MCR_OUT2 0x00000008
#define SERIAL_IOC_MCR_LOOP 0x00000010
typedef struct _SERIAL_COMMPROP {
USHORT PacketLength;
USHORT PacketVersion;
ULONG ServiceMask;
ULONG Reserved1;
ULONG MaxTxQueue;
ULONG MaxRxQueue;
ULONG MaxBaud;
ULONG ProvSubType;
ULONG ProvCapabilities;
ULONG SettableParams;
ULONG SettableBaud;
USHORT SettableData;
USHORT SettableStopParity;
ULONG CurrentTxQueue;
ULONG CurrentRxQueue;
ULONG ProvSpec1;
ULONG ProvSpec2;
WCHAR ProvChar[1];
} SERIAL_COMMPROP, *PSERIAL_COMMPROP;
/* SERIAL_COMMPROP.SettableParams flags */
#define SERIAL_SP_PARITY 0x0001
#define SERIAL_SP_BAUD 0x0002
#define SERIAL_SP_DATABITS 0x0004
#define SERIAL_SP_STOPBITS 0x0008
#define SERIAL_SP_HANDSHAKING 0x0010
#define SERIAL_SP_PARITY_CHECK 0x0020
#define SERIAL_SP_CARRIER_DETECT 0x0040
/* SERIAL_COMMPROP.ProvCapabilities flags */
#define SERIAL_PCF_DTRDSR 0x00000001
#define SERIAL_PCF_RTSCTS 0x00000002
#define SERIAL_PCF_CD 0x00000004
#define SERIAL_PCF_PARITY_CHECK 0x00000008
#define SERIAL_PCF_XONXOFF 0x00000010
#define SERIAL_PCF_SETXCHAR 0x00000020
#define SERIAL_PCF_TOTALTIMEOUTS 0x00000040
#define SERIAL_PCF_INTTIMEOUTS 0x00000080
#define SERIAL_PCF_SPECIALCHARS 0x00000100
#define SERIAL_PCF_16BITMODE 0x00000200
/* SERIAL_COMMPROP.SettableData flags */
#define SERIAL_DATABITS_5 0x0001
#define SERIAL_DATABITS_6 0x0002
#define SERIAL_DATABITS_7 0x0004
#define SERIAL_DATABITS_8 0x0008
#define SERIAL_DATABITS_16 0x0010
#define SERIAL_DATABITS_16X 0x0020
/* SERIAL_COMMPROP.SettableStopParity flags */
#define SERIAL_STOPBITS_10 0x0001
#define SERIAL_STOPBITS_15 0x0002
#define SERIAL_STOPBITS_20 0x0004
#define SERIAL_PARITY_NONE 0x0100
#define SERIAL_PARITY_ODD 0x0200
#define SERIAL_PARITY_EVEN 0x0400
#define SERIAL_PARITY_MARK 0x0800
#define SERIAL_PARITY_SPACE 0x1000
typedef struct _SERIALPERF_STATS {
ULONG ReceivedCount;
ULONG TransmittedCount;
ULONG FrameErrorCount;
ULONG SerialOverrunErrorCount;
ULONG BufferOverrunErrorCount;
ULONG ParityErrorCount;
} SERIALPERF_STATS, *PSERIALPERF_STATS;
typedef struct _SERIAL_TIMEOUTS {
ULONG ReadIntervalTimeout;
ULONG ReadTotalTimeoutMultiplier;
ULONG ReadTotalTimeoutConstant;
ULONG WriteTotalTimeoutMultiplier;
ULONG WriteTotalTimeoutConstant;
} SERIAL_TIMEOUTS, *PSERIAL_TIMEOUTS;
/* IOCTL_SERIAL_(GET_WAIT_MASK, SET_WAIT_MASK, WAIT_ON_MASK) flags */
#define SERIAL_EV_RXCHAR 0x0001
#define SERIAL_EV_RXFLAG 0x0002
#define SERIAL_EV_TXEMPTY 0x0004
#define SERIAL_EV_CTS 0x0008
#define SERIAL_EV_DSR 0x0010
#define SERIAL_EV_RLSD 0x0020
#define SERIAL_EV_BREAK 0x0040
#define SERIAL_EV_ERR 0x0080
#define SERIAL_EV_RING 0x0100
#define SERIAL_EV_PERR 0x0200
#define SERIAL_EV_RX80FULL 0x0400
#define SERIAL_EV_EVENT1 0x0800
#define SERIAL_EV_EVENT2 0x1000
/* IOCTL_SERIAL_LSRMST_INSERT constants */
#define SERIAL_LSRMST_LSR_DATA 0x01
#define SERIAL_LSRMST_LSR_NODATA 0x02
#define SERIAL_LSRMST_MST 0x03
#define SERIAL_LSRMST_ESCAPE 0x00
/* IOCTL_SERIAL_PURGE constants */
#define SERIAL_PURGE_TXABORT 0x00000001
#define SERIAL_PURGE_RXABORT 0x00000002
#define SERIAL_PURGE_TXCLEAR 0x00000004
#define SERIAL_PURGE_RXCLEAR 0x00000008
/* IOCTL_SERIAL_SET_FIFO_CONTROL constants */
#define SERIAL_IOC_FCR_FIFO_ENABLE 0x00000001
#define SERIAL_IOC_FCR_RCVR_RESET 0x00000002
#define SERIAL_IOC_FCR_XMIT_RESET 0x00000004
#define SERIAL_IOC_FCR_DMA_MODE 0x00000008
#define SERIAL_IOC_FCR_RES1 0x00000010
#define SERIAL_IOC_FCR_RES2 0x00000020
#define SERIAL_IOC_FCR_RCVR_TRIGGER_LSB 0x00000040
#define SERIAL_IOC_FCR_RCVR_TRIGGER_MSB 0x00000080
typedef struct _SERIAL_QUEUE_SIZE {
ULONG InSize;
ULONG OutSize;
} SERIAL_QUEUE_SIZE, *PSERIAL_QUEUE_SIZE;
typedef struct _SERIAL_XOFF_COUNTER {
ULONG Timeout;
LONG Counter;
UCHAR XoffChar;
} SERIAL_XOFF_COUNTER, *PSERIAL_XOFF_COUNTER;
typedef struct _SERIAL_BASIC_SETTINGS {
SERIAL_TIMEOUTS Timeouts;
SERIAL_HANDFLOW HandFlow;
ULONG RxFifo;
ULONG TxFifo;
} SERIAL_BASIC_SETTINGS, *PSERIAL_BASIC_SETTINGS;
typedef struct _SERENUM_PORT_DESC {
ULONG Size;
PVOID PortHandle;
PHYSICAL_ADDRESS PortAddress;
USHORT Reserved[1];
} SERENUM_PORT_DESC, *PSERENUM_PORT_DESC;
typedef UCHAR STDCALL
(*PSERENUM_READPORT)(
PVOID SerPortAddress);
typedef VOID STDCALL
(*PSERENUM_WRITEPORT)(
PVOID SerPortAddress,
UCHAR Value);
typedef enum _SERENUM_PORTION {
SerenumFirstHalf,
SerenumSecondHalf,
SerenumWhole
} SERENUM_PORTION;
typedef struct _SERENUM_PORT_PARAMETERS {
ULONG Size;
PSERENUM_READPORT ReadAccessor;
PSERENUM_WRITEPORT WriteAccessor;
PVOID SerPortAddress;
PVOID HardwareHandle;
SERENUM_PORTION Portion;
USHORT NumberAxis;
USHORT Reserved[3];
} SERENUM_PORT_PARAMETERS, *PSERENUM_PORT_PARAMETERS;
#define SERIAL_ERROR_BREAK 0x00000001
#define SERIAL_ERROR_FRAMING 0x00000002
#define SERIAL_ERROR_OVERRUN 0x00000004
#define SERIAL_ERROR_QUEUEOVERRUN 0x00000008
#define SERIAL_ERROR_PARITY 0x00000010
#define SERIAL_SP_UNSPECIFIED 0x00000000
#define SERIAL_SP_RS232 0x00000001
#define SERIAL_SP_PARALLEL 0x00000002
#define SERIAL_SP_RS422 0x00000003
#define SERIAL_SP_RS423 0x00000004
#define SERIAL_SP_RS449 0x00000005
#define SERIAL_SP_MODEM 0X00000006
#define SERIAL_SP_FAX 0x00000021
#define SERIAL_SP_SCANNER 0x00000022
#define SERIAL_SP_BRIDGE 0x00000100
#define SERIAL_SP_LAT 0x00000101
#define SERIAL_SP_TELNET 0x00000102
#define SERIAL_SP_X25 0x00000103
#define SERIAL_SP_SERIALCOMM 0x00000001
#define SERIAL_TX_WAITING_FOR_CTS 0x00000001
#define SERIAL_TX_WAITING_FOR_DSR 0x00000002
#define SERIAL_TX_WAITING_FOR_DCD 0x00000004
#define SERIAL_TX_WAITING_FOR_XON 0x00000008
#define SERIAL_TX_WAITING_XOFF_SENT 0x00000010
#define SERIAL_TX_WAITING_ON_BREAK 0x00000020
#define SERIAL_RX_WAITING_FOR_DSR 0x00000040
#define SERIAL_DTR_STATE 0x00000001
#define SERIAL_RTS_STATE 0x00000002
#define SERIAL_CTS_STATE 0x00000010
#define SERIAL_DSR_STATE 0x00000020
#define SERIAL_RI_STATE 0x00000040
#define SERIAL_DCD_STATE 0x00000080
typedef struct _SERIALCONFIG {
ULONG Size;
USHORT Version;
ULONG SubType;
ULONG ProvOffset;
ULONG ProviderSize;
WCHAR ProviderData[1];
} SERIALCONFIG,*PSERIALCONFIG;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDSER_H */

View File

@ -0,0 +1,338 @@
/*
* ntddstor.h
*
* Storage class IOCTL interface.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDSTOR_H
#define __NTDDSTOR_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE
#define IOCTL_STORAGE_CHECK_VERIFY \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_STORAGE_CHECK_VERIFY2 \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_EJECT_MEDIA \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_STORAGE_EJECTION_CONTROL \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_FIND_NEW_DEVICES \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_STORAGE_GET_DEVICE_NUMBER \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0304, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_GET_MEDIA_TYPES \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_GET_MEDIA_TYPES_EX \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_LOAD_MEDIA \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_STORAGE_LOAD_MEDIA2 \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_MCN_CONTROL \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_MEDIA_REMOVAL \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_STORAGE_PREDICT_FAILURE \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_QUERY_PROPERTY \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_STORAGE_RELEASE \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_STORAGE_RESERVE \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_STORAGE_RESET_BUS \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_STORAGE_RESET_DEVICE \
CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
DEFINE_GUID(GUID_DEVINTERFACE_DISK,
0x53f56307L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(GUID_DEVINTERFACE_CDROM,
0x53f56308L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(GUID_DEVINTERFACE_PARTITION,
0x53f5630aL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(GUID_DEVINTERFACE_TAPE,
0x53f5630bL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(GUID_DEVINTERFACE_WRITEONCEDISK,
0x53f5630cL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(GUID_DEVINTERFACE_VOLUME,
0x53f5630dL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(GUID_DEVINTERFACE_MEDIUMCHANGER,
0x53f56310L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(GUID_DEVINTERFACE_FLOPPY,
0x53f56311L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(GUID_DEVINTERFACE_CDCHANGER,
0x53f56312L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
DEFINE_GUID(GUID_DEVINTERFACE_STORAGEPORT,
0x2accfe60L, 0xc130, 0x11d2, 0xb0, 0x82, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
typedef enum _STORAGE_MEDIA_TYPE {
DDS_4mm = 0x20,
MiniQic,
Travan,
QIC,
MP_8mm,
AME_8mm,
AIT1_8mm,
DLT,
NCTP,
IBM_3480,
IBM_3490E,
IBM_Magstar_3590,
IBM_Magstar_MP,
STK_DATA_D3,
SONY_DTF,
DV_6mm,
DMI,
SONY_D2,
CLEANER_CARTRIDGE,
CD_ROM,
CD_R,
CD_RW,
DVD_ROM,
DVD_R,
DVD_RW,
MO_3_RW,
MO_5_WO,
MO_5_RW,
MO_5_LIMDOW,
PC_5_WO,
PC_5_RW,
PD_5_RW,
ABL_5_WO,
PINNACLE_APEX_5_RW,
SONY_12_WO,
PHILIPS_12_WO,
HITACHI_12_WO,
CYGNET_12_WO,
KODAK_14_WO,
MO_NFR_525,
NIKON_12_RW,
IOMEGA_ZIP,
IOMEGA_JAZ,
SYQUEST_EZ135,
SYQUEST_EZFLYER,
SYQUEST_SYJET,
AVATAR_F2,
MP2_8mm,
DST_S,
DST_M,
DST_L,
VXATape_1,
VXATape_2,
STK_9840,
LTO_Ultrium,
LTO_Accelis,
DVD_RAM,
AIT_8mm,
ADR_1,
ADR_2
} STORAGE_MEDIA_TYPE, *PSTORAGE_MEDIA_TYPE;
typedef enum _STORAGE_BUS_TYPE {
BusTypeUnknown = 0x00,
BusTypeScsi,
BusTypeAtapi,
BusTypeAta,
BusType1394,
BusTypeSsa,
BusTypeFibre,
BusTypeUsb,
BusTypeRAID,
BusTypeMaxReserved = 0x7F
} STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE;
/* DEVICE_MEDIA_INFO.DeviceSpecific.DiskInfo.MediaCharacteristics constants */
#define MEDIA_ERASEABLE 0x00000001
#define MEDIA_WRITE_ONCE 0x00000002
#define MEDIA_READ_ONLY 0x00000004
#define MEDIA_READ_WRITE 0x00000008
#define MEDIA_WRITE_PROTECTED 0x00000100
#define MEDIA_CURRENTLY_MOUNTED 0x80000000
typedef struct _DEVICE_MEDIA_INFO {
union {
struct {
LARGE_INTEGER Cylinders;
STORAGE_MEDIA_TYPE MediaType;
ULONG TracksPerCylinder;
ULONG SectorsPerTrack;
ULONG BytesPerSector;
ULONG NumberMediaSides;
ULONG MediaCharacteristics;
} DiskInfo;
struct {
LARGE_INTEGER Cylinders;
STORAGE_MEDIA_TYPE MediaType;
ULONG TracksPerCylinder;
ULONG SectorsPerTrack;
ULONG BytesPerSector;
ULONG NumberMediaSides;
ULONG MediaCharacteristics;
} RemovableDiskInfo;
struct {
STORAGE_MEDIA_TYPE MediaType;
ULONG MediaCharacteristics;
ULONG CurrentBlockSize;
STORAGE_BUS_TYPE BusType;
union {
struct {
UCHAR MediumType;
UCHAR DensityCode;
} ScsiInformation;
} BusSpecificData;
} TapeInfo;
} DeviceSpecific;
} DEVICE_MEDIA_INFO, *PDEVICE_MEDIA_INFO;
typedef struct _GET_MEDIA_TYPES {
ULONG DeviceType;
ULONG MediaInfoCount;
DEVICE_MEDIA_INFO MediaInfo[1];
} GET_MEDIA_TYPES, *PGET_MEDIA_TYPES;
typedef struct _STORAGE_ADAPTER_DESCRIPTOR {
ULONG Version;
ULONG Size;
ULONG MaximumTransferLength;
ULONG MaximumPhysicalPages;
ULONG AlignmentMask;
BOOLEAN AdapterUsesPio;
BOOLEAN AdapterScansDown;
BOOLEAN CommandQueueing;
BOOLEAN AcceleratedTransfer;
STORAGE_BUS_TYPE BusType;
USHORT BusMajorVersion;
USHORT BusMinorVersion;
} STORAGE_ADAPTER_DESCRIPTOR, *PSTORAGE_ADAPTER_DESCRIPTOR;
typedef struct _STORAGE_BUS_RESET_REQUEST {
UCHAR PathId;
} STORAGE_BUS_RESET_REQUEST, *PSTORAGE_BUS_RESET_REQUEST;
typedef struct _STORAGE_DESCRIPTOR_HEADER {
ULONG Version;
ULONG Size;
} STORAGE_DESCRIPTOR_HEADER, *PSTORAGE_DESCRIPTOR_HEADER;
typedef struct _STORAGE_DEVICE_DESCRIPTOR {
ULONG Version;
ULONG Size;
UCHAR DeviceType;
UCHAR DeviceTypeModifier;
BOOLEAN RemovableMedia;
BOOLEAN CommandQueueing;
ULONG VendorIdOffset;
ULONG ProductIdOffset;
ULONG ProductRevisionOffset;
ULONG SerialNumberOffset;
STORAGE_BUS_TYPE BusType;
ULONG RawPropertiesLength;
UCHAR RawDeviceProperties[1];
} STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR;
typedef struct _STORAGE_DEVICE_ID_DESCRIPTOR {
ULONG Version;
ULONG Size;
ULONG NumberOfIdentifiers;
UCHAR Identifiers[1];
} STORAGE_DEVICE_ID_DESCRIPTOR, *PSTORAGE_DEVICE_ID_DESCRIPTOR;
typedef struct _STORAGE_DEVICE_NUMBER {
DEVICE_TYPE DeviceType;
ULONG DeviceNumber;
ULONG PartitionNumber;
} STORAGE_DEVICE_NUMBER, *PSTORAGE_DEVICE_NUMBER;
typedef struct _STORAGE_PREDICT_FAILURE {
ULONG PredictFailure;
UCHAR VendorSpecific[512];
} STORAGE_PREDICT_FAILURE, *PSTORAGE_PREDICT_FAILURE;
typedef enum _STORAGE_PROPERTY_ID {
StorageDeviceProperty = 0,
StorageAdapterProperty,
StorageDeviceIdProperty
} STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID;
typedef enum _STORAGE_QUERY_TYPE {
PropertyStandardQuery = 0,
PropertyExistsQuery,
PropertyMaskQuery,
PropertyQueryMaxDefined
} STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE;
typedef struct _STORAGE_PROPERTY_QUERY {
STORAGE_PROPERTY_ID PropertyId;
STORAGE_QUERY_TYPE QueryType;
UCHAR AdditionalParameters[1];
} STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDSTOR_H */

View File

@ -0,0 +1,84 @@
/*
* ntddtape.h
*
* Tape device IOCTL interface.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDTAPE_H
#define __NTDDTAPE_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "ntddstor.h"
#define DD_TAPE_DEVICE_NAME "\\Device\\Tape"
#define DD_TAPE_DEVICE_NAME_U L"\\Device\\Tape"
#define IOCTL_TAPE_BASE FILE_DEVICE_TAPE
#define IOCTL_TAPE_CHECK_VERIFY CTL_CODE(IOCTL_TAPE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_TAPE_CREATE_PARTITION CTL_CODE(IOCTL_TAPE_BASE, 0x000a, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_TAPE_ERASE CTL_CODE(IOCTL_TAPE_BASE, 0x0000, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_TAPE_FIND_NEW_DEVICES CTL_CODE(IOCTL_DISK_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_TAPE_GET_DRIVE_PARAMS CTL_CODE(IOCTL_TAPE_BASE, 0x0005, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_TAPE_GET_MEDIA_PARAMS CTL_CODE(IOCTL_TAPE_BASE, 0x0007, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_TAPE_GET_POSITION CTL_CODE(IOCTL_TAPE_BASE, 0x0003, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_TAPE_GET_STATUS CTL_CODE(IOCTL_TAPE_BASE, 0x0009, METHOD_BUFFERED, FILE_READ_ACCESS )
#define IOCTL_TAPE_PREPARE CTL_CODE(IOCTL_TAPE_BASE, 0x0001, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_TAPE_SET_DRIVE_PARAMS CTL_CODE(IOCTL_TAPE_BASE, 0x0006, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_TAPE_SET_MEDIA_PARAMS CTL_CODE(IOCTL_TAPE_BASE, 0x0008, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_TAPE_SET_POSITION CTL_CODE(IOCTL_TAPE_BASE, 0x0004, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_TAPE_WRITE_MARKS CTL_CODE(IOCTL_TAPE_BASE, 0x0002, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
typedef enum _TAPE_DRIVE_PROBLEM_TYPE {
TapeDriveProblemNone,
TapeDriveReadWriteWarning,
TapeDriveReadWriteError,
TapeDriveReadWarning,
TapeDriveWriteWarning,
TapeDriveReadError,
TapeDriveWriteError,
TapeDriveHardwareError,
TapeDriveUnsupportedMedia,
TapeDriveScsiConnectionError,
TapeDriveTimetoClean,
TapeDriveCleanDriveNow,
TapeDriveMediaLifeExpired,
TapeDriveSnappedTape
} TAPE_DRIVE_PROBLEM_TYPE;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDTAPE_H */

View File

@ -0,0 +1,66 @@
/*
* ntddtdi.h
*
* TDI IOCTL interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDTDI_H
#define __NTDDTDI_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define DD_TDI_DEVICE_NAME "\\Device\\UNKNOWN"
#define DD_TDI_DEVICE_NAME_U L"\\Device\\UNKNOWN"
#define _TDI_CONTROL_CODE(Request, Method) \
CTL_CODE(FILE_DEVICE_TRANSPORT, Request, Method, FILE_ANY_ACCESS)
#define IOCTL_TDI_ACCEPT _TDI_CONTROL_CODE(0, METHOD_BUFFERED)
#define IOCTL_TDI_CONNECT _TDI_CONTROL_CODE(1, METHOD_BUFFERED)
#define IOCTL_TDI_DISCONNECT _TDI_CONTROL_CODE(2, METHOD_BUFFERED)
#define IOCTL_TDI_LISTEN _TDI_CONTROL_CODE(3, METHOD_BUFFERED)
#define IOCTL_TDI_QUERY_INFORMATION _TDI_CONTROL_CODE(4, METHOD_OUT_DIRECT)
#define IOCTL_TDI_RECEIVE _TDI_CONTROL_CODE(5, METHOD_OUT_DIRECT)
#define IOCTL_TDI_RECEIVE_DATAGRAM _TDI_CONTROL_CODE(6, METHOD_OUT_DIRECT)
#define IOCTL_TDI_SEND _TDI_CONTROL_CODE(7, METHOD_IN_DIRECT)
#define IOCTL_TDI_SEND_DATAGRAM _TDI_CONTROL_CODE(8, METHOD_IN_DIRECT)
#define IOCTL_TDI_SET_EVENT_HANDLER _TDI_CONTROL_CODE(9, METHOD_BUFFERED)
#define IOCTL_TDI_SET_INFORMATION _TDI_CONTROL_CODE(10, METHOD_IN_DIRECT)
#define IOCTL_TDI_ASSOCIATE_ADDRESS _TDI_CONTROL_CODE(11, METHOD_BUFFERED)
#define IOCTL_TDI_DISASSOCIATE_ADDRESS _TDI_CONTROL_CODE(12, METHOD_BUFFERED)
#define IOCTL_TDI_ACTION _TDI_CONTROL_CODE(13, METHOD_OUT_DIRECT)
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDTDI_H */

View File

@ -0,0 +1,444 @@
/*
* ntddvdeo.h
*
* Definitions for video devices
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDVDEO_H
#define __NTDDVDEO_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define VIDEO_DEVICE_NAME "DISPLAY%d"
#define WVIDEO_DEVICE_NAME L"DISPLAY%d"
#define DD_FULLSCREEN_VIDEO_DEVICE_NAME L"\\Device\\FSVideo"
DEFINE_GUID(GUID_DEVINTERFACE_DISPLAY_ADAPTER, \
0x5b45201d, 0xf2f2, 0x4f3b, 0x85, 0xbb, 0x30, 0xff, 0x1f, 0x95, 0x35, 0x99);
#define IOCTL_VIDEO_DISABLE_CURSOR \
CTL_CODE (FILE_DEVICE_VIDEO, 0x109, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_DISABLE_POINTER \
CTL_CODE(FILE_DEVICE_VIDEO, 0x10f, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_ENABLE_CURSOR \
CTL_CODE(FILE_DEVICE_VIDEO, 0x108, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_ENABLE_POINTER \
CTL_CODE(FILE_DEVICE_VIDEO, 0x10e, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES \
CTL_CODE(FILE_DEVICE_VIDEO, 0x119, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_GET_BANK_SELECT_CODE \
CTL_CODE(FILE_DEVICE_VIDEO, 0x115, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_GET_CHILD_STATE \
CTL_CODE(FILE_DEVICE_VIDEO, 0x120, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_GET_POWER_MANAGEMENT \
CTL_CODE(FILE_DEVICE_VIDEO, 0x11c, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS \
CTL_CODE(FILE_DEVICE_VIDEO, 0x08, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_LOAD_AND_SET_FONT \
CTL_CODE(FILE_DEVICE_VIDEO, 0x105, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_MAP_VIDEO_MEMORY \
CTL_CODE(FILE_DEVICE_VIDEO, 0x116, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_QUERY_AVAIL_MODES \
CTL_CODE(FILE_DEVICE_VIDEO, 0x100, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES \
CTL_CODE(FILE_DEVICE_VIDEO, 0x11a, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_QUERY_CURRENT_MODE \
CTL_CODE(FILE_DEVICE_VIDEO, 0x102, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_QUERY_CURSOR_ATTR \
CTL_CODE(FILE_DEVICE_VIDEO, 0x10b, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_QUERY_CURSOR_POSITION \
CTL_CODE(FILE_DEVICE_VIDEO, 0x10d, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES \
CTL_CODE(FILE_DEVICE_VIDEO, 0x101, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_QUERY_POINTER_ATTR \
CTL_CODE(FILE_DEVICE_VIDEO, 0x111, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES \
CTL_CODE(FILE_DEVICE_VIDEO, 0x114, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_QUERY_POINTER_POSITION \
CTL_CODE(FILE_DEVICE_VIDEO, 0x113, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES \
CTL_CODE(FILE_DEVICE_VIDEO, 0x118, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_RESET_DEVICE \
CTL_CODE(FILE_DEVICE_VIDEO, 0x104, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_RESTORE_HARDWARE_STATE \
CTL_CODE(FILE_DEVICE_VIDEO, 0x81, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_SAVE_HARDWARE_STATE \
CTL_CODE(FILE_DEVICE_VIDEO, 0x80, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION \
CTL_CODE(FILE_DEVICE_VIDEO, 0x122, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_SET_COLOR_REGISTERS \
CTL_CODE(FILE_DEVICE_VIDEO, 0x107, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_SET_CURRENT_MODE \
CTL_CODE(FILE_DEVICE_VIDEO, 0x103, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_SET_CURSOR_ATTR \
CTL_CODE(FILE_DEVICE_VIDEO, 0x10a, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_SET_CURSOR_POSITION \
CTL_CODE(FILE_DEVICE_VIDEO, 0x10c, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_SET_PALETTE_REGISTERS \
CTL_CODE(FILE_DEVICE_VIDEO, 0x106, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_SET_POINTER_ATTR \
CTL_CODE(FILE_DEVICE_VIDEO, 0x110, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_SET_POINTER_POSITION \
CTL_CODE(FILE_DEVICE_VIDEO, 0x112, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_SET_POWER_MANAGEMENT \
CTL_CODE(FILE_DEVICE_VIDEO, 0x11b, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_SHARE_VIDEO_MEMORY \
CTL_CODE(FILE_DEVICE_VIDEO, 0x11d, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_SWITCH_DUALVIEW \
CTL_CODE(FILE_DEVICE_VIDEO, 0x123, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_UNMAP_VIDEO_MEMORY \
CTL_CODE(FILE_DEVICE_VIDEO, 0x117, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY \
CTL_CODE(FILE_DEVICE_VIDEO, 0x11e, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION \
CTL_CODE(FILE_DEVICE_VIDEO, 0x121, METHOD_BUFFERED, FILE_ANY_ACCESS)
typedef struct _VIDEO_MEMORY {
PVOID RequestedVirtualAddress;
} VIDEO_MEMORY, *PVIDEO_MEMORY;
typedef struct _VIDEO_MEMORY_INFORMATION {
PVOID VideoRamBase;
ULONG VideoRamLength;
PVOID FrameBufferBase;
ULONG FrameBufferLength;
} VIDEO_MEMORY_INFORMATION, *PVIDEO_MEMORY_INFORMATION;
/* VIDEO_MODE.RequestedMode */
#define VIDEO_MODE_MAP_MEM_LINEAR 0x40000000
#define VIDEO_MODE_NO_ZERO_MEMORY 0x80000000
typedef struct _VIDEO_MODE {
ULONG RequestedMode;
} VIDEO_MODE, *PVIDEO_MODE;
/* VIDEO_MODE_INFORMATION.AttributeFlags */
#define VIDEO_MODE_COLOR 0x0001
#define VIDEO_MODE_GRAPHICS 0x0002
#define VIDEO_MODE_PALETTE_DRIVEN 0x0004
#define VIDEO_MODE_MANAGED_PALETTE 0x0008
#define VIDEO_MODE_INTERLACED 0x0010
#define VIDEO_MODE_NO_OFF_SCREEN 0x0020
#define VIDEO_MODE_NO_64_BIT_ACCESS 0x0040
#define VIDEO_MODE_BANKED 0x0080
#define VIDEO_MODE_LINEAR 0x0100
typedef struct _VIDEO_MODE_INFORMATION {
ULONG Length;
ULONG ModeIndex;
ULONG VisScreenWidth;
ULONG VisScreenHeight;
ULONG ScreenStride;
ULONG NumberOfPlanes;
ULONG BitsPerPlane;
ULONG Frequency;
ULONG XMillimeter;
ULONG YMillimeter;
ULONG NumberRedBits;
ULONG NumberGreenBits;
ULONG NumberBlueBits;
ULONG RedMask;
ULONG GreenMask;
ULONG BlueMask;
ULONG AttributeFlags;
ULONG VideoMemoryBitmapWidth;
ULONG VideoMemoryBitmapHeight;
ULONG DriverSpecificAttributeFlags;
} VIDEO_MODE_INFORMATION, *PVIDEO_MODE_INFORMATION;
typedef struct _VIDEO_NUM_MODES {
ULONG NumModes;
ULONG ModeInformationLength;
} VIDEO_NUM_MODES, *PVIDEO_NUM_MODES;
typedef enum _VIDEO_POWER_STATE {
VideoPowerUnspecified = 0,
VideoPowerOn = 1,
VideoPowerStandBy,
VideoPowerSuspend,
VideoPowerOff,
VideoPowerHibernate,
VideoPowerShutdown,
VideoPowerMaximum
} VIDEO_POWER_STATE, *PVIDEO_POWER_STATE;
typedef struct _VIDEO_POWER_MANAGEMENT {
ULONG Length;
ULONG DPMSVersion;
ULONG PowerState;
} VIDEO_POWER_MANAGEMENT, *PVIDEO_POWER_MANAGEMENT;
typedef struct _VIDEO_PUBLIC_ACCESS_RANGES {
ULONG InIoSpace;
ULONG MappedInIoSpace;
PVOID VirtualAddress;
} VIDEO_PUBLIC_ACCESS_RANGES, *PVIDEO_PUBLIC_ACCESS_RANGES;
typedef struct _VIDEO_SHARE_MEMORY {
HANDLE ProcessHandle;
ULONG ViewOffset;
ULONG ViewSize;
PVOID RequestedVirtualAddress;
} VIDEO_SHARE_MEMORY, *PVIDEO_SHARE_MEMORY;
typedef struct _VIDEO_SHARE_MEMORY_INFORMATION {
ULONG SharedViewOffset;
ULONG SharedViewSize;
PVOID VirtualAddress;
} VIDEO_SHARE_MEMORY_INFORMATION, *PVIDEO_SHARE_MEMORY_INFORMATION;
/* VIDEO_BANK_SELECT.BankingFlags constants */
#define PLANAR_HC 0x00000001
/* VIDEO_BANK_SELECT.BankingType and PlanarHCBankingType constants */
typedef enum _VIDEO_BANK_TYPE {
VideoNotBanked = 0,
VideoBanked1RW,
VideoBanked1R1W,
VideoBanked2RW,
NumVideoBankTypes
} VIDEO_BANK_TYPE, *PVIDEO_BANK_TYPE;
typedef struct _VIDEO_BANK_SELECT {
ULONG Length;
ULONG Size;
ULONG BankingFlags;
ULONG BankingType;
ULONG PlanarHCBankingType;
ULONG BitmapWidthInBytes;
ULONG BitmapSize;
ULONG Granularity;
ULONG PlanarHCGranularity;
ULONG CodeOffset;
ULONG PlanarHCBankCodeOffset;
ULONG PlanarHCEnableCodeOffset;
ULONG PlanarHCDisableCodeOffset;
} VIDEO_BANK_SELECT, *PVIDEO_BANK_SELECT;
typedef struct _VIDEO_LOAD_FONT_INFORMATION {
USHORT WidthInPixels;
USHORT HeightInPixels;
ULONG FontSize;
UCHAR Font[1];
} VIDEO_LOAD_FONT_INFORMATION, *PVIDEO_LOAD_FONT_INFORMATION;
/* VIDEO_COLOR_CAPABILITIES.AttributeFlags constants */
#define VIDEO_DEVICE_COLOR 0x00000001
#define VIDEO_OPTIONAL_GAMMET_TABLE 0x00000002
typedef struct _VIDEO_COLOR_CAPABILITIES {
ULONG Length;
ULONG AttributeFlags;
LONG RedPhosphoreDecay;
LONG GreenPhosphoreDecay;
LONG BluePhosphoreDecay;
LONG WhiteChromaticity_x;
LONG WhiteChromaticity_y;
LONG WhiteChromaticity_Y;
LONG RedChromaticity_x;
LONG RedChromaticity_y;
LONG GreenChromaticity_x;
LONG GreenChromaticity_y;
LONG BlueChromaticity_x;
LONG BlueChromaticity_y;
LONG WhiteGamma;
LONG RedGamma;
LONG GreenGamma;
LONG BlueGamma;
} VIDEO_COLOR_CAPABILITIES, *PVIDEO_COLOR_CAPABILITIES;
typedef struct _VIDEO_CURSOR_ATTRIBUTES {
USHORT Width;
USHORT Height;
SHORT Column;
SHORT Row;
UCHAR Rate;
UCHAR Enable;
} VIDEO_CURSOR_ATTRIBUTES, *PVIDEO_CURSOR_ATTRIBUTES;
typedef struct _VIDEO_CURSOR_POSITION {
SHORT Column;
SHORT Row;
} VIDEO_CURSOR_POSITION, *PVIDEO_CURSOR_POSITION;
typedef struct _VIDEO_POINTER_ATTRIBUTES {
ULONG Flags;
ULONG Width;
ULONG Height;
ULONG WidthInBytes;
ULONG Enable;
SHORT Column;
SHORT Row;
UCHAR Pixels[1];
} VIDEO_POINTER_ATTRIBUTES, *PVIDEO_POINTER_ATTRIBUTES;
/* VIDEO_POINTER_CAPABILITIES.Flags */
#define VIDEO_MODE_ASYNC_POINTER 0x01
#define VIDEO_MODE_MONO_POINTER 0x02
#define VIDEO_MODE_COLOR_POINTER 0x04
#define VIDEO_MODE_ANIMATE_START 0x08
#define VIDEO_MODE_ANIMATE_UPDATE 0x10
typedef struct _VIDEO_POINTER_CAPABILITIES {
ULONG Flags;
ULONG MaxWidth;
ULONG MaxHeight;
ULONG HWPtrBitmapStart;
ULONG HWPtrBitmapEnd;
} VIDEO_POINTER_CAPABILITIES, *PVIDEO_POINTER_CAPABILITIES;
typedef struct _VIDEO_POINTER_POSITION {
SHORT Column;
SHORT Row;
} VIDEO_POINTER_POSITION, *PVIDEO_POINTER_POSITION;
/* VIDEO_HARDWARE_STATE_HEADER.VGAStateFlags constants */
#define VIDEO_STATE_NON_STANDARD_VGA 0x00000001
#define VIDEO_STATE_UNEMULATED_VGA_STATE 0x00000002
#define VIDEO_STATE_PACKED_CHAIN4_MODE 0x00000004
typedef struct _VIDEO_HARDWARE_STATE_HEADER {
ULONG Length;
UCHAR PortValue[0x30];
ULONG AttribIndexDataState;
ULONG BasicSequencerOffset;
ULONG BasicCrtContOffset;
ULONG BasicGraphContOffset;
ULONG BasicAttribContOffset;
ULONG BasicDacOffset;
ULONG BasicLatchesOffset;
ULONG ExtendedSequencerOffset;
ULONG ExtendedCrtContOffset;
ULONG ExtendedGraphContOffset;
ULONG ExtendedAttribContOffset;
ULONG ExtendedDacOffset;
ULONG ExtendedValidatorStateOffset;
ULONG ExtendedMiscDataOffset;
ULONG PlaneLength;
ULONG Plane1Offset;
ULONG Plane2Offset;
ULONG Plane3Offset;
ULONG Plane4Offset;
ULONG VGAStateFlags;
ULONG DIBOffset;
ULONG DIBBitsPerPixel;
ULONG DIBXResolution;
ULONG DIBYResolution;
ULONG DIBXlatOffset;
ULONG DIBXlatLength;
ULONG VesaInfoOffset;
PVOID FrameBufferData;
} VIDEO_HARDWARE_STATE_HEADER, *PVIDEO_HARDWARE_STATE_HEADER;
typedef struct _VIDEO_CLUTDATA {
UCHAR Red;
UCHAR Green;
UCHAR Blue;
UCHAR Unused;
} VIDEO_CLUTDATA, *PVIDEO_CLUTDATA;
typedef struct {
USHORT NumEntries;
USHORT FirstEntry;
union {
VIDEO_CLUTDATA RgbArray;
ULONG RgbLong;
} LookupTable[1];
} VIDEO_CLUT, *PVIDEO_CLUT;
typedef struct _VIDEO_PALETTE_DATA {
USHORT NumEntries;
USHORT FirstEntry;
USHORT Colors[1];
} VIDEO_PALETTE_DATA, *PVIDEO_PALETTE_DATA;
typedef struct _VIDEO_HARDWARE_STATE {
PVIDEO_HARDWARE_STATE_HEADER StateHeader;
ULONG StateLength;
} VIDEO_HARDWARE_STATE, *PVIDEO_HARDWARE_STATE;
#define VIDEO_CHILD_ACTIVE 0x00000001
#define VIDEO_CHILD_DETACHED 0x00000002
#define VIDEO_CHILD_NOPRUNE_FREQ 0x80000000
#define VIDEO_CHILD_NOPRUNE_RESOLUTION 0x40000000
#define VIDEO_DUALVIEW_REMOVABLE 0x00000001
#define VIDEO_DUALVIEW_PRIMARY 0x80000000
#define VIDEO_DUALVIEW_SECONDARY 0x40000000
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDVDEO_H */

View File

@ -0,0 +1,146 @@
/*
* ntddvol.h
*
* Volume IOCTL interface.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTDDVOL_H
#define __NTDDVOL_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define IOCTL_VOLUME_BASE ((ULONG) 'V')
#define IOCTL_VOLUME_LOGICAL_TO_PHYSICAL \
CTL_CODE(IOCTL_VOLUME_BASE, 8, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VOLUME_PHYSICAL_TO_LOGICAL \
CTL_CODE(IOCTL_VOLUME_BASE, 9, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VOLUME_READ_PLEX \
CTL_CODE(IOCTL_VOLUME_BASE, 11, METHOD_OUT_DIRECT, FILE_READ_ACCESS)
#define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS \
CTL_CODE(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VOLUME_IS_CLUSTERED \
CTL_CODE(IOCTL_VOLUME_BASE, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VOLUME_QUERY_VOLUME_NUMBER \
CTL_CODE(IOCTL_VOLUME_BASE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VOLUME_IS_PARTITION \
CTL_CODE(IOCTL_VOLUME_BASE, 10, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VOLUME_SET_GPT_ATTRIBUTES \
CTL_CODE(IOCTL_VOLUME_BASE, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VOLUME_GET_GPT_ATTRIBUTES \
CTL_CODE(IOCTL_VOLUME_BASE, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VOLUME_SUPPORTS_ONLINE_OFFLINE \
CTL_CODE(IOCTL_VOLUME_BASE, 1, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VOLUME_ONLINE \
CTL_CODE(IOCTL_VOLUME_BASE, 2, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_VOLUME_OFFLINE \
CTL_CODE(IOCTL_VOLUME_BASE, 3, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define IOCTL_VOLUME_IS_OFFLINE \
CTL_CODE(IOCTL_VOLUME_BASE, 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VOLUME_IS_IO_CAPABLE \
CTL_CODE(IOCTL_VOLUME_BASE, 5, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_VOLUME_QUERY_FAILOVER_SET \
CTL_CODE(IOCTL_VOLUME_BASE, 6, METHOD_BUFFERED, FILE_ANY_ACCESS)
typedef struct _VOLUME_LOGICAL_OFFSET {
LONGLONG LogicalOffset;
} VOLUME_LOGICAL_OFFSET, *PVOLUME_LOGICAL_OFFSET;
typedef struct _VOLUME_PHYSICAL_OFFSET {
ULONG DiskNumber;
LONGLONG Offset;
} VOLUME_PHYSICAL_OFFSET, *PVOLUME_PHYSICAL_OFFSET;
typedef struct _VOLUME_PHYSICAL_OFFSETS {
ULONG NumberOfPhysicalOffsets;
VOLUME_PHYSICAL_OFFSET PhysicalOffset[1];
} VOLUME_PHYSICAL_OFFSETS, *PVOLUME_PHYSICAL_OFFSETS;
typedef struct _VOLUME_READ_PLEX_INPUT {
LARGE_INTEGER ByteOffset;
ULONG Length;
ULONG PlexNumber;
} VOLUME_READ_PLEX_INPUT, *PVOLUME_READ_PLEX_INPUT;
typedef struct _VOLUME_GET_GPT_ATTRIBUTES_INFORMATION {
ULONGLONG GptAttributes;
} VOLUME_GET_GPT_ATTRIBUTES_INFORMATION, *PVOLUME_GET_GPT_ATTRIBUTES_INFORMATION;
typedef struct _VOLUME_SET_GPT_ATTRIBUTES_INFORMATION {
ULONGLONG GptAttributes;
BOOLEAN RevertOnClose;
BOOLEAN ApplyToAllConnectedVolumes;
USHORT Reserved1;
ULONG Reserved2;
} VOLUME_SET_GPT_ATTRIBUTES_INFORMATION, *PVOLUME_SET_GPT_ATTRIBUTES_INFORMATION;
typedef struct _DISK_EXTENT {
ULONG DiskNumber;
LARGE_INTEGER StartingOffset;
LARGE_INTEGER ExtentLength;
} DISK_EXTENT, *PDISK_EXTENT;
typedef struct _VOLUME_DISK_EXTENTS {
ULONG NumberOfDiskExtents;
DISK_EXTENT Extents[1];
} VOLUME_DISK_EXTENTS, *PVOLUME_DISK_EXTENTS;
typedef struct _VOLUME_NUMBER {
ULONG VolumeNumber;
WCHAR VolumeManagerName[8];
} VOLUME_NUMBER, *PVOLUME_NUMBER;
typedef struct _VOLUME_FAILOVER_SET {
ULONG NumberOfDisks;
ULONG DiskNumbers[1];
} VOLUME_FAILOVER_SET, *PVOLUME_FAILOVER_SET;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTDDVOL_H */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,425 @@
/*
* ntpoapi.h
*
* APIs for power management.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __NTPOAPI_H
#define __NTPOAPI_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "batclass.h"
#define ES_SYSTEM_REQUIRED 0x00000001
#define ES_DISPLAY_REQUIRED 0x00000002
#define ES_USER_PRESENT 0x00000004
#define ES_CONTINUOUS 0x80000000
typedef enum _LATENCY_TIME {
LT_DONT_CARE,
LT_LOWEST_LATENCY
} LATENCY_TIME, *PLATENCY_TIME;
#define POWER_SYSTEM_MAXIMUM PowerSystemMaximum
typedef enum _POWER_INFORMATION_LEVEL {
SystemPowerPolicyAc,
SystemPowerPolicyDc,
VerifySystemPolicyAc,
VerifySystemPolicyDc,
SystemPowerCapabilities,
SystemBatteryState,
SystemPowerStateHandler,
ProcessorStateHandler,
SystemPowerPolicyCurrent,
AdministratorPowerPolicy,
SystemReserveHiberFile,
ProcessorInformation,
SystemPowerInformation,
ProcessorStateHandler2,
LastWakeTime,
LastSleepTime,
SystemExecutionState,
SystemPowerStateNotifyHandler,
ProcessorPowerPolicyAc,
ProcessorPowerPolicyDc,
VerifyProcessorPowerPolicyAc,
VerifyProcessorPowerPolicyDc,
ProcessorPowerPolicyCurrent
} POWER_INFORMATION_LEVEL;
#define POWER_PERF_SCALE 100
#define PERF_LEVEL_TO_PERCENT(x) (((x) * 1000) / (POWER_PERF_SCALE * 10))
#define PERCENT_TO_PERF_LEVEL(x) (((x) * POWER_PERF_SCALE * 10) / 1000)
typedef struct _PROCESSOR_IDLE_TIMES {
ULONGLONG StartTime;
ULONGLONG EndTime;
ULONG IdleHandlerReserved[4];
} PROCESSOR_IDLE_TIMES, *PPROCESSOR_IDLE_TIMES;
typedef BOOLEAN DDKFASTAPI
(*PPROCESSOR_IDLE_HANDLER)(
IN OUT PPROCESSOR_IDLE_TIMES IdleTimes);
typedef struct _PROCESSOR_IDLE_HANDLER_INFO {
ULONG HardwareLatency;
PPROCESSOR_IDLE_HANDLER Handler;
} PROCESSOR_IDLE_HANDLER_INFO, *PPROCESSOR_IDLE_HANDLER_INFO;
typedef VOID DDKFASTAPI
(*PSET_PROCESSOR_THROTTLE)(
IN UCHAR Throttle);
typedef NTSTATUS DDKFASTAPI
(*PSET_PROCESSOR_THROTTLE2)(
IN UCHAR Throttle);
#define MAX_IDLE_HANDLERS 3
typedef struct _PROCESSOR_STATE_HANDLER {
UCHAR ThrottleScale;
BOOLEAN ThrottleOnIdle;
PSET_PROCESSOR_THROTTLE SetThrottle;
ULONG NumIdleHandlers;
PROCESSOR_IDLE_HANDLER_INFO IdleHandler[MAX_IDLE_HANDLERS];
} PROCESSOR_STATE_HANDLER, *PPROCESSOR_STATE_HANDLER;
typedef enum _POWER_STATE_HANDLER_TYPE {
PowerStateSleeping1,
PowerStateSleeping2,
PowerStateSleeping3,
PowerStateSleeping4,
PowerStateSleeping4Firmware,
PowerStateShutdownReset,
PowerStateShutdownOff,
PowerStateMaximum
} POWER_STATE_HANDLER_TYPE, *PPOWER_STATE_HANDLER_TYPE;
typedef NTSTATUS DDKAPI
(*PENTER_STATE_SYSTEM_HANDLER)(
IN PVOID SystemContext);
typedef NTSTATUS DDKAPI
(*PENTER_STATE_HANDLER)(
IN PVOID Context,
IN PENTER_STATE_SYSTEM_HANDLER SystemHandler OPTIONAL,
IN PVOID SystemContext,
IN LONG NumberProcessors,
IN VOLATILE PLONG Number);
typedef struct _POWER_STATE_HANDLER {
POWER_STATE_HANDLER_TYPE Type;
BOOLEAN RtcWake;
UCHAR Spare[3];
PENTER_STATE_HANDLER Handler;
PVOID Context;
} POWER_STATE_HANDLER, *PPOWER_STATE_HANDLER;
typedef NTSTATUS STDCALL
(*PENTER_STATE_NOTIFY_HANDLER)(
IN POWER_STATE_HANDLER_TYPE State,
IN PVOID Context,
IN BOOLEAN Entering);
typedef struct _POWER_STATE_NOTIFY_HANDLER {
PENTER_STATE_NOTIFY_HANDLER Handler;
PVOID Context;
} POWER_STATE_NOTIFY_HANDLER, *PPOWER_STATE_NOTIFY_HANDLER;
NTOSAPI
NTSTATUS
DDKAPI
NtPowerInformation(
IN POWER_INFORMATION_LEVEL InformationLevel,
IN PVOID InputBuffer OPTIONAL,
IN ULONG InputBufferLength,
OUT PVOID OutputBuffer OPTIONAL,
IN ULONG OutputBufferLength);
#define PROCESSOR_STATE_TYPE_PERFORMANCE 1
#define PROCESSOR_STATE_TYPE_THROTTLE 2
typedef struct _PROCESSOR_PERF_LEVEL {
UCHAR PercentFrequency;
UCHAR Reserved;
USHORT Flags;
} PROCESSOR_PERF_LEVEL, *PPROCESSOR_PERF_LEVEL;
typedef struct _PROCESSOR_PERF_STATE {
UCHAR PercentFrequency;
UCHAR MinCapacity;
USHORT Power;
UCHAR IncreaseLevel;
UCHAR DecreaseLevel;
USHORT Flags;
ULONG IncreaseTime;
ULONG DecreaseTime;
ULONG IncreaseCount;
ULONG DecreaseCount;
ULONGLONG PerformanceTime;
} PROCESSOR_PERF_STATE, *PPROCESSOR_PERF_STATE;
typedef struct _PROCESSOR_STATE_HANDLER2 {
ULONG NumIdleHandlers;
PROCESSOR_IDLE_HANDLER_INFO IdleHandler[MAX_IDLE_HANDLERS];
PSET_PROCESSOR_THROTTLE2 SetPerfLevel;
ULONG HardwareLatency;
UCHAR NumPerfStates;
PROCESSOR_PERF_LEVEL PerfLevel[1];
} PROCESSOR_STATE_HANDLER2, *PPROCESSOR_STATE_HANDLER2;
/* POWER_ACTION_POLICY.Flags constants */
#define POWER_ACTION_QUERY_ALLOWED 0x00000001
#define POWER_ACTION_UI_ALLOWED 0x00000002
#define POWER_ACTION_OVERRIDE_APPS 0x00000004
#define POWER_ACTION_LIGHTEST_FIRST 0x10000000
#define POWER_ACTION_LOCK_CONSOLE 0x20000000
#define POWER_ACTION_DISABLE_WAKES 0x40000000
#define POWER_ACTION_CRITICAL 0x80000000
/* POWER_ACTION_POLICY.EventCode constants */
#define POWER_LEVEL_USER_NOTIFY_TEXT 0x00000001
#define POWER_LEVEL_USER_NOTIFY_SOUND 0x00000002
#define POWER_LEVEL_USER_NOTIFY_EXEC 0x00000004
#define POWER_USER_NOTIFY_BUTTON 0x00000008
#define POWER_USER_NOTIFY_SHUTDOWN 0x00000010
#define POWER_FORCE_TRIGGER_RESET 0x80000000
typedef struct _POWER_ACTION_POLICY {
POWER_ACTION Action;
ULONG Flags;
ULONG EventCode;
} POWER_ACTION_POLICY, *PPOWER_ACTION_POLICY;
typedef struct _SYSTEM_POWER_LEVEL {
BOOLEAN Enable;
UCHAR Spare[3];
ULONG BatteryLevel;
POWER_ACTION_POLICY PowerPolicy;
SYSTEM_POWER_STATE MinSystemState;
} SYSTEM_POWER_LEVEL, *PSYSTEM_POWER_LEVEL;
#define DISCHARGE_POLICY_CRITICAL 0
#define DISCHARGE_POLICY_LOW 1
#define NUM_DISCHARGE_POLICIES 4
#define PO_THROTTLE_NONE 0
#define PO_THROTTLE_CONSTANT 1
#define PO_THROTTLE_DEGRADE 2
#define PO_THROTTLE_ADAPTIVE 3
#define PO_THROTTLE_MAXIMUM 4
typedef struct _SYSTEM_POWER_POLICY {
ULONG Revision;
POWER_ACTION_POLICY PowerButton;
POWER_ACTION_POLICY SleepButton;
POWER_ACTION_POLICY LidClose;
SYSTEM_POWER_STATE LidOpenWake;
ULONG Reserved;
POWER_ACTION_POLICY Idle;
ULONG IdleTimeout;
UCHAR IdleSensitivity;
UCHAR DynamicThrottle;
UCHAR Spare2[2];
SYSTEM_POWER_STATE MinSleep;
SYSTEM_POWER_STATE MaxSleep;
SYSTEM_POWER_STATE ReducedLatencySleep;
ULONG WinLogonFlags;
ULONG Spare3;
ULONG DozeS4Timeout;
ULONG BroadcastCapacityResolution;
SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES];
ULONG VideoTimeout;
BOOLEAN VideoDimDisplay;
ULONG VideoReserved[3];
ULONG SpindownTimeout;
BOOLEAN OptimizeForPower;
UCHAR FanThrottleTolerance;
UCHAR ForcedThrottle;
UCHAR MinThrottle;
POWER_ACTION_POLICY OverThrottled;
} SYSTEM_POWER_POLICY, *PSYSTEM_POWER_POLICY;
typedef struct _PROCESSOR_POWER_POLICY_INFO {
ULONG TimeCheck;
ULONG DemoteLimit;
ULONG PromoteLimit;
UCHAR DemotePercent;
UCHAR PromotePercent;
UCHAR Spare[2];
ULONG AllowDemotion : 1;
ULONG AllowPromotion : 1;
ULONG Reserved : 30;
} PROCESSOR_POWER_POLICY_INFO, *PPROCESSOR_POWER_POLICY_INFO;
typedef struct _PROCESSOR_POWER_POLICY {
ULONG Revision;
UCHAR DynamicThrottle;
UCHAR Spare[3];
ULONG Reserved;
ULONG PolicyCount;
PROCESSOR_POWER_POLICY_INFO Policy[3];
} PROCESSOR_POWER_POLICY, *PPROCESSOR_POWER_POLICY;
typedef struct _ADMINISTRATOR_POWER_POLICY {
SYSTEM_POWER_STATE MinSleep;
SYSTEM_POWER_STATE MaxSleep;
ULONG MinVideoTimeout;
ULONG MaxVideoTimeout;
ULONG MinSpindownTimeout;
ULONG MaxSpindownTimeout;
} ADMINISTRATOR_POWER_POLICY, *PADMINISTRATOR_POWER_POLICY;
NTOSAPI
NTSTATUS
DDKAPI
NtSetThreadExecutionState(
IN EXECUTION_STATE esFlags,
OUT EXECUTION_STATE *PreviousFlags);
NTOSAPI
NTSTATUS
DDKAPI
NtRequestWakeupLatency(
IN LATENCY_TIME latency);
NTOSAPI
NTSTATUS
DDKAPI
NtInitiatePowerAction(
IN POWER_ACTION SystemAction,
IN SYSTEM_POWER_STATE MinSystemState,
IN ULONG Flags,
IN BOOLEAN Asynchronous);
NTOSAPI
NTSTATUS
DDKAPI
NtSetSystemPowerState(
IN POWER_ACTION SystemAction,
IN SYSTEM_POWER_STATE MinSystemState,
IN ULONG Flags);
NTOSAPI
NTSTATUS
DDKAPI
NtGetDevicePowerState(
IN HANDLE Device,
OUT DEVICE_POWER_STATE *State);
NTOSAPI
NTSTATUS
DDKAPI
NtCancelDeviceWakeupRequest(
IN HANDLE Device);
NTOSAPI
BOOLEAN
DDKAPI
NtIsSystemResumeAutomatic(
VOID);
NTOSAPI
NTSTATUS
DDKAPI
NtRequestDeviceWakeup(
IN HANDLE Device);
#define WINLOGON_LOCK_ON_SLEEP 0x00000001
typedef struct _SYSTEM_POWER_INFORMATION {
ULONG MaxIdlenessAllowed;
ULONG Idleness;
ULONG TimeRemaining;
UCHAR CoolingMode;
} SYSTEM_POWER_INFORMATION, *PSYSTEM_POWER_INFORMATION;
typedef struct _PROCESSOR_POWER_INFORMATION {
ULONG Number;
ULONG MaxMhz;
ULONG CurrentMhz;
ULONG MhzLimit;
ULONG MaxIdleState;
ULONG CurrentIdleState;
} PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION;
typedef struct _SYSTEM_BATTERY_STATE {
BOOLEAN AcOnLine;
BOOLEAN BatteryPresent;
BOOLEAN Charging;
BOOLEAN Discharging;
BOOLEAN Spare1[4];
ULONG MaxCapacity;
ULONG RemainingCapacity;
ULONG Rate;
ULONG EstimatedTime;
ULONG DefaultAlert1;
ULONG DefaultAlert2;
} SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE;
typedef struct _SYSTEM_POWER_CAPABILITIES {
BOOLEAN PowerButtonPresent;
BOOLEAN SleepButtonPresent;
BOOLEAN LidPresent;
BOOLEAN SystemS1;
BOOLEAN SystemS2;
BOOLEAN SystemS3;
BOOLEAN SystemS4;
BOOLEAN SystemS5;
BOOLEAN HiberFilePresent;
BOOLEAN FullWake;
BOOLEAN VideoDimPresent;
BOOLEAN ApmPresent;
BOOLEAN UpsPresent;
BOOLEAN ThermalControl;
BOOLEAN ProcessorThrottle;
UCHAR ProcessorMinThrottle;
UCHAR ProcessorMaxThrottle;
UCHAR spare2[4];
BOOLEAN DiskSpinDown;
UCHAR spare3[8];
BOOLEAN SystemBatteriesPresent;
BOOLEAN BatteriesAreShortTerm;
BATTERY_REPORTING_SCALE BatteryScale[3];
SYSTEM_POWER_STATE AcOnLineWake;
SYSTEM_POWER_STATE SoftLidWake;
SYSTEM_POWER_STATE RtcWake;
SYSTEM_POWER_STATE MinDeviceWakeState;
SYSTEM_POWER_STATE DefaultLowLatencyWake;
} SYSTEM_POWER_CAPABILITIES, *PSYSTEM_POWER_CAPABILITIES;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __NTPOAPI_H */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,282 @@
/*
* parallel.h
*
* ParPort driver interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __PARALLEL_H
#define __PARALLEL_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "ntddpar.h"
#define DD_PARALLEL_PORT_BASE_NAME "ParallelPort"
#define DD_PARALLEL_PORT_BASE_NAME_U L"ParallelPort"
#define IOCTL_INTERNAL_DESELECT_DEVICE \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 24, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_GET_MORE_PARALLEL_PORT_INFO \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 17, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_GET_PARALLEL_PNP_INFO \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 21, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_GET_PARALLEL_PORT_INFO \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 12, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_INIT_1284_3_BUS \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 22, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_PARALLEL_CLEAR_CHIP_MODE \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 20, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_PARALLEL_CONNECT_INTERRUPT \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 13, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_PARALLEL_DISCONNECT_INTERRUPT \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 14, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_PARALLEL_PORT_ALLOCATE \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 11, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_PARALLEL_PORT_FREE \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 40, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_PARALLEL_SET_CHIP_MODE \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 19, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_RELEASE_PARALLEL_PORT_INFO \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 15, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_SELECT_DEVICE \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 23, METHOD_BUFFERED, FILE_ANY_ACCESS)
typedef struct _PARALLEL_1284_COMMAND {
UCHAR ID;
UCHAR Port;
ULONG CommandFlags;
} PARALLEL_1284_COMMAND, *PPARALLEL_1284_COMMAND;
/* PARALLEL_1284_COMMAND.CommandFlags */
#define PAR_END_OF_CHAIN_DEVICE 0x00000001
#define PAR_HAVE_PORT_KEEP_PORT 0x00000002
typedef struct _MORE_PARALLEL_PORT_INFORMATION {
INTERFACE_TYPE InterfaceType;
ULONG BusNumber;
ULONG InterruptLevel;
ULONG InterruptVector;
KAFFINITY InterruptAffinity;
KINTERRUPT_MODE InterruptMode;
} MORE_PARALLEL_PORT_INFORMATION, *PMORE_PARALLEL_PORT_INFORMATION;
typedef NTSTATUS DDKAPI
(*PPARALLEL_SET_CHIP_MODE)(
IN PVOID SetChipContext,
IN UCHAR ChipMode);
typedef NTSTATUS DDKAPI
(*PPARALLEL_CLEAR_CHIP_MODE)(
IN PVOID ClearChipContext,
IN UCHAR ChipMode);
typedef NTSTATUS DDKAPI
(*PPARCHIP_CLEAR_CHIP_MODE)(
IN PVOID ClearChipContext,
IN UCHAR ChipMode);
typedef NTSTATUS DDKAPI
(*PPARALLEL_TRY_SELECT_ROUTINE)(
IN PVOID TrySelectContext,
IN PVOID TrySelectCommand);
typedef NTSTATUS DDKAPI
(*PPARALLEL_DESELECT_ROUTINE)(
IN PVOID DeselectContext,
IN PVOID DeselectCommand);
/* PARALLEL_PNP_INFORMATION.HardwareCapabilities */
#define PPT_NO_HARDWARE_PRESENT 0x00000000
#define PPT_ECP_PRESENT 0x00000001
#define PPT_EPP_PRESENT 0x00000002
#define PPT_EPP_32_PRESENT 0x00000004
#define PPT_BYTE_PRESENT 0x00000008
#define PPT_BIDI_PRESENT 0x00000008
#define PPT_1284_3_PRESENT 0x00000010
typedef struct _PARALLEL_PNP_INFORMATION {
PHYSICAL_ADDRESS OriginalEcpController;
PUCHAR EcpController;
ULONG SpanOfEcpController;
ULONG PortNumber;
ULONG HardwareCapabilities;
PPARALLEL_SET_CHIP_MODE TrySetChipMode;
PPARALLEL_CLEAR_CHIP_MODE ClearChipMode;
ULONG FifoDepth;
ULONG FifoWidth;
PHYSICAL_ADDRESS EppControllerPhysicalAddress;
ULONG SpanOfEppController;
ULONG Ieee1284_3DeviceCount;
PPARALLEL_TRY_SELECT_ROUTINE TrySelectDevice;
PPARALLEL_DESELECT_ROUTINE DeselectDevice;
PVOID Context;
ULONG CurrentMode;
PWSTR PortName;
} PARALLEL_PNP_INFORMATION, *PPARALLEL_PNP_INFORMATION;
typedef BOOLEAN DDKAPI
(*PPARALLEL_TRY_ALLOCATE_ROUTINE)(
IN PVOID TryAllocateContext);
typedef VOID DDKAPI
(*PPARALLEL_FREE_ROUTINE)(
IN PVOID FreeContext);
typedef ULONG DDKAPI
(*PPARALLEL_QUERY_WAITERS_ROUTINE)(
IN PVOID QueryAllocsContext);
typedef struct _PARALLEL_PORT_INFORMATION {
PHYSICAL_ADDRESS OriginalController;
PUCHAR Controller;
ULONG SpanOfController;
PPARALLEL_TRY_ALLOCATE_ROUTINE TryAllocatePort;
PPARALLEL_FREE_ROUTINE FreePort;
PPARALLEL_QUERY_WAITERS_ROUTINE QueryNumWaiters;
PVOID Context;
} PARALLEL_PORT_INFORMATION, *PPARALLEL_PORT_INFORMATION;
/* PARALLEL_CHIP_MODE.ModeFlags */
#define INITIAL_MODE 0x00
#define PARCHIP_ECR_ARBITRATOR 0x01
typedef struct _PARALLEL_CHIP_MODE {
UCHAR ModeFlags;
BOOLEAN success;
} PARALLEL_CHIP_MODE, *PPARALLEL_CHIP_MODE;
typedef VOID DDKAPI
(*PPARALLEL_DEFERRED_ROUTINE)(
IN PVOID DeferredContext);
typedef struct _PARALLEL_INTERRUPT_SERVICE_ROUTINE {
PKSERVICE_ROUTINE InterruptServiceRoutine;
PVOID InterruptServiceContext;
PPARALLEL_DEFERRED_ROUTINE DeferredPortCheckRoutine;
PVOID DeferredPortCheckContext;
} PARALLEL_INTERRUPT_SERVICE_ROUTINE, *PPARALLEL_INTERRUPT_SERVICE_ROUTINE;
#define IOCTL_INTERNAL_DISCONNECT_IDLE \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 32, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_LOCK_PORT \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 37, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_LOCK_PORT_NO_SELECT \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 52, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_PARCLASS_CONNECT \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 30, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_PARCLASS_DISCONNECT \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 31, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_UNLOCK_PORT \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 38, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_UNLOCK_PORT_NO_DESELECT \
CTL_CODE (FILE_DEVICE_PARALLEL_PORT, 53, METHOD_BUFFERED, FILE_ANY_ACCESS)
typedef USHORT DDKAPI
(*PDETERMINE_IEEE_MODES)(
IN PVOID Context);
typedef enum _PARALLEL_SAFETY {
SAFE_MODE,
UNSAFE_MODE
} PARALLEL_SAFETY;
typedef NTSTATUS DDKAPI
(*PNEGOTIATE_IEEE_MODE)(
IN PVOID Context,
IN USHORT ModeMaskFwd,
IN USHORT ModeMaskRev,
IN PARALLEL_SAFETY ModeSafety,
IN BOOLEAN IsForward);
typedef NTSTATUS DDKAPI
(*PTERMINATE_IEEE_MODE)(
IN PVOID Context);
typedef NTSTATUS DDKAPI
(*PPARALLEL_IEEE_FWD_TO_REV)(
IN PVOID Context);
typedef NTSTATUS DDKAPI
(*PPARALLEL_IEEE_REV_TO_FWD)(
IN PVOID Context);
typedef NTSTATUS DDKAPI
(*PPARALLEL_READ)(
IN PVOID Context,
OUT PVOID Buffer,
IN ULONG NumBytesToRead,
OUT PULONG NumBytesRead,
IN UCHAR Channel);
typedef NTSTATUS DDKAPI
(*PPARALLEL_WRITE)(
IN PVOID Context,
OUT PVOID Buffer,
IN ULONG NumBytesToWrite,
OUT PULONG NumBytesWritten,
IN UCHAR Channel);
typedef NTSTATUS DDKAPI
(*PPARALLEL_TRYSELECT_DEVICE)(
IN PVOID Context,
IN PARALLEL_1284_COMMAND Command);
typedef NTSTATUS DDKAPI
(*PPARALLEL_DESELECT_DEVICE)(
IN PVOID Context,
IN PARALLEL_1284_COMMAND Command);
typedef struct _PARCLASS_INFORMATION {
PUCHAR Controller;
PUCHAR EcrController;
ULONG SpanOfController;
PDETERMINE_IEEE_MODES DetermineIeeeModes;
PNEGOTIATE_IEEE_MODE NegotiateIeeeMode;
PTERMINATE_IEEE_MODE TerminateIeeeMode;
PPARALLEL_IEEE_FWD_TO_REV IeeeFwdToRevMode;
PPARALLEL_IEEE_REV_TO_FWD IeeeRevToFwdMode;
PPARALLEL_READ ParallelRead;
PPARALLEL_WRITE ParallelWrite;
PVOID ParclassContext;
ULONG HardwareCapabilities;
ULONG FifoDepth;
ULONG FifoWidth;
PPARALLEL_TRYSELECT_DEVICE ParallelTryselect;
PPARALLEL_DESELECT_DEVICE ParallelDeSelect;
} PARCLASS_INFORMATION, *PPARCLASS_INFORMATION;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __PARALLEL_H */

View File

@ -0,0 +1,81 @@
/*
* pfhook.h
*
* Packet filter API
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __PFHOOK_H
#define __PFHOOK_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define DD_IPFLTRDRVR_DEVICE_NAME L"\\Device\\IPFILTERDRIVER"
#define INVALID_PF_IF_INDEX 0xffffffff
#define ZERO_PF_IP_ADDR 0
typedef ULONG IPAddr;
typedef enum _PF_FORWARD_ACTION {
PF_FORWARD = 0,
PF_DROP = 1,
PF_PASS = 2,
PF_ICMP_ON_DROP = 3
} PF_FORWARD_ACTION;
typedef PF_FORWARD_ACTION STDCALL
(*PacketFilterExtensionPtr)(
IN unsigned char *PacketHeader,
IN unsigned char *Packet,
IN unsigned int PacketLength,
IN unsigned int RecvInterfaceIndex,
IN unsigned int SendInterfaceIndex,
IN IPAddr RecvLinkNextHop,
IN IPAddr SendLinkNextHop);
typedef struct _PF_SET_EXTENSION_HOOK_INFO {
PacketFilterExtensionPtr ExtensionPointer;
} PF_SET_EXTENSION_HOOK_INFO, *PPF_SET_EXTENSION_HOOK_INFO;
#define FSCTL_IPFLTRDRVR_BASE FILE_DEVICE_NETWORK
#define _IPFLTRDRVR_CTL_CODE(function, method, access) \
CTL_CODE(FSCTL_IPFLTRDRVR_BASE, function, method, access)
#define IOCTL_PF_SET_EXTENSION_POINTER \
_IPFLTRDRVR_CTL_CODE(22, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __PFHOOK_H */

View File

@ -0,0 +1,123 @@
/*
* poclass.h
*
* Power policy driver interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __POCLASS_H
#define __POCLASS_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "batclass.h"
DEFINE_GUID(GUID_CLASS_INPUT,
0x4D1E55B2L, 0xF16F, 0x11CF, 0x88, 0xCB, 0x00, 0x11, 0x11, 0x00, 0x00, 0x30);
DEFINE_GUID(GUID_DEVICE_LID,
0x4AFA3D52L, 0x74A7, 0x11d0, 0xbe, 0x5e, 0x00, 0xA0, 0xC9, 0x06, 0x28, 0x57);
DEFINE_GUID(GUID_DEVICE_MEMORY,
0x3fd0f03dL, 0x92e0, 0x45fb, 0xb7, 0x5c, 0x5e, 0xd8, 0xff, 0xb0, 0x10, 0x21);
DEFINE_GUID(GUID_DEVICE_MESSAGE_INDICATOR,
0XCD48A365L, 0xfa94, 0x4ce2, 0xa2, 0x32, 0xa1, 0xb7, 0x64, 0xe5, 0xd8, 0xb4);
DEFINE_GUID(GUID_DEVICE_PROCESSOR,
0x97fadb10L, 0x4e33, 0x40ae, 0x35, 0x9c, 0x8b, 0xef, 0x02, 0x9d, 0xbd, 0xd0);
DEFINE_GUID(GUID_DEVICE_SYS_BUTTON,
0x4AFA3D53L, 0x74A7, 0x11d0, 0xbe, 0x5e, 0x00, 0xA0, 0xC9, 0x06, 0x28, 0x57);
DEFINE_GUID(GUID_DEVICE_THERMAL_ZONE,
0x4AFA3D51L, 0x74A7, 0x11d0, 0xbe, 0x5e, 0x00, 0xA0, 0xC9, 0x06, 0x28, 0x57);
#define IOCTL_GET_PROCESSOR_OBJ_INFO \
CTL_CODE(FILE_DEVICE_BATTERY, 0x60, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_GET_SYS_BUTTON_CAPS \
CTL_CODE(FILE_DEVICE_BATTERY, 0x50, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_GET_SYS_BUTTON_EVENT \
CTL_CODE(FILE_DEVICE_BATTERY, 0x51, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_SET_SYS_MESSAGE_INDICATOR \
CTL_CODE(FILE_DEVICE_BATTERY, 0x70, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define IOCTL_NOTIFY_SWITCH_EVENT \
CTL_CODE(FILE_DEVICE_BATTERY, 0x40, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_THERMAL_QUERY_INFORMATION \
CTL_CODE(FILE_DEVICE_BATTERY, 0x20, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_THERMAL_SET_COOLING_POLICY \
CTL_CODE(FILE_DEVICE_BATTERY, 0x21, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define IOCTL_QUERY_LID \
CTL_CODE(FILE_DEVICE_BATTERY, 0x30, METHOD_BUFFERED, FILE_READ_ACCESS)
#define IOCTL_RUN_ACTIVE_COOLING_METHOD \
CTL_CODE(FILE_DEVICE_BATTERY, 0x22, METHOD_BUFFERED, FILE_WRITE_ACCESS)
#define SYS_BUTTON_POWER 0x00000001
#define SYS_BUTTON_SLEEP 0x00000002
#define SYS_BUTTON_LID 0x00000004
#define SYS_BUTTON_WAKE 0x80000000
#define MAX_ACTIVE_COOLING_LEVELS 10
#define ACTIVE_COOLING 0
#define PASSIVE_COOLING 1
typedef struct _THERMAL_INFORMATION {
ULONG ThermalStamp;
ULONG ThermalConstant1;
ULONG ThermalConstant2;
KAFFINITY Processors;
ULONG SamplingPeriod;
ULONG CurrentTemperature;
ULONG PassiveTripPoint;
ULONG CriticalTripPoint;
UCHAR ActiveTripPointCount;
ULONG ActiveTripPoint[MAX_ACTIVE_COOLING_LEVELS];
} THERMAL_INFORMATION, *PTHERMAL_INFORMATION;
typedef struct _PROCESSOR_OBJECT_INFO {
ULONG PhysicalID;
ULONG PBlkAddress;
UCHAR PBlkLength;
} PROCESSOR_OBJECT_INFO, *PPROCESSOR_OBJECT_INFO;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __POCLASS_H */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,135 @@
/*
* scsiscan.h
*
* SCSI scanner driver interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __SCSISCAN_H
#define __SCSISCAN_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define IOCTL_SCSISCAN_CMD \
CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_CMD_CODE, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
#define IOCTL_SCSISCAN_LOCKDEVICE \
CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_LOCKDEVICE, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
#define IOCTL_SCSISCAN_SET_TIMEOUT \
CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_SET_TIMEOUT, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_SCSISCAN_GET_INFO \
CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_GET_INFO, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
#define IOCTL_SCSISCAN_UNLOCKDEVICE \
CTL_CODE(FILE_DEVICE_SCANNER, SCSISCAN_UNLOCKDEVICE, METHOD_OUT_DIRECT, FILE_ANY_ACCESS)
/* SCSISCAN_CMD.SrbFlags constants */
#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER 0x00000008
#define SRB_FLAGS_DISABLE_AUTOSENSE 0x00000020
#define SRB_FLAGS_DATA_IN 0x00000040
#define SRB_FLAGS_DATA_OUT 0x00000080
#define SRB_FLAGS_NO_DATA_TRANSFER 0x00000000
/* SCSISCAN_CMD.pSrbStatus constants */
#define SRB_STATUS_PENDING 0x00
#define SRB_STATUS_SUCCESS 0x01
#define SRB_STATUS_ABORTED 0x02
#define SRB_STATUS_ABORT_FAILED 0x03
#define SRB_STATUS_ERROR 0x04
#define SRB_STATUS_BUSY 0x05
#define SRB_STATUS_INVALID_REQUEST 0x06
#define SRB_STATUS_INVALID_PATH_ID 0x07
#define SRB_STATUS_NO_DEVICE 0x08
#define SRB_STATUS_TIMEOUT 0x09
#define SRB_STATUS_SELECTION_TIMEOUT 0x0A
#define SRB_STATUS_COMMAND_TIMEOUT 0x0B
#define SRB_STATUS_MESSAGE_REJECTED 0x0D
#define SRB_STATUS_BUS_RESET 0x0E
#define SRB_STATUS_PARITY_ERROR 0x0F
#define SRB_STATUS_REQUEST_SENSE_FAILED 0x10
#define SRB_STATUS_NO_HBA 0x11
#define SRB_STATUS_DATA_OVERRUN 0x12
#define SRB_STATUS_UNEXPECTED_BUS_FREE 0x13
#define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14
#define SRB_STATUS_BAD_SRB_BLOCK_LENGTH 0x15
#define SRB_STATUS_REQUEST_FLUSHED 0x16
#define SRB_STATUS_INVALID_LUN 0x20
#define SRB_STATUS_INVALID_TARGET_ID 0x21
#define SRB_STATUS_BAD_FUNCTION 0x22
#define SRB_STATUS_ERROR_RECOVERY 0x23
#define SRB_STATUS_QUEUE_FROZEN 0x40
#define SRB_STATUS_AUTOSENSE_VALID 0x80
#define SRB_STATUS(Status) (Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN))
typedef struct _SCSISCAN_CMD {
ULONG Reserved1;
ULONG Size;
ULONG SrbFlags;
UCHAR CdbLength;
UCHAR SenseLength;
UCHAR Reserved2;
UCHAR Reserved3;
ULONG TransferLength;
UCHAR Cdb[16];
PUCHAR pSrbStatus;
PUCHAR pSenseBuffer;
} SCSISCAN_CMD, *PSCSISCAN_CMD;
#define MAX_STRING 128
/* SCSISCAN_INFO.Flags constants */
#define SCSISCAN_RESERVED 0x000
#define SCSISCAN_CMD_CODE 0x004
#define SCSISCAN_LOCKDEVICE 0x005
#define SCSISCAN_UNLOCKDEVICE 0x006
#define SCSISCAN_SET_TIMEOUT 0x007
#define SCSISCAN_GET_INFO 0x008
typedef struct _SCSISCAN_INFO {
ULONG Size;
ULONG Flags;
UCHAR PortNumber;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR AdapterName[MAX_STRING];
ULONG Reserved;
} SCSISCAN_INFO, *PSCSISCAN_INFO;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __SCSISCAN_H */

View File

@ -0,0 +1,196 @@
/*
* scsiwmi.h
*
* SCSI WMILIB interface.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __SCSIWMI_H
#define __SCSIWMI_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "srb.h"
typedef struct _SCSIWMI_REQUEST_CONTEXT {
PVOID UserContext;
ULONG BufferSize;
PUCHAR Buffer;
UCHAR MinorFunction;
UCHAR ReturnStatus;
ULONG ReturnSize;
} SCSIWMI_REQUEST_CONTEXT, *PSCSIWMI_REQUEST_CONTEXT;
typedef struct _SCSIWMIGUIDREGINFO {
LPCGUID Guid;
ULONG InstanceCount;
ULONG Flags;
} SCSIWMIGUIDREGINFO, *PSCSIWMIGUIDREGINFO;
typedef UCHAR DDKAPI
(*PSCSIWMI_QUERY_REGINFO)(
IN PVOID DeviceContext,
IN PSCSIWMI_REQUEST_CONTEXT RequestContext,
OUT PWCHAR *MofResourceName);
typedef BOOLEAN DDKAPI
(*PSCSIWMI_QUERY_DATABLOCK)(
IN PVOID Context,
IN PSCSIWMI_REQUEST_CONTEXT DispatchContext,
IN ULONG GuidIndex,
IN ULONG InstanceIndex,
IN ULONG InstanceCount,
IN OUT PULONG InstanceLengthArray,
IN ULONG BufferAvail,
OUT PUCHAR Buffer);
typedef BOOLEAN DDKAPI
(*PSCSIWMI_SET_DATABLOCK)(
IN PVOID DeviceContext,
IN PSCSIWMI_REQUEST_CONTEXT RequestContext,
IN ULONG GuidIndex,
IN ULONG InstanceIndex,
IN ULONG BufferSize,
IN PUCHAR Buffer);
typedef BOOLEAN DDKAPI
(*PSCSIWMI_SET_DATAITEM)(
IN PVOID DeviceContext,
IN PSCSIWMI_REQUEST_CONTEXT RequestContext,
IN ULONG GuidIndex,
IN ULONG InstanceIndex,
IN ULONG DataItemId,
IN ULONG BufferSize,
IN PUCHAR Buffer);
typedef BOOLEAN DDKAPI
(*PSCSIWMI_EXECUTE_METHOD)(
IN PVOID DeviceContext,
IN PSCSIWMI_REQUEST_CONTEXT RequestContext,
IN ULONG GuidIndex,
IN ULONG InstanceIndex,
IN ULONG MethodId,
IN ULONG InBufferSize,
IN ULONG OutBufferSize,
IN OUT PUCHAR Buffer);
typedef enum _SCSIWMI_ENABLE_DISABLE_CONTROL {
ScsiWmiEventControl,
ScsiWmiDataBlockControl
} SCSIWMI_ENABLE_DISABLE_CONTROL;
typedef BOOLEAN DDKAPI
(*PSCSIWMI_FUNCTION_CONTROL)(
IN PVOID DeviceContext,
IN PSCSIWMI_REQUEST_CONTEXT RequestContext,
IN ULONG GuidIndex,
IN SCSIWMI_ENABLE_DISABLE_CONTROL Function,
IN BOOLEAN Enable);
typedef struct _SCSIWMILIB_CONTEXT {
ULONG GuidCount;
PSCSIWMIGUIDREGINFO GuidList;
PSCSIWMI_QUERY_REGINFO QueryWmiRegInfo;
PSCSIWMI_QUERY_DATABLOCK QueryWmiDataBlock;
PSCSIWMI_SET_DATABLOCK SetWmiDataBlock;
PSCSIWMI_SET_DATAITEM SetWmiDataItem;
PSCSIWMI_EXECUTE_METHOD ExecuteWmiMethod;
PSCSIWMI_FUNCTION_CONTROL WmiFunctionControl;
} SCSI_WMILIB_CONTEXT, *PSCSI_WMILIB_CONTEXT;
SCSIPORTAPI
BOOLEAN
DDKAPI
ScsiPortWmiDispatchFunction(
IN PSCSI_WMILIB_CONTEXT WmiLibInfo,
IN UCHAR MinorFunction,
IN PVOID DeviceContext,
IN PSCSIWMI_REQUEST_CONTEXT RequestContext,
IN PVOID DataPath,
IN ULONG BufferSize,
IN PVOID Buffer);
#define ScsiPortWmiFireAdapterEvent( \
HwDeviceExtension, \
Guid, \
InstanceIndex, \
EventDataSize, \
EventData) \
ScsiPortWmiFireLogicalUnitEvent( \
HwDeviceExtension, \
0xff, \
0, \
0, \
Guid, \
InstanceIndex, \
EventDataSize, \
EventData)
/*
* ULONG
* ScsiPortWmiGetReturnSize(
* PSCSIWMI_REQUEST_CONTEXT RequestContext);
*/
#define ScsiPortWmiGetReturnSize(RequestContext) \
((RequestContext)->ReturnSize)
/* UCHAR
* ScsiPortWmiGetReturnStatus(
* PSCSIWMI_REQUEST_CONTEXT RequestContext);
*/
#define ScsiPortWmiGetReturnStatus(RequestContext) \
((RequestContext)->ReturnStatus)
SCSIPORTAPI
VOID
DDKAPI
ScsiPortWmiPostProcess(
IN PSCSIWMI_REQUEST_CONTEXT RequestContext,
IN UCHAR SrbStatus,
IN ULONG BufferUsed);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortWmiFireLogicalUnitEvent(
IN PVOID HwDeviceExtension,
IN UCHAR PathId,
IN UCHAR TargetId,
IN UCHAR Lun,
IN LPGUID Guid,
IN ULONG InstanceIndex,
IN ULONG EventDataSize,
IN PVOID EventData);
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __SCSIWMI_H */

View File

@ -0,0 +1,194 @@
/*
* smbus.h
*
* System Management Bus driver interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __SMBUS_H
#define __SMBUS_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#if !defined(SMBCLASS)
#define SMBCLASSAPI DECLSPEC_IMPORT
#else
#define SMBCLASSAPI DECLSPEC_EXPORT
#endif
#define SMB_BUS_REQUEST \
CTL_CODE(FILE_DEVICE_UNKNOWN, 0, METHOD_NEITHER, FILE_ANY_ACCESS)
#define SMB_DEREGISTER_ALARM_NOTIFY \
CTL_CODE(FILE_DEVICE_UNKNOWN, 2, METHOD_NEITHER, FILE_ANY_ACCESS)
#define SMB_REGISTER_ALARM_NOTIFY \
CTL_CODE(FILE_DEVICE_UNKNOWN, 1, METHOD_NEITHER, FILE_ANY_ACCESS)
struct _SMB_CLASS;
#define SMB_MAX_DATA_SIZE 32
/* SMB_REQUEST.Status constants */
#define SMB_STATUS_OK 0x00
#define SMB_UNKNOWN_FAILURE 0x07
#define SMB_ADDRESS_NOT_ACKNOWLEDGED 0x10
#define SMB_DEVICE_ERROR 0x11
#define SMB_COMMAND_ACCESS_DENIED 0x12
#define SMB_UNKNOWN_ERROR 0x13
#define SMB_DEVICE_ACCESS_DENIED 0x17
#define SMB_TIMEOUT 0x18
#define SMB_UNSUPPORTED_PROTOCOL 0x19
#define SMB_BUS_BUSY 0x1A
/* SMB_REQUEST.Protocol constants */
#define SMB_WRITE_QUICK 0x00
#define SMB_READ_QUICK 0x01
#define SMB_SEND_BYTE 0x02
#define SMB_RECEIVE_BYTE 0x03
#define SMB_WRITE_BYTE 0x04
#define SMB_READ_BYTE 0x05
#define SMB_WRITE_WORD 0x06
#define SMB_READ_WORD 0x07
#define SMB_WRITE_BLOCK 0x08
#define SMB_READ_BLOCK 0x09
#define SMB_PROCESS_CALL 0x0A
#define SMB_MAXIMUM_PROTOCOL 0x0A
typedef struct _SMB_REQUEST {
UCHAR Status;
UCHAR Protocol;
UCHAR Address;
UCHAR Command;
UCHAR BlockLength;
UCHAR Data[SMB_MAX_DATA_SIZE];
} SMB_REQUEST, *PSMB_REQUEST;
typedef VOID STDCALL
(*SMB_ALARM_NOTIFY)(
PVOID Context,
UCHAR Address,
USHORT Data);
typedef struct _SMB_REGISTER_ALARM {
UCHAR MinAddress;
UCHAR MaxAddress;
SMB_ALARM_NOTIFY NotifyFunction;
PVOID NotifyContext;
} SMB_REGISTER_ALARM, *PSMB_REGISTER_ALARM;
/* SMB_CLASS.XxxVersion constants */
#define SMB_CLASS_MAJOR_VERSION 0x0001
#define SMB_CLASS_MINOR_VERSION 0x0000
typedef NTSTATUS DDKAPI
(*SMB_RESET_DEVICE)(
IN struct _SMB_CLASS *SmbClass,
IN PVOID SmbMiniport);
typedef VOID DDKAPI
(*SMB_START_IO)(
IN struct _SMB_CLASS *SmbClass,
IN PVOID SmbMiniport);
typedef NTSTATUS DDKAPI
(*SMB_STOP_DEVICE)(
IN struct _SMB_CLASS *SmbClass,
IN PVOID SmbMiniport);
typedef struct _SMB_CLASS {
USHORT MajorVersion;
USHORT MinorVersion;
PVOID Miniport;
PDEVICE_OBJECT DeviceObject;
PDEVICE_OBJECT PDO;
PDEVICE_OBJECT LowerDeviceObject;
PIRP CurrentIrp;
PSMB_REQUEST CurrentSmb;
SMB_RESET_DEVICE ResetDevice;
SMB_START_IO StartIo;
SMB_STOP_DEVICE StopDevice;
} SMB_CLASS, *PSMB_CLASS;
SMBCLASSAPI
VOID
DDKAPI
SmbClassAlarm(
IN PSMB_CLASS SmbClass,
IN UCHAR Address,
IN USHORT Data);
SMBCLASSAPI
VOID
DDKAPI
SmbClassCompleteRequest(
IN PSMB_CLASS SmbClass);
typedef NTSTATUS DDKAPI
(*PSMB_INITIALIZE_MINIPORT)(
IN PSMB_CLASS SmbClass,
IN PVOID MiniportExtension,
IN PVOID MiniportContext);
SMBCLASSAPI
NTSTATUS
DDKAPI
SmbClassCreateFdo(
IN PDRIVER_OBJECT DriverObject,
IN PDEVICE_OBJECT PDO,
IN ULONG MiniportExtensionSize,
IN PSMB_INITIALIZE_MINIPORT MiniportInitialize,
IN PVOID MiniportContext,
OUT PDEVICE_OBJECT *FDO);
SMBCLASSAPI
NTSTATUS
DDKAPI
SmbClassInitializeDevice(
IN ULONG MajorVersion,
IN ULONG MinorVersion,
IN PDRIVER_OBJECT DriverObject);
SMBCLASSAPI
VOID
DDKAPI
SmbClassLockDevice(
IN PSMB_CLASS SmbClass);
SMBCLASSAPI
VOID
DDKAPI
SmbClassUnlockDevice(
IN PSMB_CLASS SmbClass);
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __SMBUS_H */

View File

@ -0,0 +1,754 @@
/*
* scsi.h
*
* Interface between SCSI miniport drivers and the SCSI port driver.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __SRB_H
#define __SRB_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#if defined(_SCSIPORT_)
#define SCSIPORTAPI DECLSPEC_EXPORT
#else
#define SCSIPORTAPI DECLSPEC_IMPORT
#endif
#if DBG
#define DebugPrint(x) ScsiDebugPrint x
#else
#define DebugPrint(x)
#endif
typedef PHYSICAL_ADDRESS SCSI_PHYSICAL_ADDRESS, *PSCSI_PHYSICAL_ADDRESS;
#define SP_UNINITIALIZED_VALUE ((ULONG) ~0)
#define SP_UNTAGGED ((UCHAR) ~0)
#define SRB_SIMPLE_TAG_REQUEST 0x20
#define SRB_HEAD_OF_QUEUE_TAG_REQUEST 0x21
#define SRB_ORDERED_QUEUE_TAG_REQUEST 0x22
#define SRB_STATUS_QUEUE_FROZEN 0x40
#define SRB_STATUS_AUTOSENSE_VALID 0x80
#define SRB_STATUS(Status) \
(Status & ~(SRB_STATUS_AUTOSENSE_VALID | SRB_STATUS_QUEUE_FROZEN))
#define MAXIMUM_CDB_SIZE 12
#if DBG
#define SCSI_PORT_SIGNATURE 0x54524f50
#endif
#define SCSI_MAXIMUM_LOGICAL_UNITS 8
#define SCSI_MAXIMUM_TARGETS_PER_BUS 128
#define SCSI_MAXIMUM_LUNS_PER_TARGET 255
#define SCSI_MAXIMUM_BUSES 8
#define SCSI_MINIMUM_PHYSICAL_BREAKS 16
#define SCSI_MAXIMUM_PHYSICAL_BREAKS 255
#define SCSI_MAXIMUM_TARGETS 8
#define SRB_FUNCTION_WMI 0x17
#define SRB_WMI_FLAGS_ADAPTER_REQUEST 0x0001
#define SP_BUS_PARITY_ERROR 0x0001
#define SP_UNEXPECTED_DISCONNECT 0x0002
#define SP_INVALID_RESELECTION 0x0003
#define SP_BUS_TIME_OUT 0x0004
#define SP_PROTOCOL_ERROR 0x0005
#define SP_INTERNAL_ADAPTER_ERROR 0x0006
#define SP_REQUEST_TIMEOUT 0x0007
#define SP_IRQ_NOT_RESPONDING 0x0008
#define SP_BAD_FW_WARNING 0x0009
#define SP_BAD_FW_ERROR 0x000a
#define SP_LOST_WMI_MINIPORT_REQUEST 0x000b
/* SCSI_REQUEST_BLOCK.Function constants */
#define SRB_FUNCTION_EXECUTE_SCSI 0x00
#define SRB_FUNCTION_CLAIM_DEVICE 0x01
#define SRB_FUNCTION_IO_CONTROL 0x02
#define SRB_FUNCTION_RECEIVE_EVENT 0x03
#define SRB_FUNCTION_RELEASE_QUEUE 0x04
#define SRB_FUNCTION_ATTACH_DEVICE 0x05
#define SRB_FUNCTION_RELEASE_DEVICE 0x06
#define SRB_FUNCTION_SHUTDOWN 0x07
#define SRB_FUNCTION_FLUSH 0x08
#define SRB_FUNCTION_ABORT_COMMAND 0x10
#define SRB_FUNCTION_RELEASE_RECOVERY 0x11
#define SRB_FUNCTION_RESET_BUS 0x12
#define SRB_FUNCTION_RESET_DEVICE 0x13
#define SRB_FUNCTION_TERMINATE_IO 0x14
#define SRB_FUNCTION_FLUSH_QUEUE 0x15
#define SRB_FUNCTION_REMOVE_DEVICE 0x16
#define SRB_FUNCTION_WMI 0x17
#define SRB_FUNCTION_LOCK_QUEUE 0x18
#define SRB_FUNCTION_UNLOCK_QUEUE 0x19
#define SRB_FUNCTION_RESET_LOGICAL_UNIT 0x20
/* SCSI_REQUEST_BLOCK.SrbStatus constants */
#define SRB_STATUS_PENDING 0x00
#define SRB_STATUS_SUCCESS 0x01
#define SRB_STATUS_ABORTED 0x02
#define SRB_STATUS_ABORT_FAILED 0x03
#define SRB_STATUS_ERROR 0x04
#define SRB_STATUS_BUSY 0x05
#define SRB_STATUS_INVALID_REQUEST 0x06
#define SRB_STATUS_INVALID_PATH_ID 0x07
#define SRB_STATUS_NO_DEVICE 0x08
#define SRB_STATUS_TIMEOUT 0x09
#define SRB_STATUS_SELECTION_TIMEOUT 0x0A
#define SRB_STATUS_COMMAND_TIMEOUT 0x0B
#define SRB_STATUS_MESSAGE_REJECTED 0x0D
#define SRB_STATUS_BUS_RESET 0x0E
#define SRB_STATUS_PARITY_ERROR 0x0F
#define SRB_STATUS_REQUEST_SENSE_FAILED 0x10
#define SRB_STATUS_NO_HBA 0x11
#define SRB_STATUS_DATA_OVERRUN 0x12
#define SRB_STATUS_UNEXPECTED_BUS_FREE 0x13
#define SRB_STATUS_PHASE_SEQUENCE_FAILURE 0x14
#define SRB_STATUS_BAD_SRB_BLOCK_LENGTH 0x15
#define SRB_STATUS_REQUEST_FLUSHED 0x16
#define SRB_STATUS_INVALID_LUN 0x20
#define SRB_STATUS_INVALID_TARGET_ID 0x21
#define SRB_STATUS_BAD_FUNCTION 0x22
#define SRB_STATUS_ERROR_RECOVERY 0x23
#define SRB_STATUS_NOT_POWERED 0x24
#define SRB_STATUS_INTERNAL_ERROR 0x30
/* SCSI_REQUEST_BLOCK.SrbFlags constants */
#define SRB_FLAGS_QUEUE_ACTION_ENABLE 0x00000002
#define SRB_FLAGS_DISABLE_DISCONNECT 0x00000004
#define SRB_FLAGS_DISABLE_SYNCH_TRANSFER 0x00000008
#define SRB_FLAGS_BYPASS_FROZEN_QUEUE 0x00000010
#define SRB_FLAGS_DISABLE_AUTOSENSE 0x00000020
#define SRB_FLAGS_DATA_IN 0x00000040
#define SRB_FLAGS_DATA_OUT 0x00000080
#define SRB_FLAGS_NO_DATA_TRANSFER 0x00000000
#define SRB_FLAGS_UNSPECIFIED_DIRECTION (SRB_FLAGS_DATA_IN | SRB_FLAGS_DATA_OUT)
#define SRB_FLAGS_NO_QUEUE_FREEZE 0x00000100
#define SRB_FLAGS_ADAPTER_CACHE_ENABLE 0x00000200
#define SRB_FLAGS_FREE_SENSE_BUFFER 0x00000400
#define SRB_FLAGS_IS_ACTIVE 0x00010000
#define SRB_FLAGS_ALLOCATED_FROM_ZONE 0x00020000
#define SRB_FLAGS_SGLIST_FROM_POOL 0x00040000
#define SRB_FLAGS_BYPASS_LOCKED_QUEUE 0x00080000
#define SRB_FLAGS_NO_KEEP_AWAKE 0x00100000
#define SRB_FLAGS_PORT_DRIVER_ALLOCSENSE 0x00200000
#define SRB_FLAGS_PORT_DRIVER_SENSEHASPORT 0x00400000
#define SRB_FLAGS_DONT_START_NEXT_PACKET 0x00800000
#define SRB_FLAGS_PORT_DRIVER_RESERVED 0x0F000000
#define SRB_FLAGS_CLASS_DRIVER_RESERVED 0xF0000000
typedef struct _SCSI_REQUEST_BLOCK {
USHORT Length;
UCHAR Function;
UCHAR SrbStatus;
UCHAR ScsiStatus;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR QueueTag;
UCHAR QueueAction;
UCHAR CdbLength;
UCHAR SenseInfoBufferLength;
ULONG SrbFlags;
ULONG DataTransferLength;
ULONG TimeOutValue;
PVOID DataBuffer;
PVOID SenseInfoBuffer;
struct _SCSI_REQUEST_BLOCK *NextSrb;
PVOID OriginalRequest;
PVOID SrbExtension;
union {
ULONG InternalStatus;
ULONG QueueSortKey;
};
#if defined(_WIN64)
ULONG Reserved;
#endif
UCHAR Cdb[16];
} SCSI_REQUEST_BLOCK, *PSCSI_REQUEST_BLOCK;
#define SCSI_REQUEST_BLOCK_SIZE sizeof(SCSI_REQUEST_BLOCK)
typedef struct _ACCESS_RANGE {
SCSI_PHYSICAL_ADDRESS RangeStart;
ULONG RangeLength;
BOOLEAN RangeInMemory;
} ACCESS_RANGE, *PACCESS_RANGE;
/* PORT_CONFIGURATION_INFORMATION.Dma64BitAddresses constants */
#define SCSI_DMA64_MINIPORT_SUPPORTED 0x01
#define SCSI_DMA64_SYSTEM_SUPPORTED 0x80
typedef struct _PORT_CONFIGURATION_INFORMATION {
ULONG Length;
ULONG SystemIoBusNumber;
INTERFACE_TYPE AdapterInterfaceType;
ULONG BusInterruptLevel;
ULONG BusInterruptVector;
KINTERRUPT_MODE InterruptMode;
ULONG MaximumTransferLength;
ULONG NumberOfPhysicalBreaks;
ULONG DmaChannel;
ULONG DmaPort;
DMA_WIDTH DmaWidth;
DMA_SPEED DmaSpeed;
ULONG AlignmentMask;
ULONG NumberOfAccessRanges;
ACCESS_RANGE (*AccessRanges)[];
PVOID Reserved;
UCHAR NumberOfBuses;
UCHAR InitiatorBusId[8];
BOOLEAN ScatterGather;
BOOLEAN Master;
BOOLEAN CachesData;
BOOLEAN AdapterScansDown;
BOOLEAN AtdiskPrimaryClaimed;
BOOLEAN AtdiskSecondaryClaimed;
BOOLEAN Dma32BitAddresses;
BOOLEAN DemandMode;
BOOLEAN MapBuffers;
BOOLEAN NeedPhysicalAddresses;
BOOLEAN TaggedQueueing;
BOOLEAN AutoRequestSense;
BOOLEAN MultipleRequestPerLu;
BOOLEAN ReceiveEvent;
BOOLEAN RealModeInitialized;
BOOLEAN BufferAccessScsiPortControlled;
UCHAR MaximumNumberOfTargets;
UCHAR ReservedUchars[2];
ULONG SlotNumber;
ULONG BusInterruptLevel2;
ULONG BusInterruptVector2;
KINTERRUPT_MODE InterruptMode2;
ULONG DmaChannel2;
ULONG DmaPort2;
DMA_WIDTH DmaWidth2;
DMA_SPEED DmaSpeed2;
ULONG DeviceExtensionSize;
ULONG SpecificLuExtensionSize;
ULONG SrbExtensionSize;
UCHAR Dma64BitAddresses;
BOOLEAN ResetTargetSupported;
UCHAR MaximumNumberOfLogicalUnits;
BOOLEAN WmiDataProvider;
} PORT_CONFIGURATION_INFORMATION, *PPORT_CONFIGURATION_INFORMATION;
#define CONFIG_INFO_VERSION_2 sizeof(PORT_CONFIGURATION_INFORMATION)
typedef enum _SCSI_NOTIFICATION_TYPE {
RequestComplete,
NextRequest,
NextLuRequest,
ResetDetected,
CallDisableInterrupts,
CallEnableInterrupts,
RequestTimerCall,
BusChangeDetected,
WMIEvent,
WMIReregister
} SCSI_NOTIFICATION_TYPE, *PSCSI_NOTIFICATION_TYPE;
typedef enum _SCSI_ADAPTER_CONTROL_TYPE {
ScsiQuerySupportedControlTypes = 0,
ScsiStopAdapter,
ScsiRestartAdapter,
ScsiSetBootConfig,
ScsiSetRunningConfig,
ScsiAdapterControlMax,
MakeAdapterControlTypeSizeOfUlong = 0xffffffff
} SCSI_ADAPTER_CONTROL_TYPE, *PSCSI_ADAPTER_CONTROL_TYPE;
typedef enum _SCSI_ADAPTER_CONTROL_STATUS {
ScsiAdapterControlSuccess = 0,
ScsiAdapterControlUnsuccessful
} SCSI_ADAPTER_CONTROL_STATUS, *PSCSI_ADAPTER_CONTROL_STATUS;
typedef struct _SCSI_SUPPORTED_CONTROL_TYPE_LIST {
ULONG MaxControlType;
BOOLEAN SupportedTypeList[0];
} SCSI_SUPPORTED_CONTROL_TYPE_LIST, *PSCSI_SUPPORTED_CONTROL_TYPE_LIST;
typedef SCSI_ADAPTER_CONTROL_STATUS DDKAPI
(*PHW_ADAPTER_CONTROL)(
IN PVOID DeviceExtension,
IN SCSI_ADAPTER_CONTROL_TYPE ControlType,
IN PVOID Parameters);
typedef BOOLEAN DDKAPI
(*PHW_ADAPTER_STATE)(
IN PVOID DeviceExtension,
IN PVOID Context,
IN BOOLEAN SaveState);
#define SP_RETURN_NOT_FOUND 0
#define SP_RETURN_FOUND 1
#define SP_RETURN_ERROR 2
#define SP_RETURN_BAD_CONFIG 3
typedef ULONG DDKAPI
(*PHW_FIND_ADAPTER)(
IN PVOID DeviceExtension,
IN PVOID HwContext,
IN PVOID BusInformation,
IN PCHAR ArgumentString,
IN OUT PPORT_CONFIGURATION_INFORMATION ConfigInfo,
OUT PBOOLEAN Again);
typedef BOOLEAN DDKAPI
(*PHW_INITIALIZE)(
IN PVOID DeviceExtension);
typedef BOOLEAN DDKAPI
(*PHW_INTERRUPT)(
IN PVOID DeviceExtension);
typedef BOOLEAN DDKAPI
(*PHW_RESET_BUS)(
IN PVOID DeviceExtension,
IN ULONG PathId);
typedef VOID DDKAPI
(*PHW_DMA_STARTED)(
IN PVOID DeviceExtension);
typedef BOOLEAN DDKAPI
(*PHW_STARTIO)(
IN PVOID DeviceExtension,
IN PSCSI_REQUEST_BLOCK Srb);
typedef VOID DDKAPI
(*PHW_TIMER)(
IN PVOID DeviceExtension);
typedef struct _HW_INITIALIZATION_DATA {
ULONG HwInitializationDataSize;
INTERFACE_TYPE AdapterInterfaceType;
PHW_INITIALIZE HwInitialize;
PHW_STARTIO HwStartIo;
PHW_INTERRUPT HwInterrupt;
PHW_FIND_ADAPTER HwFindAdapter;
PHW_RESET_BUS HwResetBus;
PHW_DMA_STARTED HwDmaStarted;
PHW_ADAPTER_STATE HwAdapterState;
ULONG DeviceExtensionSize;
ULONG SpecificLuExtensionSize;
ULONG SrbExtensionSize;
ULONG NumberOfAccessRanges;
PVOID Reserved;
BOOLEAN MapBuffers;
BOOLEAN NeedPhysicalAddresses;
BOOLEAN TaggedQueueing;
BOOLEAN AutoRequestSense;
BOOLEAN MultipleRequestPerLu;
BOOLEAN ReceiveEvent;
USHORT VendorIdLength;
PVOID VendorId;
USHORT ReservedUshort;
USHORT DeviceIdLength;
PVOID DeviceId;
PHW_ADAPTER_CONTROL HwAdapterControl;
} HW_INITIALIZATION_DATA, *PHW_INITIALIZATION_DATA;
SCSIPORTAPI
VOID
DDKAPI
ScsiPortCompleteRequest(
IN PVOID HwDeviceExtension,
IN UCHAR PathId,
IN UCHAR TargetId,
IN UCHAR Lun,
IN UCHAR SrbStatus);
/*
* ULONG
* ScsiPortConvertPhysicalAddressToUlong(
* IN SCSI_PHYSICAL_ADDRESS Address);
*/
#define ScsiPortConvertPhysicalAddressToUlong(Address) ((Address).LowPart)
SCSIPORTAPI
SCSI_PHYSICAL_ADDRESS
DDKAPI
ScsiPortConvertUlongToPhysicalAddress(
IN ULONG UlongAddress);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortFlushDma(
IN PVOID DeviceExtension);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortFreeDeviceBase(
IN PVOID HwDeviceExtension,
IN PVOID MappedAddress);
SCSIPORTAPI
ULONG
DDKAPI
ScsiPortGetBusData(
IN PVOID DeviceExtension,
IN ULONG BusDataType,
IN ULONG SystemIoBusNumber,
IN ULONG SlotNumber,
IN PVOID Buffer,
IN ULONG Length);
SCSIPORTAPI
PVOID
DDKAPI
ScsiPortGetDeviceBase(
IN PVOID HwDeviceExtension,
IN INTERFACE_TYPE BusType,
IN ULONG SystemIoBusNumber,
IN SCSI_PHYSICAL_ADDRESS IoAddress,
IN ULONG NumberOfBytes,
IN BOOLEAN InIoSpace);
SCSIPORTAPI
PVOID
DDKAPI
ScsiPortGetLogicalUnit(
IN PVOID HwDeviceExtension,
IN UCHAR PathId,
IN UCHAR TargetId,
IN UCHAR Lun);
SCSIPORTAPI
SCSI_PHYSICAL_ADDRESS
DDKAPI
ScsiPortGetPhysicalAddress(
IN PVOID HwDeviceExtension,
IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
IN PVOID VirtualAddress,
OUT ULONG *Length);
SCSIPORTAPI
PSCSI_REQUEST_BLOCK
DDKAPI
ScsiPortGetSrb(
IN PVOID DeviceExtension,
IN UCHAR PathId,
IN UCHAR TargetId,
IN UCHAR Lun,
IN LONG QueueTag);
SCSIPORTAPI
PVOID
DDKAPI
ScsiPortGetUncachedExtension(
IN PVOID HwDeviceExtension,
IN PPORT_CONFIGURATION_INFORMATION ConfigInfo,
IN ULONG NumberOfBytes);
SCSIPORTAPI
PVOID
DDKAPI
ScsiPortGetVirtualAddress(
IN PVOID HwDeviceExtension,
IN SCSI_PHYSICAL_ADDRESS PhysicalAddress);
SCSIPORTAPI
ULONG
DDKAPI
ScsiPortInitialize(
IN PVOID Argument1,
IN PVOID Argument2,
IN struct _HW_INITIALIZATION_DATA *HwInitializationData,
IN PVOID HwContext OPTIONAL);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortIoMapTransfer(
IN PVOID HwDeviceExtension,
IN PSCSI_REQUEST_BLOCK Srb,
IN ULONG LogicalAddress,
IN ULONG Length);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortLogError(
IN PVOID HwDeviceExtension,
IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
IN UCHAR PathId,
IN UCHAR TargetId,
IN UCHAR Lun,
IN ULONG ErrorCode,
IN ULONG UniqueId);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortMoveMemory(
IN PVOID WriteBuffer,
IN PVOID ReadBuffer,
IN ULONG Length);
SCSIPORTAPI
VOID
DDKCDECLAPI
ScsiPortNotification(
IN SCSI_NOTIFICATION_TYPE NotificationType,
IN PVOID HwDeviceExtension,
IN ...);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortQuerySystemTime(
OUT PLARGE_INTEGER CurrentTime);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortReadPortBufferUchar(
IN PUCHAR Port,
IN PUCHAR Buffer,
IN ULONG Count);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortReadPortBufferUlong(
IN PULONG Port,
IN PULONG Buffer,
IN ULONG Count);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortReadPortBufferUshort(
IN PUSHORT Port,
IN PUSHORT Buffer,
IN ULONG Count);
SCSIPORTAPI
UCHAR
DDKAPI
ScsiPortReadPortUchar(
IN PUCHAR Port);
SCSIPORTAPI
ULONG
DDKAPI
ScsiPortReadPortUlong(
IN PULONG Port);
SCSIPORTAPI
USHORT
DDKAPI
ScsiPortReadPortUshort(
IN PUSHORT Port);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortReadRegisterBufferUchar(
IN PUCHAR Register,
IN PUCHAR Buffer,
IN ULONG Count);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortReadRegisterBufferUlong(
IN PULONG Register,
IN PULONG Buffer,
IN ULONG Count);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortReadRegisterBufferUshort(
IN PUSHORT Register,
IN PUSHORT Buffer,
IN ULONG Count);
SCSIPORTAPI
UCHAR
DDKAPI
ScsiPortReadRegisterUchar(
IN PUCHAR Register);
SCSIPORTAPI
ULONG
DDKAPI
ScsiPortReadRegisterUlong(
IN PULONG Register);
SCSIPORTAPI
USHORT
DDKAPI
ScsiPortReadRegisterUshort(
IN PUSHORT Register);
SCSIPORTAPI
ULONG
DDKAPI
ScsiPortSetBusDataByOffset(
IN PVOID DeviceExtension,
IN ULONG BusDataType,
IN ULONG SystemIoBusNumber,
IN ULONG SlotNumber,
IN PVOID Buffer,
IN ULONG Offset,
IN ULONG Length);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortStallExecution(
IN ULONG Delay);
SCSIPORTAPI
BOOLEAN
DDKAPI
ScsiPortValidateRange(
IN PVOID HwDeviceExtension,
IN INTERFACE_TYPE BusType,
IN ULONG SystemIoBusNumber,
IN SCSI_PHYSICAL_ADDRESS IoAddress,
IN ULONG NumberOfBytes,
IN BOOLEAN InIoSpace);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortWritePortBufferUchar(
IN PUCHAR Port,
IN PUCHAR Buffer,
IN ULONG Count);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortWritePortBufferUlong(
IN PULONG Port,
IN PULONG Buffer,
IN ULONG Count);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortWritePortBufferUshort(
IN PUSHORT Port,
IN PUSHORT Buffer,
IN ULONG Count);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortWritePortUchar(
IN PUCHAR Port,
IN UCHAR Value);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortWritePortUlong(
IN PULONG Port,
IN ULONG Value);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortWritePortUshort(
IN PUSHORT Port,
IN USHORT Value);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortWriteRegisterBufferUchar(
IN PUCHAR Register,
IN PUCHAR Buffer,
IN ULONG Count);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortWriteRegisterBufferUlong(
IN PULONG Register,
IN PULONG Buffer,
IN ULONG Count);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortWriteRegisterBufferUshort(
IN PUSHORT Register,
IN PUSHORT Buffer,
IN ULONG Count);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortWriteRegisterUchar(
IN PUCHAR Register,
IN ULONG Value);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortWriteRegisterUlong(
IN PULONG Register,
IN ULONG Value);
SCSIPORTAPI
VOID
DDKAPI
ScsiPortWriteRegisterUshort(
IN PUSHORT Register,
IN USHORT Value);
SCSIPORTAPI
VOID
DDKCDECLAPI
ScsiDebugPrint(
IN ULONG DebugPrintLevel,
IN PCCHAR DebugMessage,
IN ...);
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __SRB_H */

View File

@ -0,0 +1,426 @@
/*
* storport.h
*
* StorPort interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __STORPORT_H
#define __STORPORT_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "srb.h"
#if defined(_STORPORT_)
#define STORPORTAPI DECLSPEC_EXPORT
#else
#define STORPORTAPI DECLSPEC_IMPORT
#endif
typedef PHYSICAL_ADDRESS STOR_PHYSICAL_ADDRESS;
typedef struct _STOR_SCATTER_GATHER_ELEMENT {
STOR_PHYSICAL_ADDRESS PhysicalAddress;
ULONG Length;
ULONG_PTR Reserved;
} STOR_SCATTER_GATHER_ELEMENT, *PSTOR_SCATTER_GATHER_ELEMENT;
typedef struct _STOR_SCATTER_GATHER_LIST {
ULONG NumberOfElements;
ULONG_PTR Reserved;
STOR_SCATTER_GATHER_ELEMENT List[0];
} STOR_SCATTER_GATHER_LIST, *PSTOR_SCATTER_GATHER_LIST;
typedef struct _SCSI_WMI_REQUEST_BLOCK {
USHORT Length;
UCHAR Function;
UCHAR SrbStatus;
UCHAR WMISubFunction;
UCHAR PathId;
UCHAR TargetId;
UCHAR Lun;
UCHAR Reserved1;
UCHAR WMIFlags;
UCHAR Reserved2[2];
ULONG SrbFlags;
ULONG DataTransferLength;
ULONG TimeOutValue;
PVOID DataBuffer;
PVOID DataPath;
PVOID Reserved3;
PVOID OriginalRequest;
PVOID SrbExtension;
ULONG Reserved4;
UCHAR Reserved5[16];
} SCSI_WMI_REQUEST_BLOCK, *PSCSI_WMI_REQUEST_BLOCK;
STORPORTAPI
ULONG
DDKAPI
StorPortInitialize(
IN PVOID Argument1,
IN PVOID Argument2,
IN PHW_INITIALIZATION_DATA HwInitializationData,
IN PVOID Unused);
STORPORTAPI
VOID
DDKAPI
StorPortFreeDeviceBase(
IN PVOID HwDeviceExtension,
IN PVOID MappedAddress);
STORPORTAPI
ULONG
DDKAPI
StorPortGetBusData(
IN PVOID DeviceExtension,
IN ULONG BusDataType,
IN ULONG SystemIoBusNumber,
IN ULONG SlotNumber,
IN PVOID Buffer,
IN ULONG Length);
STORPORTAPI
ULONG
DDKAPI
StorPortSetBusDataByOffset(
IN PVOID DeviceExtension,
IN ULONG BusDataType,
IN ULONG SystemIoBusNumber,
IN ULONG SlotNumber,
IN PVOID Buffer,
IN ULONG Offset,
IN ULONG Length);
STORPORTAPI
PVOID
DDKAPI
StorPortGetDeviceBase(
IN PVOID HwDeviceExtension,
IN INTERFACE_TYPE BusType,
IN ULONG SystemIoBusNumber,
IN SCSI_PHYSICAL_ADDRESS IoAddress,
IN ULONG NumberOfBytes,
IN BOOLEAN InIoSpace);
STORPORTAPI
PVOID
DDKAPI
StorPortGetLogicalUnit(
IN PVOID HwDeviceExtension,
IN UCHAR PathId,
IN UCHAR TargetId,
IN UCHAR Lun);
STORPORTAPI
PSCSI_REQUEST_BLOCK
DDKAPI
StorPortGetSrb(
IN PVOID DeviceExtension,
IN UCHAR PathId,
IN UCHAR TargetId,
IN UCHAR Lun,
IN LONG QueueTag);
STORPORTAPI
STOR_PHYSICAL_ADDRESS
DDKAPI
StorPortGetPhysicalAddress(
IN PVOID HwDeviceExtension,
IN PSCSI_REQUEST_BLOCK Srb,
IN PVOID VirtualAddress,
OUT ULONG *Length);
STORPORTAPI
PVOID
DDKAPI
StorPortGetVirtualAddress(
IN PVOID HwDeviceExtension,
IN STOR_PHYSICAL_ADDRESS PhysicalAddress);
STORPORTAPI
PVOID
DDKAPI
StorPortGetUncachedExtension(
IN PVOID HwDeviceExtension,
IN PPORT_CONFIGURATION_INFORMATION ConfigInfo,
IN ULONG NumberOfBytes);
STORPORTAPI
VOID
DDKCDECLAPI
StorPortNotification(
IN SCSI_NOTIFICATION_TYPE NotificationType,
IN PVOID HwDeviceExtension,
IN ...);
STORPORTAPI
VOID
DDKAPI
StorPortLogError(
IN PVOID HwDeviceExtension,
IN PSCSI_REQUEST_BLOCK Srb OPTIONAL,
IN UCHAR PathId,
IN UCHAR TargetId,
IN UCHAR Lun,
IN ULONG ErrorCode,
IN ULONG UniqueId);
STORPORTAPI
VOID
DDKAPI
StorPortCompleteRequest(
IN PVOID HwDeviceExtension,
IN UCHAR PathId,
IN UCHAR TargetId,
IN UCHAR Lun,
IN UCHAR SrbStatus);
STORPORTAPI
VOID
DDKAPI
StorPortMoveMemory(
IN PVOID WriteBuffer,
IN PVOID ReadBuffer,
IN ULONG Length);
STORPORTAPI
VOID
DDKAPI
StorPortStallExecution(
IN ULONG Delay);
STORPORTAPI
STOR_PHYSICAL_ADDRESS
DDKAPI
StorPortConvertUlong64ToPhysicalAddress(
IN ULONG64 UlongAddress);
STORPORTAPI
ULONG64
DDKAPI
StorPortConvertPhysicalAddressToUlong64(
IN STOR_PHYSICAL_ADDRESS Address);
STORPORTAPI
BOOLEAN
DDKAPI
StorPortValidateRange(
IN PVOID HwDeviceExtension,
IN INTERFACE_TYPE BusType,
IN ULONG SystemIoBusNumber,
IN STOR_PHYSICAL_ADDRESS IoAddress,
IN ULONG NumberOfBytes,
IN BOOLEAN InIoSpace);
STORPORTAPI
VOID
DDKCDECLAPI
StorPortDebugPrint(
IN ULONG DebugPrintLevel,
IN PCCHAR DebugMessage,
IN ...);
STORPORTAPI
UCHAR
DDKAPI
StorPortReadPortUchar(
IN PUCHAR Port);
STORPORTAPI
ULONG
DDKAPI
StorPortReadPortUlong(
IN PULONG Port);
STORPORTAPI
USHORT
DDKAPI
StorPortReadPortUshort(
IN PUSHORT Port);
STORPORTAPI
UCHAR
DDKAPI
StorPortReadRegisterUchar(
IN PUCHAR Register);
STORPORTAPI
ULONG
DDKAPI
StorPortReadRegisterUlong(
IN PULONG Register);
STORPORTAPI
USHORT
DDKAPI
StorPortReadRegisterUshort(
IN PUSHORT Register);
STORPORTAPI
VOID
DDKAPI
StorPortWritePortUchar(
IN PUCHAR Port,
IN UCHAR Value);
STORPORTAPI
VOID
DDKAPI
StorPortWritePortUlong(
IN PULONG Port,
IN ULONG Value);
STORPORTAPI
VOID
DDKAPI
StorPortWritePortUshort(
IN PUSHORT Port,
IN USHORT Value);
STORPORTAPI
VOID
DDKAPI
StorPortWriteRegisterUchar(
IN PUCHAR Port,
IN UCHAR Value);
STORPORTAPI
VOID
DDKAPI
StorPortWriteRegisterUlong(
IN PULONG Port,
IN ULONG Value);
STORPORTAPI
VOID
DDKAPI
StorPortWriteRegisterUshort(
IN PUSHORT Port,
IN USHORT Value);
STORPORTAPI
BOOLEAN
DDKAPI
StorPortPauseDevice(
IN PVOID HwDeviceExtension,
IN UCHAR PathId,
IN UCHAR TargetId,
IN UCHAR Lun,
IN ULONG TimeOut);
STORPORTAPI
BOOLEAN
DDKAPI
StorPortResumeDevice(
IN PVOID HwDeviceExtension,
IN UCHAR PathId,
IN UCHAR TargetId,
IN UCHAR Lun);
STORPORTAPI
BOOLEAN
DDKAPI
StorPortPause(
IN PVOID HwDeviceExtension,
IN ULONG TimeOut);
STORPORTAPI
BOOLEAN
DDKAPI
StorPortResume(
IN PVOID HwDeviceExtension);
STORPORTAPI
BOOLEAN
DDKAPI
StorPortDeviceBusy(
IN PVOID HwDeviceExtension,
IN UCHAR PathId,
IN UCHAR TargetId,
IN UCHAR Lun,
IN ULONG RequestsToComplete);
STORPORTAPI
BOOLEAN
DDKAPI
StorPortDeviceReady(
IN PVOID HwDeviceExtension,
IN UCHAR PathId,
IN UCHAR TargetId,
IN UCHAR Lun);
STORPORTAPI
BOOLEAN
DDKAPI
StorPortBusy(
IN PVOID HwDeviceExtension,
IN ULONG RequestsToComplete);
STORPORTAPI
BOOLEAN
DDKAPI
StorPortReady(
IN PVOID HwDeviceExtension);
STORPORTAPI
PSTOR_SCATTER_GATHER_LIST
DDKAPI
StorPortGetScatterGatherList(
IN PVOID DeviceExtension,
IN PSCSI_REQUEST_BLOCK Srb);
typedef BOOLEAN DDKAPI
(*PSTOR_SYNCHRONIZED_ACCESS)(
IN PVOID HwDeviceExtension,
IN PVOID Context);
STORPORTAPI
VOID
DDKAPI
StorPortSynchronizeAccess(
IN PVOID HwDeviceExtension,
IN PSTOR_SYNCHRONIZED_ACCESS SynchronizedAccessRoutine,
IN PVOID Context);
#if DBG
#define DebugPrint(x) StorPortDebugPrint x
#else
#define DebugPrint(x)
#endif
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __STORPORT_H */

View File

@ -0,0 +1,597 @@
/*
* tdi.h
*
* TDI user mode definitions
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __TDI_H
#define __TDI_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "ntddtdi.h"
#include "tdistat.h"
#include "netpnp.h"
/* Basic types */
typedef LONG TDI_STATUS;
typedef PVOID CONNECTION_CONTEXT;
typedef struct _TDI_CONNECTION_INFORMATION {
LONG UserDataLength;
PVOID UserData;
LONG OptionsLength;
PVOID Options;
LONG RemoteAddressLength;
PVOID RemoteAddress;
} TDI_CONNECTION_INFORMATION, *PTDI_CONNECTION_INFORMATION;
typedef struct _TDI_REQUEST {
union {
HANDLE AddressHandle;
CONNECTION_CONTEXT ConnectionContext;
HANDLE ControlChannel;
} Handle;
PVOID RequestNotifyObject;
PVOID RequestContext;
TDI_STATUS TdiStatus;
} TDI_REQUEST, *PTDI_REQUEST;
typedef struct _TDI_REQUEST_STATUS {
TDI_STATUS Status;
PVOID RequestContext;
ULONG BytesTransferred;
} TDI_REQUEST_STATUS, *PTDI_REQUEST_STATUS;
typedef struct _TA_ADDRESS {
USHORT AddressLength;
USHORT AddressType;
UCHAR Address[1];
} TA_ADDRESS, *PTA_ADDRESS;
#define TDI_ADDRESS_TYPE_UNSPEC 0
#define TDI_ADDRESS_TYPE_UNIX 1
#define TDI_ADDRESS_TYPE_IP 2
#define TDI_ADDRESS_TYPE_IMPLINK 3
#define TDI_ADDRESS_TYPE_PUP 4
#define TDI_ADDRESS_TYPE_CHAOS 5
#define TDI_ADDRESS_TYPE_NS 6
#define TDI_ADDRESS_TYPE_IPX 6
#define TDI_ADDRESS_TYPE_NBS 7
#define TDI_ADDRESS_TYPE_ECMA 8
#define TDI_ADDRESS_TYPE_DATAKIT 9
#define TDI_ADDRESS_TYPE_CCITT 10
#define TDI_ADDRESS_TYPE_SNA 11
#define TDI_ADDRESS_TYPE_DECnet 12
#define TDI_ADDRESS_TYPE_DLI 13
#define TDI_ADDRESS_TYPE_LAT 14
#define TDI_ADDRESS_TYPE_HYLINK 15
#define TDI_ADDRESS_TYPE_APPLETALK 16
#define TDI_ADDRESS_TYPE_NETBIOS 17
#define TDI_ADDRESS_TYPE_8022 18
#define TDI_ADDRESS_TYPE_OSI_TSAP 19
#define TDI_ADDRESS_TYPE_NETONE 20
#define TDI_ADDRESS_TYPE_VNS 21
#define TDI_ADDRESS_TYPE_NETBIOS_EX 22
#define TDI_ADDRESS_TYPE_IP6 23
#define TDI_ADDRESS_TYPE_NETBIOS_UNICODE_EX 24
#define TdiTransportAddress "TransportAddress"
#define TdiConnectionContext "ConnectionContext"
#define TDI_TRANSPORT_ADDRESS_LENGTH (sizeof(TdiTransportAddress) - 1)
#define TDI_CONNECTION_CONTEXT_LENGTH (sizeof(TdiConnectionContext) - 1)
typedef struct _TRANSPORT_ADDRESS {
LONG TAAddressCount;
TA_ADDRESS Address[1];
} TRANSPORT_ADDRESS, *PTRANSPORT_ADDRESS;
typedef struct _TDI_ADDRESS_INFO {
ULONG ActivityCount;
TRANSPORT_ADDRESS Address;
} TDI_ADDRESS_INFO, *PTDI_ADDRESS_INFO;
typedef struct _TDI_ACTION_HEADER {
ULONG TransportId;
USHORT ActionCode;
USHORT Reserved;
} TDI_ACTION_HEADER, *PTDI_ACTION_HEADER;
typedef struct _TDI_ADDRESS_8022 {
UCHAR MACAddress[6];
} TDI_ADDRESS_8022, *PTDI_ADDRESS_8022;
#define TDI_ADDRESS_LENGTH_8022 sizeof(TDI_ADDRESS_8022);
typedef struct _TDI_ADDRESS_APPLETALK {
USHORT Network;
UCHAR Node;
UCHAR Socket;
} TDI_ADDRESS_APPLETALK, *PTDI_ADDRESS_APPLETALK;
#define TDI_ADDRESS_LENGTH_APPLETALK sizeof(TDI_ADDRESS_APPLETALK)
typedef struct _TDI_ADDRESS_IP {
USHORT sin_port;
ULONG in_addr;
UCHAR sin_zero[8];
} TDI_ADDRESS_IP, *PTDI_ADDRESS_IP;
#define TDI_ADDRESS_LENGTH_IP sizeof(TDI_ADDRESS_IP)
typedef struct _TDI_ADDRESS_IPX {
ULONG NetworkAddress;
UCHAR NodeAddress[6];
USHORT Socket;
} TDI_ADDRESS_IPX, *PTDI_ADDRESS_IPX;
#define TDI_ADDRESS_LENGTH_IPX sizeof(TDI_ADDRESS_IPX)
/* TDI_ADDRESS_NETBIOS.NetbiosNameType constants */
#define TDI_ADDRESS_NETBIOS_TYPE_UNIQUE 0x0000
#define TDI_ADDRESS_NETBIOS_TYPE_GROUP 0x0001
#define TDI_ADDRESS_NETBIOS_TYPE_QUICK_UNIQUE 0x0002
#define TDI_ADDRESS_NETBIOS_TYPE_QUICK_GROUP 0x0003
typedef struct _TDI_ADDRESS_NETBIOS {
USHORT NetbiosNameType;
UCHAR NetbiosName[16];
} TDI_ADDRESS_NETBIOS, *PTDI_ADDRESS_NETBIOS;
#define TDI_ADDRESS_LENGTH_NETBIOS sizeof(TDI_ADDRESS_NETBIOS)
typedef struct _TDI_ADDRESS_NETBIOS_EX {
UCHAR EndpointName[16];
TDI_ADDRESS_NETBIOS NetbiosAddress;
} TDI_ADDRESS_NETBIOS_EX, *PTDI_ADDRESS_NETBIOS_EX;
#define TDI_ADDRESS_LENGTH_NETBIOS_EX sizeof(TDI_ADDRESS_NETBIOS_EX)
/* TDI_ADDRESS_NETONE.NetoneNameType constants */
#define TDI_ADDRESS_NETONE_TYPE_UNIQUE 0x0000
#define TDI_ADDRESS_NETONE_TYPE_ROTORED 0x0001
typedef struct _TDI_ADDRESS_NETONE {
USHORT NetoneNameType;
UCHAR NetoneName[20];
} TDI_ADDRESS_NETONE, *PTDI_ADDRESS_NETONE;
#define TDI_ADDRESS_LENGTH_NETONE sizeof(TDI_ADDRESS_NETONE)
typedef struct _TDI_ADDRESS_NS
{
ULONG NetworkAddress;
UCHAR NodeAddress[6];
USHORT Socket;
} TDI_ADDRESS_NS, *PTDI_ADDRESS_NS;
#define TDI_ADDRESS_LENGTH_NS sizeof(TDI_ADDRESS_NS)
#define ISO_MAX_ADDR_LENGTH 64
/* TDI_ADDRESS_OSI_TSAP.tp_addr_type constants */
#define ISO_HIERARCHICAL 0
#define ISO_NON_HIERARCHICAL 1
typedef struct _TDI_ADDRESS_OSI_TSAP {
USHORT tp_addr_type;
USHORT tp_taddr_len;
USHORT tp_tsel_len;
UCHAR tp_addr[ISO_MAX_ADDR_LENGTH];
} TDI_ADDRESS_OSI_TSAP, *PTDI_ADDRESS_OSI_TSAP;
#define TDI_ADDRESS_LENGTH_OSI_TSAP sizeof(TDI_ADDRESS_OSI_TSAP)
typedef struct _TDI_ADDRESS_VNS {
UCHAR net_address[4];
UCHAR subnet_addr[2];
UCHAR port[2];
UCHAR hops;
UCHAR filler[5];
} TDI_ADDRESS_VNS, *PTDI_ADDRESS_VNS;
#define TDI_ADDRESS_LENGTH_VNS sizeof(TDI_ADDRESS_VNS)
typedef struct _TDI_ADDRESS_IP6 {
USHORT sin6_port;
ULONG sin6_flowinfo;
USHORT sin6_addr[8];
ULONG sin6_scope_id;
} TDI_ADDRESS_IP6, *PTDI_ADDRESS_IP6;
#define TDI_ADDRESS_LENGTH_IP6 sizeof(TDI_ADDRESS_IP6)
enum eNameBufferType {
NBT_READONLY = 0,
NBT_WRITEONLY,
NBT_READWRITE,
NBT_WRITTEN
};
typedef struct _TDI_ADDRESS_NETBIOS_UNICODE_EX {
USHORT NetbiosNameType;
enum eNameBufferType NameBufferType;
UNICODE_STRING EndpointName;
UNICODE_STRING RemoteName;
WCHAR EndpointBuffer[17];
WCHAR RemoteNameBuffer[1];
} TDI_ADDRESS_NETBIOS_UNICODE_EX, *PTDI_ADDRESS_NETBIOS_UNICODE_EX;
typedef struct _TDI_CONNECT_REQUEST {
TDI_REQUEST Request;
PTDI_CONNECTION_INFORMATION RequestConnectionInformation;
PTDI_CONNECTION_INFORMATION ReturnConnectionInformation;
LARGE_INTEGER Timeout;
} TDI_REQUEST_CONNECT, *PTDI_REQUEST_CONNECT;
typedef struct _TDI_REQUEST_ACCEPT {
TDI_REQUEST Request;
PTDI_CONNECTION_INFORMATION RequestConnectionInformation;
PTDI_CONNECTION_INFORMATION ReturnConnectionInformation;
} TDI_REQUEST_ACCEPT, *PTDI_REQUEST_ACCEPT;
typedef struct _TDI_REQUEST_LISTEN {
TDI_REQUEST Request;
PTDI_CONNECTION_INFORMATION RequestConnectionInformation;
PTDI_CONNECTION_INFORMATION ReturnConnectionInformation;
USHORT ListenFlags;
} TDI_REQUEST_LISTEN, *PTDI_REQUEST_LISTEN;
typedef struct _TDI_DISCONNECT_REQUEST {
TDI_REQUEST Request;
LARGE_INTEGER Timeout;
} TDI_REQUEST_DISCONNECT, *PTDI_REQUEST_DISCONNECT;
typedef struct _TDI_REQUEST_SEND {
TDI_REQUEST Request;
USHORT SendFlags;
} TDI_REQUEST_SEND, *PTDI_REQUEST_SEND;
typedef struct _TDI_REQUEST_RECEIVE {
TDI_REQUEST Request;
USHORT ReceiveFlags;
} TDI_REQUEST_RECEIVE, *PTDI_REQUEST_RECEIVE;
typedef struct _TDI_REQUEST_SEND_DATAGRAM {
TDI_REQUEST Request;
PTDI_CONNECTION_INFORMATION SendDatagramInformation;
} TDI_REQUEST_SEND_DATAGRAM, *PTDI_REQUEST_SEND_DATAGRAM;
typedef struct _TDI_REQUEST_RECEIVE_DATAGRAM {
TDI_REQUEST Request;
PTDI_CONNECTION_INFORMATION ReceiveDatagramInformation;
PTDI_CONNECTION_INFORMATION ReturnInformation;
USHORT ReceiveFlags;
} TDI_REQUEST_RECEIVE_DATAGRAM, *PTDI_REQUEST_RECEIVE_DATAGRAM;
typedef struct _TDI_REQUEST_SET_EVENT {
TDI_REQUEST Request;
LONG EventType;
PVOID EventHandler;
PVOID EventContext;
} TDI_REQUEST_SET_EVENT_HANDLER, *PTDI_REQUEST_SET_EVENT_HANDLER;
#define TDI_RECEIVE_BROADCAST 0x00000004
#define TDI_RECEIVE_MULTICAST 0x00000008
#define TDI_RECEIVE_PARTIAL 0x00000010
#define TDI_RECEIVE_NORMAL 0x00000020
#define TDI_RECEIVE_EXPEDITED 0x00000040
#define TDI_RECEIVE_PEEK 0x00000080
#define TDI_RECEIVE_NO_RESPONSE_EXP 0x00000100
#define TDI_RECEIVE_COPY_LOOKAHEAD 0x00000200
#define TDI_RECEIVE_ENTIRE_MESSAGE 0x00000400
#define TDI_RECEIVE_AT_DISPATCH_LEVEL 0x00000800
#define TDI_RECEIVE_CONTROL_INFO 0x00001000
/* Listen flags *
#define TDI_QUERY_ACCEPT 0x00000001
/* Options used for both SendOptions and ReceiveIndicators */
#define TDI_SEND_EXPEDITED 0x0020
#define TDI_SEND_PARTIAL 0x0040
#define TDI_SEND_NO_RESPONSE_EXPECTED 0x0080
#define TDI_SEND_NON_BLOCKING 0x0100
#define TDI_SEND_AND_DISCONNECT 0x0200
/* Disconnect Flags */
#define TDI_DISCONNECT_WAIT 0x0001
#define TDI_DISCONNECT_ABORT 0x0002
#define TDI_DISCONNECT_RELEASE 0x0004
/* TdiRequest structure for TdiQueryInformation request */
typedef struct _TDI_REQUEST_QUERY_INFORMATION {
TDI_REQUEST Request;
ULONG QueryType;
PTDI_CONNECTION_INFORMATION RequestConnectionInformation;
} TDI_REQUEST_QUERY_INFORMATION, *PTDI_REQUEST_QUERY_INFORMATION;
/* TdiRequest structure for TdiSetInformation request */
typedef struct _TDI_REQUEST_SET_INFORMATION {
TDI_REQUEST Request;
ULONG SetType;
PTDI_CONNECTION_INFORMATION RequestConnectionInformation;
} TDI_REQUEST_SET_INFORMATION, *PTDI_REQUEST_SET_INFORMATION;
typedef TDI_REQUEST_SET_INFORMATION TDI_REQ_SET_INFORMATION, *PTDI_REQ_SET_INFORMATION;
typedef union _TDI_REQUEST_TYPE {
TDI_REQUEST_ACCEPT TdiAccept;
TDI_REQUEST_CONNECT TdiConnect;
TDI_REQUEST_DISCONNECT TdiDisconnect;
TDI_REQUEST_LISTEN TdiListen;
TDI_REQUEST_QUERY_INFORMATION TdiQueryInformation;
TDI_REQUEST_RECEIVE TdiReceive;
TDI_REQUEST_RECEIVE_DATAGRAM TdiReceiveDatagram;
TDI_REQUEST_SEND TdiSend;
TDI_REQUEST_SEND_DATAGRAM TdiSendDatagram;
TDI_REQUEST_SET_EVENT_HANDLER TdiSetEventHandler;
TDI_REQUEST_SET_INFORMATION TdiSetInformation;
} TDI_REQUEST_TYPE, *PTDI_REQUEST_TYPE;
/* Query information types */
/* Generic query info types that must be supported by all transports */
#define TDI_QUERY_BROADCAST_ADDRESS 0x00000001
#define TDI_QUERY_PROVIDER_INFO 0x00000002
#define TDI_QUERY_ADDRESS_INFO 0x00000003
#define TDI_QUERY_CONNECTION_INFO 0x00000004
#define TDI_QUERY_PROVIDER_STATISTICS 0x00000005
#define TDI_QUERY_DATAGRAM_INFO 0x00000006
#define TDI_QUERY_DATA_LINK_ADDRESS 0x00000007
#define TDI_QUERY_NETWORK_ADDRESS 0x00000008
#define TDI_QUERY_MAX_DATAGRAM_INFO 0x00000009
/* Netbios specific query information types */
#define TDI_QUERY_ADAPTER_STATUS 0x00000100
#define TDI_QUERY_SESSION_STATUS 0x00000200
#define TDI_QUERY_FIND_NAME 0x00000300
typedef struct _TA_APPLETALK_ADDR {
LONG TAAddressCount;
struct _AddrAtalk {
USHORT AddressLength;
USHORT AddressType;
TDI_ADDRESS_APPLETALK Address[1];
} Address[1];
} TA_APPLETALK_ADDRESS, *PTA_APPLETALK_ADDRESS;
typedef struct _TA_ADDRESS_IP {
LONG TAAddressCount;
struct _AddrIp {
USHORT AddressLength;
USHORT AddressType;
TDI_ADDRESS_IP Address[1];
} Address[1];
} TA_ADDRESS_IP, *PTA_ADDRESS_IP;
typedef struct _TA_ADDRESS_IPX {
LONG TAAddressCount;
struct _AddrIpx {
USHORT AddressLength;
USHORT AddressType;
TDI_ADDRESS_IPX Address[1];
} Address[1];
} TA_IPX_ADDRESS, *PTA_IPX_ADDRESS;
typedef struct _TA_NETBIOS_ADDRESS {
LONG TAAddressCount;
struct _Addr{
USHORT AddressLength;
USHORT AddressType;
TDI_ADDRESS_NETBIOS Address[1];
} Address[1];
} TA_NETBIOS_ADDRESS, *PTA_NETBIOS_ADDRESS;
typedef struct _TA_ADDRESS_NS {
LONG TAAddressCount;
struct _AddrNs {
USHORT AddressLength;
USHORT AddressType;
TDI_ADDRESS_NS Address[1];
} Address[1];
} TA_NS_ADDRESS, *PTA_NS_ADDRESS;
typedef struct _TA_ADDRESS_VNS {
LONG TAAddressCount;
struct _AddrVns {
USHORT AddressLength;
USHORT AddressType;
TDI_ADDRESS_VNS Address[1];
} Address[1];
} TA_VNS_ADDRESS, *PTA_VNS_ADDRESS;
typedef struct _TA_ADDRESS_IP6 {
LONG TAAddressCount;
struct _AddrIp6 {
USHORT AddressLength;
USHORT AddressType;
TDI_ADDRESS_IP6 Address[1];
} Address [1];
} TA_IP6_ADDRESS, *PTA_IP6_ADDRESS;
typedef struct _TA_ADDRESS_NETBIOS_UNICODE_EX {
LONG TAAddressCount;
struct _AddrNetbiosWCharEx {
USHORT AddressLength;
USHORT AddressType;
TDI_ADDRESS_NETBIOS_UNICODE_EX Address[1];
} Address [1];
} TA_NETBIOS_UNICODE_EX_ADDRESS, *PTA_NETBIOS_UNICODE_EX_ADDRESS;
/* Structures used for TdiQueryInformation and TdiSetInformation */
typedef struct _TDI_ENDPOINT_INFO {
ULONG State;
ULONG Event;
ULONG TransmittedTsdus;
ULONG ReceivedTsdus;
ULONG TransmissionErrors;
ULONG ReceiveErrors;
ULONG MinimumLookaheadData;
ULONG MaximumLookaheadData;
ULONG PriorityLevel;
ULONG SecurityLevel;
ULONG SecurityCompartment;
} TDI_ENDPOINT_INFO, *PTDI_ENDPOINT_INFO;
typedef struct _TDI_CONNECTION_INFO {
ULONG State;
ULONG Event;
ULONG TransmittedTsdus;
ULONG ReceivedTsdus;
ULONG TransmissionErrors;
ULONG ReceiveErrors;
LARGE_INTEGER Throughput;
LARGE_INTEGER Delay;
ULONG SendBufferSize;
ULONG ReceiveBufferSize;
BOOLEAN Unreliable;
} TDI_CONNECTION_INFO, *PTDI_CONNECTION_INFO;
typedef struct _TDI_DATAGRAM_INFO {
ULONG MaximumDatagramBytes;
ULONG MaximumDatagramCount;
} TDI_DATAGRAM_INFO, *PTDI_DATAGRAM_INFO;
typedef struct _TDI_MAX_DATAGRAM_INFO {
ULONG MaxDatagramSize;
} TDI_MAX_DATAGRAM_INFO, *PTDI_MAX_DATAGRAM_INFO;
typedef struct _TDI_PROVIDER_INFO {
ULONG Version;
ULONG MaxSendSize;
ULONG MaxConnectionUserData;
ULONG MaxDatagramSize;
ULONG ServiceFlags;
ULONG MinimumLookaheadData;
ULONG MaximumLookaheadData;
ULONG NumberOfResources;
LARGE_INTEGER StartTime;
} TDI_PROVIDER_INFO, *PTDI_PROVIDER_INFO;
#define TDI_SERVICE_CONNECTION_MODE 0x00000001
#define TDI_SERVICE_ORDERLY_RELEASE 0x00000002
#define TDI_SERVICE_CONNECTIONLESS_MODE 0x00000004
#define TDI_SERVICE_ERROR_FREE_DELIVERY 0x00000008
#define TDI_SERVICE_SECURITY_LEVEL 0x00000010
#define TDI_SERVICE_BROADCAST_SUPPORTED 0x00000020
#define TDI_SERVICE_MULTICAST_SUPPORTED 0x00000040
#define TDI_SERVICE_DELAYED_ACCEPTANCE 0x00000080
#define TDI_SERVICE_EXPEDITED_DATA 0x00000100
#define TDI_SERVICE_INTERNAL_BUFFERING 0x00000200
#define TDI_SERVICE_ROUTE_DIRECTED 0x00000400
#define TDI_SERVICE_NO_ZERO_LENGTH 0x00000800
#define TDI_SERVICE_POINT_TO_POINT 0x00001000
#define TDI_SERVICE_MESSAGE_MODE 0x00002000
#define TDI_SERVICE_HALF_DUPLEX 0x00004000
#define TDI_SERVICE_DGRAM_CONNECTION 0x00008000
#define TDI_SERVICE_FORCE_ACCESS_CHECK 0x00010000
#define TDI_SERVICE_SEND_AND_DISCONNECT 0x00020000
#define TDI_SERVICE_DIRECT_ACCEPT 0x00040000
#define TDI_SERVICE_ACCEPT_LOCAL_ADDR 0x00080000
typedef struct _TDI_PROVIDER_RESOURCE_STATS {
ULONG ResourceId;
ULONG MaximumResourceUsed;
ULONG AverageResourceUsed;
ULONG ResourceExhausted;
} TDI_PROVIDER_RESOURCE_STATS, *PTDI_PROVIDER_RESOURCE_STATS;
typedef struct _TDI_PROVIDER_STATISTICS {
ULONG Version;
ULONG OpenConnections;
ULONG ConnectionsAfterNoRetry;
ULONG ConnectionsAfterRetry;
ULONG LocalDisconnects;
ULONG RemoteDisconnects;
ULONG LinkFailures;
ULONG AdapterFailures;
ULONG SessionTimeouts;
ULONG CancelledConnections;
ULONG RemoteResourceFailures;
ULONG LocalResourceFailures;
ULONG NotFoundFailures;
ULONG NoListenFailures;
ULONG DatagramsSent;
LARGE_INTEGER DatagramBytesSent;
ULONG DatagramsReceived;
LARGE_INTEGER DatagramBytesReceived;
ULONG PacketsSent;
ULONG PacketsReceived;
ULONG DataFramesSent;
LARGE_INTEGER DataFrameBytesSent;
ULONG DataFramesReceived;
LARGE_INTEGER DataFrameBytesReceived;
ULONG DataFramesResent;
LARGE_INTEGER DataFrameBytesResent;
ULONG DataFramesRejected;
LARGE_INTEGER DataFrameBytesRejected;
ULONG ResponseTimerExpirations;
ULONG AckTimerExpirations;
ULONG MaximumSendWindow;
ULONG AverageSendWindow;
ULONG PiggybackAckQueued;
ULONG PiggybackAckTimeouts;
LARGE_INTEGER WastedPacketSpace;
ULONG WastedSpacePackets;
ULONG NumberOfResources;
TDI_PROVIDER_RESOURCE_STATS ResourceStats[1];
} TDI_PROVIDER_STATISTICS, *PTDI_PROVIDER_STATISTICS;
#define TDI_EVENT_CONNECT 0
#define TDI_EVENT_DISCONNECT 1
#define TDI_EVENT_ERROR 2
#define TDI_EVENT_RECEIVE 3
#define TDI_EVENT_RECEIVE_DATAGRAM 4
#define TDI_EVENT_RECEIVE_EXPEDITED 5
#define TDI_EVENT_SEND_POSSIBLE 6
typedef struct _TDI_REQUEST_ASSOCIATE {
TDI_REQUEST Request;
HANDLE AddressHandle;
} TDI_REQUEST_ASSOCIATE_ADDRESS, *PTDI_REQUEST_ASSOCIATE_ADDRESS;
#define NDIS_PACKET_POOL_TAG_FOR_NWLNKIPX 'iPDN'
#define NDIS_PACKET_POOL_TAG_FOR_NWLNKSPX 'sPDN'
#define NDIS_PACKET_POOL_TAG_FOR_NWLNKNB 'nPDN'
#define NDIS_PACKET_POOL_TAG_FOR_TCPIP 'tPDN'
#define NDIS_PACKET_POOL_TAG_FOR_NBF 'bPDN'
#define NDIS_PACKET_POOL_TAG_FOR_APPLETALK 'aPDN'
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __TDI_H */

View File

@ -0,0 +1,115 @@
/*
* tdiinfo.h
*
* TDI set and query information interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __TDIINFO_H
#define __TDIINFO_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
typedef struct TDIEntityID {
ULONG tei_entity;
ULONG tei_instance;
} TDIEntityID;
#define MAX_TDI_ENTITIES 4096
#define INVALID_ENTITY_INSTANCE -1
#define GENERIC_ENTITY 0
#define ENTITY_LIST_ID 0
#define ENTITY_TYPE_ID 1
#define AT_ENTITY 0x280
#define CL_NL_ENTITY 0x301
#define CL_TL_ENTITY 0x401
#define CO_NL_ENTITY 0x300
#define CO_TL_ENTITY 0x400
#define ER_ENTITY 0x380
#define IF_ENTITY 0x200
#define AT_ARP 0x280
#define AT_NULL 0x282
#define CL_TL_NBF 0x401
#define CL_TL_UDP 0x403
#define CL_NL_IPX 0x301
#define CL_NL_IP 0x303
#define CO_TL_NBF 0x400
#define CO_TL_SPX 0x402
#define CO_TL_TCP 0x404
#define CO_TL_SPP 0x406
#define ER_ICMP 0x380
#define IF_GENERIC 0x200
#define IF_MIB 0x202
/* TDIObjectID.toi_class constants */
#define INFO_CLASS_GENERIC 0x100
#define INFO_CLASS_PROTOCOL 0x200
#define INFO_CLASS_IMPLEMENTATION 0x300
/* TDIObjectID.toi_type constants */
#define INFO_TYPE_PROVIDER 0x100
#define INFO_TYPE_ADDRESS_OBJECT 0x200
#define INFO_TYPE_CONNECTION 0x300
typedef struct _TDIObjectID {
TDIEntityID toi_entity;
ULONG toi_class;
ULONG toi_type;
ULONG toi_id;
} TDIObjectID;
#define CONTEXT_SIZE 16
typedef struct _TCP_REQUEST_QUERY_INFORMATION_EX {
TDIObjectID ID;
ULONG_PTR Context[CONTEXT_SIZE / sizeof(ULONG_PTR)];
} TCP_REQUEST_QUERY_INFORMATION_EX, *PTCP_REQUEST_QUERY_INFORMATION_EX;
#if defined(_WIN64)
typedef struct _TCP_REQUEST_QUERY_INFORMATION_EX32 {
TDIObjectID ID;
ULONG32 Context[CONTEXT_SIZE / sizeof(ULONG32)];
} TCP_REQUEST_QUERY_INFORMATION_EX32, *PTCP_REQUEST_QUERY_INFORMATION_EX32;
#endif /* _WIN64 */
typedef struct _TCP_REQUEST_SET_INFORMATION_EX {
TDIObjectID ID;
UINT BufferSize;
UCHAR Buffer[1];
} TCP_REQUEST_SET_INFORMATION_EX, *PTCP_REQUEST_SET_INFORMATION_EX;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __TDIINFO_H */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,87 @@
/*
* tdistat.h
*
* TDI status codes
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __TDISTAT_H
#define __TDISTAT_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#define TDI_SUCCESS STATUS_SUCCESS
#define TDI_NO_RESOURCES STATUS_INSUFFICIENT_RESOURCES
#define TDI_ADDR_IN_USE STATUS_ADDRESS_ALREADY_EXISTS
#define TDI_BAD_ADDR STATUS_INVALID_ADDRESS_COMPONENT
#define TDI_NO_FREE_ADDR STATUS_TOO_MANY_ADDRESSES
#define TDI_ADDR_INVALID STATUS_INVALID_ADDRESS
#define TDI_ADDR_DELETED STATUS_ADDRESS_CLOSED
#define TDI_BUFFER_OVERFLOW STATUS_BUFFER_OVERFLOW
#define TDI_BAD_EVENT_TYPE STATUS_INVALID_PARAMETER
#define TDI_BAD_OPTION STATUS_INVALID_PARAMETER
#define TDI_CONN_REFUSED STATUS_CONNECTION_REFUSED
#define TDI_INVALID_CONNECTION STATUS_CONNECTION_INVALID
#define TDI_ALREADY_ASSOCIATED STATUS_ADDRESS_ALREADY_ASSOCIATED
#define TDI_NOT_ASSOCIATED STATUS_ADDRESS_NOT_ASSOCIATED
#define TDI_CONNECTION_ACTIVE STATUS_CONNECTION_ACTIVE
#define TDI_CONNECTION_ABORTED STATUS_CONNECTION_ABORTED
#define TDI_CONNECTION_RESET STATUS_CONNECTION_RESET
#define TDI_TIMED_OUT STATUS_IO_TIMEOUT
#define TDI_GRACEFUL_DISC STATUS_GRACEFUL_DISCONNECT
#define TDI_NOT_ACCEPTED STATUS_DATA_NOT_ACCEPTED
#define TDI_MORE_PROCESSING STATUS_MORE_PROCESSING_REQUIRED
#define TDI_INVALID_STATE STATUS_INVALID_DEVICE_STATE
#define TDI_INVALID_PARAMETER STATUS_INVALID_PARAMETER
#define TDI_DEST_NET_UNREACH STATUS_NETWORK_UNREACHABLE
#define TDI_DEST_HOST_UNREACH STATUS_HOST_UNREACHABLE
#define TDI_DEST_UNREACHABLE TDI_DEST_HOST_UNREACH
#define TDI_DEST_PROT_UNREACH STATUS_PROTOCOL_UNREACHABLE
#define TDI_DEST_PORT_UNREACH STATUS_PORT_UNREACHABLE
#define TDI_INVALID_QUERY STATUS_INVALID_DEVICE_REQUEST
#define TDI_REQ_ABORTED STATUS_REQUEST_ABORTED
#define TDI_BUFFER_TOO_SMALL STATUS_BUFFER_TOO_SMALL
#define TDI_CANCELLED STATUS_CANCELLED
#define TDI_BUFFER_TOO_BIG STATUS_INVALID_BUFFER_SIZE
#define TDI_INVALID_REQUEST STATUS_INVALID_DEVICE_REQUEST
#define TDI_PENDING STATUS_PENDING
#define TDI_ITEM_NOT_FOUND STATUS_OBJECT_NAME_NOT_FOUND
#define TDI_STATUS_BAD_VERSION 0xC0010004L
#define TDI_STATUS_BAD_CHARACTERISTICS 0xC0010005L
#define TDI_OPTION_EOL 0
#define TDI_ADDRESS_OPTION_REUSE 1
#define TDI_ADDRESS_OPTION_DHCP 2
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __TDISTAT_H */

View File

@ -0,0 +1,121 @@
/*
* tvout.h
*
* Definitions for TV-out support
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __TVOUT_H
#define __TVOUT_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
/* VIDEOPARAMETERS.dwCommand constants */
#define VP_COMMAND_GET 0x00000001
#define VP_COMMAND_SET 0x00000002
/* VIDEOPARAMETERS.dwFlags constants */
#define VP_FLAGS_TV_MODE 0x00000001
#define VP_FLAGS_TV_STANDARD 0x00000002
#define VP_FLAGS_FLICKER 0x00000004
#define VP_FLAGS_OVERSCAN 0x00000008
#define VP_FLAGS_MAX_UNSCALED 0x00000010
#define VP_FLAGS_POSITION 0x00000020
#define VP_FLAGS_BRIGHTNESS 0x00000040
#define VP_FLAGS_CONTRAST 0x00000080
#define VP_FLAGS_COPYPROTECT 0x00000100
/* VIDEOPARAMETERS.dwMode constants */
#define VP_MODE_WIN_GRAPHICS 0x00000001
#define VP_MODE_TV_PLAYBACK 0x00000002
/* VIDEOPARAMETERS.dwTVStandard/dwAvailableTVStandard constants */
#define VP_TV_STANDARD_NTSC_M 0x00000001
#define VP_TV_STANDARD_NTSC_M_J 0x00000002
#define VP_TV_STANDARD_PAL_B 0x00000004
#define VP_TV_STANDARD_PAL_D 0x00000008
#define VP_TV_STANDARD_PAL_H 0x00000010
#define VP_TV_STANDARD_PAL_I 0x00000020
#define VP_TV_STANDARD_PAL_M 0x00000040
#define VP_TV_STANDARD_PAL_N 0x00000080
#define VP_TV_STANDARD_SECAM_B 0x00000100
#define VP_TV_STANDARD_SECAM_D 0x00000200
#define VP_TV_STANDARD_SECAM_G 0x00000400
#define VP_TV_STANDARD_SECAM_H 0x00000800
#define VP_TV_STANDARD_SECAM_K 0x00001000
#define VP_TV_STANDARD_SECAM_K1 0x00002000
#define VP_TV_STANDARD_SECAM_L 0x00004000
#define VP_TV_STANDARD_WIN_VGA 0x00008000
#define VP_TV_STANDARD_NTSC_433 0x00010000
#define VP_TV_STANDARD_PAL_G 0x00020000
#define VP_TV_STANDARD_PAL_60 0x00040000
#define VP_TV_STANDARD_SECAM_L1 0x00080000
/* VIDEOPARAMETERS.dwMode constants */
#define VP_CP_TYPE_APS_TRIGGER 0x00000001
#define VP_CP_TYPE_MACROVISION 0x00000002
/* VIDEOPARAMETERS.dwCPCommand constants */
#define VP_CP_CMD_ACTIVATE 0x00000001
#define VP_CP_CMD_DEACTIVATE 0x00000002
#define VP_CP_CMD_CHANGE 0x00000004
typedef struct _VIDEOPARAMETERS {
GUID Guid;
DWORD dwOffset;
DWORD dwCommand;
DWORD dwFlags;
DWORD dwMode;
DWORD dwTVStandard;
DWORD dwAvailableModes;
DWORD dwAvailableTVStandard;
DWORD dwFlickerFilter;
DWORD dwOverScanX;
DWORD dwOverScanY;
DWORD dwMaxUnscaledX;
DWORD dwMaxUnscaledY;
DWORD dwPositionX;
DWORD dwPositionY;
DWORD dwBrightness;
DWORD dwContrast;
DWORD dwCPType;
DWORD dwCPCommand;
DWORD dwCPStandard;
DWORD dwCPKey;
BYTE bCP_APSTriggerBits;
BYTE bOEMCopyProtection[256];
} VIDEOPARAMETERS, *PVIDEOPARAMETERS, FAR *LPVIDEOPARAMETERS;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __TVOUT_H */

View File

@ -0,0 +1,98 @@
/*
* upssvc.h
*
* UPS service interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __UPSSVC_H
#define __UPSSVC_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#if defined(_APCUPS_)
#define UPSAPI DECLSPEC_EXPORT
#else
#define UPSAPI DECLSPEC_IMPORT
#endif
#define UPS_ONLINE 1
#define UPS_ONBATTERY 2
#define UPS_LOWBATTERY 4
#define UPS_NOCOMM 8
#define UPS_CRITICAL 16
UPSAPI
VOID
DDKAPI
UPSCancelWait(VOID);
UPSAPI
DWORD
DDKAPI
UPSGetState(VOID);
#define UPS_INITUNKNOWNERROR 0
#define UPS_INITOK 1
#define UPS_INITNOSUCHDRIVER 2
#define UPS_INITBADINTERFACE 3
#define UPS_INITREGISTRYERROR 4
#define UPS_INITCOMMOPENERROR 5
#define UPS_INITCOMMSETUPERROR 6
UPSAPI
DWORD
DDKAPI
UPSInit(VOID);
UPSAPI
VOID
DDKAPI
UPSStop(VOID);
UPSAPI
VOID
DDKAPI
UPSTurnOff(
IN DWORD aTurnOffDelay);
UPSAPI
VOID
DDKAPI
UPSWaitForStateChange(
IN DWORD aCurrentState,
IN DWORD anInterval);
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __UPSSVC_H */

View File

@ -0,0 +1,473 @@
/*
* usb.h
*
* USB support.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __USB_H
#define __USB_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#ifdef __USBDI_H
#error usbdi.h cannot be included with usb.h
#endif
#include "ntddk.h"
#include "usb100.h"
typedef LONG USBD_STATUS;
typedef PVOID USBD_PIPE_HANDLE;
typedef PVOID USBD_CONFIGURATION_HANDLE;
typedef PVOID USBD_INTERFACE_HANDLE;
#define USBD_STATUS_SUCCESS ((USBD_STATUS)0x00000000L)
#define USBD_STATUS_PENDING ((USBD_STATUS)0x40000000L)
#define USBD_STATUS_CRC ((USBD_STATUS)0xC0000001L)
#define USBD_STATUS_BTSTUFF ((USBD_STATUS)0xC0000002L)
#define USBD_STATUS_DATA_TOGGLE_MISMATCH ((USBD_STATUS)0xC0000003L)
#define USBD_STATUS_STALL_PID ((USBD_STATUS)0xC0000004L)
#define USBD_STATUS_DEV_NOT_RESPONDING ((USBD_STATUS)0xC0000005L)
#define USBD_STATUS_PID_CHECK_FAILURE ((USBD_STATUS)0xC0000006L)
#define USBD_STATUS_UNEXPECTED_PID ((USBD_STATUS)0xC0000007L)
#define USBD_STATUS_DATA_OVERRUN ((USBD_STATUS)0xC0000008L)
#define USBD_STATUS_DATA_UNDERRUN ((USBD_STATUS)0xC0000009L)
#define USBD_STATUS_RESERVED1 ((USBD_STATUS)0xC000000AL)
#define USBD_STATUS_RESERVED2 ((USBD_STATUS)0xC000000BL)
#define USBD_STATUS_BUFFER_OVERRUN ((USBD_STATUS)0xC000000CL)
#define USBD_STATUS_BUFFER_UNDERRUN ((USBD_STATUS)0xC000000DL)
#define USBD_STATUS_NOT_ACCESSED ((USBD_STATUS)0xC000000FL)
#define USBD_STATUS_FIFO ((USBD_STATUS)0xC0000010L)
#define USBD_STATUS_XACT_ERROR ((USBD_STATUS)0xC0000011L)
#define USBD_STATUS_BABBLE_DETECTED ((USBD_STATUS)0xC0000012L)
#define USBD_STATUS_DATA_BUFFER_ERROR ((USBD_STATUS)0xC0000013L)
#define USBD_STATUS_ENDPOINT_HALTED ((USBD_STATUS)0xC0000030L)
#define USBD_STATUS_INVALID_URB_FUNCTION ((USBD_STATUS)0x80000200L)
#define USBD_STATUS_INVALID_PARAMETER ((USBD_STATUS)0x80000300L)
#define USBD_STATUS_ERROR_BUSY ((USBD_STATUS)0x80000400L)
#define USBD_STATUS_INVALID_PIPE_HANDLE ((USBD_STATUS)0x80000600L)
#define USBD_STATUS_NO_BANDWIDTH ((USBD_STATUS)0x80000700L)
#define USBD_STATUS_INTERNAL_HC_ERROR ((USBD_STATUS)0x80000800L)
#define USBD_STATUS_ERROR_SHORT_TRANSFER ((USBD_STATUS)0x80000900L)
#define USBD_STATUS_BAD_START_FRAME ((USBD_STATUS)0xC0000A00L)
#define USBD_STATUS_ISOCH_REQUEST_FAILED ((USBD_STATUS)0xC0000B00L)
#define USBD_STATUS_FRAME_CONTROL_OWNED ((USBD_STATUS)0xC0000C00L)
#define USBD_STATUS_FRAME_CONTROL_NOT_OWNED \
((USBD_STATUS)0xC0000D00L)
#define USBD_STATUS_NOT_SUPPORTED ((USBD_STATUS)0xC0000E00L)
#define USBD_STATUS_INAVLID_CONFIGURATION_DESCRIPTOR \
((USBD_STATUS)0xC0000F00L)
#define USBD_STATUS_INSUFFICIENT_RESOURCES \
((USBD_STATUS)0xC0001000L)
#define USBD_STATUS_SET_CONFIG_FAILED ((USBD_STATUS)0xC0002000L)
#define USBD_STATUS_BUFFER_TOO_SMALL ((USBD_STATUS)0xC0003000L)
#define USBD_STATUS_INTERFACE_NOT_FOUND ((USBD_STATUS)0xC0004000L)
#define USBD_STATUS_INAVLID_PIPE_FLAGS ((USBD_STATUS)0xC0005000L)
#define USBD_STATUS_TIMEOUT ((USBD_STATUS)0xC0006000L)
#define USBD_STATUS_DEVICE_GONE ((USBD_STATUS)0xC0007000L)
#define USBD_STATUS_STATUS_NOT_MAPPED ((USBD_STATUS)0xC0008000L)
#define USBD_STATUS_CANCELED ((USBD_STATUS)0xC0010000L)
#define USBD_STATUS_ISO_NOT_ACCESSED_BY_HW \
((USBD_STATUS)0xC0020000L)
#define USBD_STATUS_ISO_TD_ERROR ((USBD_STATUS)0xC0030000L)
#define USBD_STATUS_ISO_NA_LATE_USBPORT ((USBD_STATUS)0xC0040000L)
#define USBD_STATUS_ISO_NOT_ACCESSED_LATE ((USBD_STATUS)0xC0050000L)
#define USBD_SUCCESS(Status) ((USBD_STATUS)(Status) >= 0)
#define USBD_PENDING(Status) ((ULONG)(Status) >> 30 == 1)
#define USBD_ERROR(Status) ((USBD_STATUS)(Status) < 0)
/* URB TransferFlags constants */
#define USBD_TRANSFER_DIRECTION(x) ((x) & USBD_TRANSFER_DIRECTION_IN)
#define USBD_TRANSFER_DIRECTION_OUT 0
#define USBD_TRANSFER_DIRECTION_BIT 0
#define USBD_TRANSFER_DIRECTION_IN (1 << USBD_TRANSFER_DIRECTION_BIT)
#define USBD_SHORT_TRANSFER_OK_BIT 1
#define USBD_SHORT_TRANSFER_OK (1 << USBD_SHORT_TRANSFER_OK_BIT)
#define USBD_START_ISO_TRANSFER_ASAP_BIT 2
#define USBD_START_ISO_TRANSFER_ASAP (1 << USBD_START_ISO_TRANSFER_ASAP_BIT)
#define USBD_DEFAULT_PIPE_TRANSFER_BIT 3
#define USBD_DEFAULT_PIPE_TRANSFER (1 << USBD_DEFAULT_PIPE_TRANSFER_BIT)
#define USBD_TRANSFER_DIRECTION_FLAG(flags) ((flags) & USBD_TRANSFER_DIRECTION)
#define VALID_TRANSFER_FLAGS_MASK \
(USBD_SHORT_TRANSFER_OK | \
USBD_TRANSFER_DIRECTION | \
USBD_START_ISO_TRANSFER_ASAP | \
USBD_DEFAULT_PIPE_TRANSFER)
#define USB_DEFAULT_DEVICE_ADDRESS 0
#define USB_DEFAULT_ENDPOINT_ADDRESS 0
#define USB_DEFAULT_MAX_PACKET 64
#define USBD_ISO_START_FRAME_RANGE 1024
#define USBD_DEFAULT_MAXIMUM_TRANSFER_SIZE 0xFFFFFFFF
typedef enum _USB_CONTROLLER_FLAVOR {
USB_HcGeneric = 0,
OHCI_Generic = 100,
OHCI_Hydra,
OHCI_NEC,
UHCI_Generic = 200,
UHCI_Piix4,
UHCI_Piix3,
UHCI_Ich2_1,
UHCI_Ich2_2,
UHCI_Ich1,
UHCI_VIA = 250,
EHCI_Generic = 1000,
EHCI_NEC = 2000,
EHCI_Lucent = 3000
} USB_CONTROLLER_FLAVOR;
struct _URB_HEADER {
USHORT Length;
USHORT Function;
USBD_STATUS Status;
PVOID UsbdDeviceHandle;
ULONG UsbdFlags;
};
typedef struct _USBD_VERSION_INFORMATION {
ULONG USBDI_Version;
ULONG Supported_USB_Version;
} USBD_VERSION_INFORMATION, *PUSBD_VERSION_INFORMATION;
struct _URB_HCD_AREA {
PVOID Reserved8[8];
};
struct _URB_BULK_OR_INTERRUPT_TRANSFER {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
};
struct _URB_CONTROL_DESCRIPTOR_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG Reserved0;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
USHORT Reserved1;
UCHAR Index;
UCHAR DescriptorType;
USHORT LanguageId;
USHORT Reserved2;
};
struct _URB_CONTROL_FEATURE_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG Reserved2;
ULONG Reserved3;
PVOID Reserved4;
PMDL Reserved5;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
USHORT Reserved0;
USHORT FeatureSelector;
USHORT Index;
USHORT Reserved1;
};
struct _URB_CONTROL_GET_CONFIGURATION_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG Reserved0;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
UCHAR Reserved1[8];
};
struct _URB_CONTROL_GET_INTERFACE_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG Reserved0;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
UCHAR Reserved1[4];
USHORT Interface;
USHORT Reserved2;
};
struct _URB_CONTROL_GET_STATUS_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG Reserved0;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
UCHAR Reserved1[4];
USHORT Index;
USHORT Reserved2;
};
struct _URB_CONTROL_TRANSFER {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
UCHAR SetupPacket[8];
};
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
UCHAR RequestTypeReservedBits;
UCHAR Request;
USHORT Value;
USHORT Index;
USHORT Reserved1;
};
struct _URB_FRAME_LENGTH_CONTROL {
struct _URB_HEADER Hdr;
};
struct _URB_GET_CURRENT_FRAME_NUMBER {
struct _URB_HEADER Hdr;
ULONG FrameNumber;
};
struct _URB_GET_FRAME_LENGTH {
struct _URB_HEADER Hdr;
ULONG FrameLength;
ULONG FrameNumber;
};
typedef struct _USBD_ISO_PACKET_DESCRIPTOR {
ULONG Offset;
ULONG Length;
USBD_STATUS Status;
} USBD_ISO_PACKET_DESCRIPTOR, *PUSBD_ISO_PACKET_DESCRIPTOR;
struct _URB_ISOCH_TRANSFER {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
ULONG StartFrame;
ULONG NumberOfPackets;
ULONG ErrorCount;
USBD_ISO_PACKET_DESCRIPTOR IsoPacket[1];
};
typedef enum _USBD_PIPE_TYPE {
UsbdPipeTypeControl,
UsbdPipeTypeIsochronous,
UsbdPipeTypeBulk,
UsbdPipeTypeInterrupt
} USBD_PIPE_TYPE;
typedef struct _USBD_PIPE_INFORMATION {
USHORT MaximumPacketSize;
UCHAR EndpointAddress;
UCHAR Interval;
USBD_PIPE_TYPE PipeType;
USBD_PIPE_HANDLE PipeHandle;
ULONG MaximumTransferSize;
ULONG PipeFlags;
} USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION ;
#define USBD_PIPE_DIRECTION_IN(pipeInformation) \
((pipeInformation)->EndpointAddress & USB_ENDPOINT_DIRECTION_MASK)
typedef struct _USBD_INTERFACE_INFORMATION {
USHORT Length;
UCHAR InterfaceNumber;
UCHAR AlternateSetting;
UCHAR Class;
UCHAR SubClass;
UCHAR Protocol;
UCHAR Reserved;
USBD_INTERFACE_HANDLE InterfaceHandle;
ULONG NumberOfPipes;
USBD_PIPE_INFORMATION Pipes[1];
} USBD_INTERFACE_INFORMATION, *PUSBD_INTERFACE_INFORMATION;
struct _URB_SELECT_INTERFACE {
struct _URB_HEADER Hdr;
USBD_CONFIGURATION_HANDLE ConfigurationHandle;
USBD_INTERFACE_INFORMATION Interface;
};
struct _URB_SELECT_CONFIGURATION {
struct _URB_HEADER Hdr;
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor;
USBD_CONFIGURATION_HANDLE ConfigurationHandle;
USBD_INTERFACE_INFORMATION Interface;
};
struct _URB_PIPE_REQUEST {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG Reserved;
};
struct _URB_SET_FRAME_LENGTH {
struct _URB_HEADER Hdr;
LONG FrameLengthDelta;
};
typedef struct _URB {
union {
struct _URB_HEADER UrbHeader;
struct _URB_SELECT_INTERFACE UrbSelectInterface;
struct _URB_SELECT_CONFIGURATION UrbSelectConfiguration;
struct _URB_PIPE_REQUEST UrbPipeRequest;
struct _URB_FRAME_LENGTH_CONTROL UrbFrameLengthControl;
struct _URB_GET_FRAME_LENGTH UrbGetFrameLength;
struct _URB_SET_FRAME_LENGTH UrbSetFrameLength;
struct _URB_GET_CURRENT_FRAME_NUMBER UrbGetCurrentFrameNumber;
struct _URB_CONTROL_TRANSFER UrbControlTransfer;
struct _URB_BULK_OR_INTERRUPT_TRANSFER UrbBulkOrInterruptTransfer;
struct _URB_ISOCH_TRANSFER UrbIsochronousTransfer;
struct _URB_CONTROL_DESCRIPTOR_REQUEST UrbControlDescriptorRequest;
struct _URB_CONTROL_GET_STATUS_REQUEST UrbControlGetStatusRequest;
struct _URB_CONTROL_FEATURE_REQUEST UrbControlFeatureRequest;
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST UrbControlVendorClassRequest;
struct _URB_CONTROL_GET_INTERFACE_REQUEST UrbControlGetInterfaceRequest;
struct _URB_CONTROL_GET_CONFIGURATION_REQUEST UrbControlGetConfigurationRequest;
};
} URB, *PURB;
#define URB_FROM_IRP(Irp) ((IoGetCurrentIrpStackLocation(Irp))->Parameters.Others.Argument1)
#define URB_FUNCTION_SELECT_CONFIGURATION 0x0000
#define URB_FUNCTION_SELECT_INTERFACE 0x0001
#define URB_FUNCTION_ABORT_PIPE 0x0002
#define URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL 0x0003
#define URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL 0x0004
#define URB_FUNCTION_GET_FRAME_LENGTH 0x0005
#define URB_FUNCTION_SET_FRAME_LENGTH 0x0006
#define URB_FUNCTION_GET_CURRENT_FRAME_NUMBER 0x0007
#define URB_FUNCTION_CONTROL_TRANSFER 0x0008
#define URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER 0x0009
#define URB_FUNCTION_ISOCH_TRANSFER 0x000A
#define URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE 0x000B
#define URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE 0x000C
#define URB_FUNCTION_SET_FEATURE_TO_DEVICE 0x000D
#define URB_FUNCTION_SET_FEATURE_TO_INTERFACE 0x000E
#define URB_FUNCTION_SET_FEATURE_TO_ENDPOINT 0x000F
#define URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE 0x0010
#define URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE 0x0011
#define URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT 0x0012
#define URB_FUNCTION_GET_STATUS_FROM_DEVICE 0x0013
#define URB_FUNCTION_GET_STATUS_FROM_INTERFACE 0x0014
#define URB_FUNCTION_GET_STATUS_FROM_ENDPOINT 0x0015
#define URB_FUNCTION_RESERVED_0X0016 0x0016
#define URB_FUNCTION_VENDOR_DEVICE 0x0017
#define URB_FUNCTION_VENDOR_INTERFACE 0x0018
#define URB_FUNCTION_VENDOR_ENDPOINT 0x0019
#define URB_FUNCTION_CLASS_DEVICE 0x001A
#define URB_FUNCTION_CLASS_INTERFACE 0x001B
#define URB_FUNCTION_CLASS_ENDPOINT 0x001C
#define URB_FUNCTION_RESERVE_0X001D 0x001D
#define URB_FUNCTION_SYNC_RESET_PIPE_AND_CLEAR_STALL 0x001E
#define URB_FUNCTION_CLASS_OTHER 0x001F
#define URB_FUNCTION_VENDOR_OTHER 0x0020
#define URB_FUNCTION_GET_STATUS_FROM_OTHER 0x0021
#define URB_FUNCTION_CLEAR_FEATURE_TO_OTHER 0x0022
#define URB_FUNCTION_SET_FEATURE_TO_OTHER 0x0023
#define URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT 0x0024
#define URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT 0x0025
#define URB_FUNCTION_GET_CONFIGURATION 0x0026
#define URB_FUNCTION_GET_INTERFACE 0x0027
#define URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE 0x0028
#define URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE 0x0029
#define URB_FUNCTION_GET_MS_FEATURE_DESCRIPTOR 0x002A
#define URB_FUNCTION_RESERVE_0X002B 0x002B
#define URB_FUNCTION_RESERVE_0X002C 0x002C
#define URB_FUNCTION_RESERVE_0X002D 0x002D
#define URB_FUNCTION_RESERVE_0X002E 0x002E
#define URB_FUNCTION_RESERVE_0X002F 0x002F
#define URB_FUNCTION_SYNC_RESET_PIPE 0x0030
#define URB_FUNCTION_SYNC_CLEAR_STALL 0x0031
#define USBD_PF_CHANGE_MAX_PACKET 0x00000001
#define USBD_PF_SHORT_PACKET_OPT 0x00000002
#define USBD_PF_ENABLE_RT_THREAD_ACCESS 0x00000004
#define USBD_PF_MAP_ADD_TRANSFERS 0x00000008
#define USBD_PF_VALID_MASK (USBD_PF_CHANGE_MAX_PACKET | \
USBD_PF_SHORT_PACKET_OPT | \
USBD_PF_ENABLE_RT_THREAD_ACCESS | \
USBD_PF_MAP_ADD_TRANSFERS)
#define OS_STRING_DESCRIPTOR_INDEX 0xEE
#define MS_GENRE_DESCRIPTOR_INDEX 0x0001
#define MS_POWER_DESCRIPTOR_INDEX 0x0002
#define MS_OS_STRING_SIGNATURE L"MSFT100"
typedef struct _OS_STRING {
UCHAR bLength;
UCHAR bDescriptorType;
WCHAR MicrosoftString[7];
UCHAR bVendorCode;
UCHAR bPad;
} OS_STRING, *POS_STRING;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __USB_H */

View File

@ -0,0 +1,233 @@
/*
* usb100.h
*
* USB 1.0 support
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __USB100_H
#define __USB100_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define MAXIMUM_USB_STRING_LENGTH 255
#define USB_DEVICE_CLASS_RESERVED 0x00
#define USB_DEVICE_CLASS_AUDIO 0x01
#define USB_DEVICE_CLASS_COMMUNICATIONS 0x02
#define USB_DEVICE_CLASS_HUMAN_INTERFACE 0x03
#define USB_DEVICE_CLASS_MONITOR 0x04
#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05
#define USB_DEVICE_CLASS_POWER 0x06
#define USB_DEVICE_CLASS_PRINTER 0x07
#define USB_DEVICE_CLASS_STORAGE 0x08
#define USB_DEVICE_CLASS_HUB 0x09
#define USB_DEVICE_CLASS_VENDOR_SPECIFIC 0xFF
#define USB_RESERVED_DESCRIPTOR_TYPE 0x06
#define USB_CONFIG_POWER_DESCRIPTOR_TYPE 0x07
#define USB_INTERFACE_POWER_DESCRIPTOR_TYPE 0x08
#define USB_REQUEST_GET_STATUS 0x00
#define USB_REQUEST_CLEAR_FEATURE 0x01
#define USB_REQUEST_SET_FEATURE 0x03
#define USB_REQUEST_SET_ADDRESS 0x05
#define USB_REQUEST_GET_DESCRIPTOR 0x06
#define USB_REQUEST_SET_DESCRIPTOR 0x07
#define USB_REQUEST_GET_CONFIGURATION 0x08
#define USB_REQUEST_SET_CONFIGURATION 0x09
#define USB_REQUEST_GET_INTERFACE 0x0A
#define USB_REQUEST_SET_INTERFACE 0x0B
#define USB_REQUEST_SYNC_FRAME 0x0C
#define USB_GETSTATUS_SELF_POWERED 0x01
#define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED 0x02
#define BMREQUEST_HOST_TO_DEVICE 0
#define BMREQUEST_DEVICE_TO_HOST 1
#define BMREQUEST_STANDARD 0
#define BMREQUEST_CLASS 1
#define BMREQUEST_VENDOR 2
#define BMREQUEST_TO_DEVICE 0
#define BMREQUEST_TO_INTERFACE 1
#define BMREQUEST_TO_ENDPOINT 2
#define BMREQUEST_TO_OTHER 3
/* USB_COMMON_DESCRIPTOR.bDescriptorType constants */
#define USB_DEVICE_DESCRIPTOR_TYPE 0x01
#define USB_CONFIGURATION_DESCRIPTOR_TYPE 0x02
#define USB_STRING_DESCRIPTOR_TYPE 0x03
#define USB_INTERFACE_DESCRIPTOR_TYPE 0x04
#define USB_ENDPOINT_DESCRIPTOR_TYPE 0x05
typedef struct _USB_COMMON_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
} USB_COMMON_DESCRIPTOR, *PUSB_COMMON_DESCRIPTOR;
#define USB_DESCRIPTOR_MAKE_TYPE_AND_INDEX(d, i) ((USHORT)((USHORT)d << 8 | i))
/* USB_CONFIGURATION_DESCRIPTOR.bmAttributes constants */
#define USB_CONFIG_POWERED_MASK 0xc0
#define USB_CONFIG_BUS_POWERED 0x80
#define USB_CONFIG_SELF_POWERED 0x40
#define USB_CONFIG_REMOTE_WAKEUP 0x20
typedef struct _USB_CONFIGURATION_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
USHORT wTotalLength;
UCHAR bNumInterfaces;
UCHAR iConfiguration;
UCHAR bmAttributes;
UCHAR MaxPower;
} USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR;
typedef struct _USB_DEVICE_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
USHORT bcdUSB;
UCHAR bDeviceClass;
UCHAR bDeviceSubClass;
UCHAR bDeviceProtocol;
UCHAR bMaxPacketSize0;
USHORT idVendor;
USHORT idProduct;
USHORT bcdDevice;
UCHAR iManufacturer;
UCHAR iProduct;
UCHAR iSerialNumber;
UCHAR bNumConfigurations;
} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;
#define USB_ENDPOINT_DIRECTION_MASK 0x80
#define USB_ENDPOINT_DIRECTION_OUT(x) (!((x) & USB_ENDPOINT_DIRECTION_MASK))
#define USB_ENDPOINT_DIRECTION_IN(x) ((x) & USB_ENDPOINT_DIRECTION_MASK)
/* USB_ENDPOINT_DESCRIPTOR.bmAttributes constants */
#define USB_ENDPOINT_TYPE_MASK 0x03
#define USB_ENDPOINT_TYPE_CONTROL 0x00
#define USB_ENDPOINT_TYPE_ISOCHRONOUS 0x01
#define USB_ENDPOINT_TYPE_BULK 0x02
#define USB_ENDPOINT_TYPE_INTERRUPT 0x03
typedef struct _USB_ENDPOINT_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bEndpointAddress;
UCHAR bmAttributes;
USHORT wMaxPacketSize;
UCHAR bInterval;
} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;
#define USB_FEATURE_ENDPOINT_STALL 0x0000
#define USB_FEATURE_REMOTE_WAKEUP 0x0001
typedef struct _USB_INTERFACE_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bInterfaceNumber;
UCHAR bAlternateSetting;
UCHAR bNumEndpoints;
UCHAR bInterfaceClass;
UCHAR bInterfaceSubClass;
UCHAR bInterfaceProtocol;
UCHAR iInterface;
} USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR;
typedef struct _USB_STRING_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
WCHAR bString[1];
} USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR;
typedef struct _USB_HUB_DESCRIPTOR {
UCHAR bDescriptorLength;
UCHAR bDescriptorType;
UCHAR bNumberOfPorts;
USHORT wHubCharacteristics;
UCHAR bPowerOnToPowerGood;
UCHAR bHubControlCurrent;
UCHAR bRemoveAndPowerMask[64];
} USB_HUB_DESCRIPTOR, *PUSB_HUB_DESCRIPTOR;
#define USB_SUPPORT_D0_COMMAND 0x01
#define USB_SUPPORT_D1_COMMAND 0x02
#define USB_SUPPORT_D2_COMMAND 0x04
#define USB_SUPPORT_D3_COMMAND 0x08
#define USB_SUPPORT_D1_WAKEUP 0x10
#define USB_SUPPORT_D2_WAKEUP 0x20
typedef struct _USB_CONFIGURATION_POWER_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR SelfPowerConsumedD0[3];
UCHAR bPowerSummaryId;
UCHAR bBusPowerSavingD1;
UCHAR bSelfPowerSavingD1;
UCHAR bBusPowerSavingD2;
UCHAR bSelfPowerSavingD2;
UCHAR bBusPowerSavingD3;
UCHAR bSelfPowerSavingD3;
USHORT TransitionTimeFromD1;
USHORT TransitionTimeFromD2;
USHORT TransitionTimeFromD3;
} USB_CONFIGURATION_POWER_DESCRIPTOR, *PUSB_CONFIGURATION_POWER_DESCRIPTOR;
#define USB_FEATURE_INTERFACE_POWER_D0 0x0002
#define USB_FEATURE_INTERFACE_POWER_D1 0x0003
#define USB_FEATURE_INTERFACE_POWER_D2 0x0004
#define USB_FEATURE_INTERFACE_POWER_D3 0x0005
typedef struct _USB_INTERFACE_POWER_DESCRIPTOR {
UCHAR bLength;
UCHAR bDescriptorType;
UCHAR bmCapabilitiesFlags;
UCHAR bBusPowerSavingD1;
UCHAR bSelfPowerSavingD1;
UCHAR bBusPowerSavingD2;
UCHAR bSelfPowerSavingD2;
UCHAR bBusPowerSavingD3;
UCHAR bSelfPowerSavingD3;
USHORT TransitionTimeFromD1;
USHORT TransitionTimeFromD2;
USHORT TransitionTimeFromD3;
} USB_INTERFACE_POWER_DESCRIPTOR, *PUSB_INTERFACE_POWER_DESCRIPTOR;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __USB100_H */

View File

@ -0,0 +1,401 @@
/*
* usbcamdi.h
*
* USB Camera driver interface.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __USBCAMDI_H
#define __USBCAMDI_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#if !defined(__USB_H) && !defined(__USBDI_H)
#error include usb.h or usbdi.h before usbcamdi.h
#endif
#include "ntddk.h"
#if defined(_BATTERYCLASS_)
#define USBCAMAPI DECLSPEC_EXPORT
#else
#define USBCAMAPI DECLSPEC_IMPORT
#endif
/* FIXME: Unknown definition */
typedef PVOID PHW_STREAM_REQUEST_BLOCK;
DEFINE_GUID(GUID_USBCAMD_INTERFACE,
0x2bcb75c0, 0xb27f, 0x11d1, 0xba, 0x41, 0x0, 0xa0, 0xc9, 0xd, 0x2b, 0x5);
#define USBCAMD_PROCESSPACKETEX_DropFrame 0x0002
#define USBCAMD_PROCESSPACKETEX_NextFrameIsStill 0x0004
#define USBCAMD_PROCESSPACKETEX_CurrentFrameIsStill 0x0008
#define USBCAMD_DATA_PIPE 0x0001
#define USBCAMD_MULTIPLEX_PIPE 0x0002
#define USBCAMD_SYNC_PIPE 0x0004
#define USBCAMD_DONT_CARE_PIPE 0x0008
#define USBCAMD_VIDEO_STREAM 0x1
#define USBCAMD_STILL_STREAM 0x2
#define USBCAMD_VIDEO_STILL_STREAM (USBCAMD_VIDEO_STREAM | USBCAMD_STILL_STREAM)
#define USBCAMD_STOP_STREAM 0x00000001
#define USBCAMD_START_STREAM 0x00000000
typedef struct _pipe_config_descriptor {
CHAR StreamAssociation;
UCHAR PipeConfigFlags;
} USBCAMD_Pipe_Config_Descriptor, *PUSBCAMD_Pipe_Config_Descriptor;
typedef enum {
USBCAMD_CamControlFlag_NoVideoRawProcessing = 1,
USBCAMD_CamControlFlag_NoStillRawProcessing = 2,
USBCAMD_CamControlFlag_AssociatedFormat = 4,
USBCAMD_CamControlFlag_EnableDeviceEvents = 8,
} USBCAMD_CamControlFlags;
typedef NTSTATUS DDKAPI
(*PCAM_ALLOCATE_BW_ROUTINE)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext,
PULONG RawFrameLength,
PVOID Format);
typedef NTSTATUS DDKAPI
(*PCAM_ALLOCATE_BW_ROUTINE_EX)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext,
PULONG RawFrameLength,
PVOID Format,
ULONG StreamNumber);
typedef NTSTATUS DDKAPI
(*PCAM_CONFIGURE_ROUTINE)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext,
PUSBD_INTERFACE_INFORMATION Interface,
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
PLONG DataPipeIndex,
PLONG SyncPipeIndex);
typedef NTSTATUS DDKAPI
(*PCAM_CONFIGURE_ROUTINE_EX)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext,
PUSBD_INTERFACE_INFORMATION Interface,
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
ULONG PipeConfigListSize,
PUSBCAMD_Pipe_Config_Descriptor PipeConfig,
PUSB_DEVICE_DESCRIPTOR DeviceDescriptor);
typedef NTSTATUS DDKAPI
(*PCAM_FREE_BW_ROUTINE)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext);
typedef NTSTATUS DDKAPI
(*PCAM_FREE_BW_ROUTINE_EX)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext,
ULONG StreamNumber);
typedef NTSTATUS DDKAPI
(*PCAM_INITIALIZE_ROUTINE)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext);
typedef VOID DDKAPI
(*PCAM_NEW_FRAME_ROUTINE)(
PVOID DeviceContext,
PVOID FrameContext);
typedef VOID DDKAPI
(*PCAM_NEW_FRAME_ROUTINE_EX)(
PVOID DeviceContext,
PVOID FrameContext,
ULONG StreamNumber,
PULONG FrameLength);
typedef NTSTATUS DDKAPI
(*PCAM_PROCESS_RAW_FRAME_ROUTINE)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext,
PVOID FrameContext,
PVOID FrameBuffer,
ULONG FrameLength,
PVOID RawFrameBuffer,
ULONG RawFrameLength,
ULONG NumberOfPackets,
PULONG BytesReturned);
typedef NTSTATUS DDKAPI
(*PCAM_PROCESS_RAW_FRAME_ROUTINE_EX)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext,
PVOID FrameContext,
PVOID FrameBuffer,
ULONG FrameLength,
PVOID RawFrameBuffer,
ULONG RawFrameLength,
ULONG NumberOfPackets,
PULONG BytesReturned,
ULONG ActualRawFrameLength,
ULONG StreamNumber);
typedef ULONG DDKAPI
(*PCAM_PROCESS_PACKET_ROUTINE)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext,
PVOID CurrentFrameContext,
PUSBD_ISO_PACKET_DESCRIPTOR SyncPacket,
PVOID SyncBuffer,
PUSBD_ISO_PACKET_DESCRIPTOR DataPacket,
PVOID DataBuffer,
PBOOLEAN FrameComplete,
PBOOLEAN NextFrameIsStill);
typedef ULONG DDKAPI
(*PCAM_PROCESS_PACKET_ROUTINE_EX)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext,
PVOID CurrentFrameContext,
PUSBD_ISO_PACKET_DESCRIPTOR SyncPacket,
PVOID SyncBuffer,
PUSBD_ISO_PACKET_DESCRIPTOR DataPacket,
PVOID DataBuffer,
PBOOLEAN FrameComplete,
PULONG PacketFlag,
PULONG ValidDataOffset);
typedef NTSTATUS DDKAPI
(*PCAM_STATE_ROUTINE)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext);
typedef NTSTATUS DDKAPI
(*PCAM_START_CAPTURE_ROUTINE)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext);
typedef NTSTATUS DDKAPI
(*PCAM_START_CAPTURE_ROUTINE_EX)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext,
ULONG StreamNumber);
typedef NTSTATUS DDKAPI
(*PCAM_STOP_CAPTURE_ROUTINE)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext);
typedef NTSTATUS DDKAPI
(*PCAM_STOP_CAPTURE_ROUTINE_EX)(
PDEVICE_OBJECT BusDeviceObject,
PVOID DeviceContext,
ULONG StreamNumber);
typedef struct _USBCAMD_DEVICE_DATA {
ULONG Sig;
PCAM_INITIALIZE_ROUTINE CamInitialize;
PCAM_INITIALIZE_ROUTINE CamUnInitialize;
PCAM_PROCESS_PACKET_ROUTINE CamProcessUSBPacket;
PCAM_NEW_FRAME_ROUTINE CamNewVideoFrame;
PCAM_PROCESS_RAW_FRAME_ROUTINE CamProcessRawVideoFrame;
PCAM_START_CAPTURE_ROUTINE CamStartCapture;
PCAM_STOP_CAPTURE_ROUTINE CamStopCapture;
PCAM_CONFIGURE_ROUTINE CamConfigure;
PCAM_STATE_ROUTINE CamSaveState;
PCAM_STATE_ROUTINE CamRestoreState;
PCAM_ALLOCATE_BW_ROUTINE CamAllocateBandwidth;
PCAM_FREE_BW_ROUTINE CamFreeBandwidth;
} USBCAMD_DEVICE_DATA, *PUSBCAMD_DEVICE_DATA;
typedef struct _USBCAMD_DEVICE_DATA2 {
ULONG Sig;
PCAM_INITIALIZE_ROUTINE CamInitialize;
PCAM_INITIALIZE_ROUTINE CamUnInitialize;
PCAM_PROCESS_PACKET_ROUTINE_EX CamProcessUSBPacketEx;
PCAM_NEW_FRAME_ROUTINE_EX CamNewVideoFrameEx;
PCAM_PROCESS_RAW_FRAME_ROUTINE_EX CamProcessRawVideoFrameEx;
PCAM_START_CAPTURE_ROUTINE_EX CamStartCaptureEx;
PCAM_STOP_CAPTURE_ROUTINE_EX CamStopCaptureEx;
PCAM_CONFIGURE_ROUTINE_EX CamConfigureEx;
PCAM_STATE_ROUTINE CamSaveState;
PCAM_STATE_ROUTINE CamRestoreState;
PCAM_ALLOCATE_BW_ROUTINE_EX CamAllocateBandwidthEx;
PCAM_FREE_BW_ROUTINE_EX CamFreeBandwidthEx;
} USBCAMD_DEVICE_DATA2, *PUSBCAMD_DEVICE_DATA2;
USBCAMAPI
ULONG
DDKAPI
USBCAMD_InitializeNewInterface(
IN PVOID DeviceContext,
IN PVOID DeviceData,
IN ULONG Version,
IN ULONG CamControlFlag);
typedef VOID DDKAPI
(*PCOMMAND_COMPLETE_FUNCTION)(
PVOID DeviceContext,
PVOID CommandContext,
NTSTATUS NtStatus);
typedef NTSTATUS DDKAPI
(*PFNUSBCAMD_BulkReadWrite)(
IN PVOID DeviceContext,
IN USHORT PipeIndex,
IN PVOID Buffer,
IN ULONG BufferLength,
IN PCOMMAND_COMPLETE_FUNCTION CommandComplete,
IN PVOID CommandContext);
typedef NTSTATUS DDKAPI
(*PFNUSBCAMD_SetIsoPipeState)(
IN PVOID DeviceContext,
IN ULONG PipeStateFlags);
typedef NTSTATUS DDKAPI
(*PFNUSBCAMD_CancelBulkReadWrite)(
IN PVOID DeviceContext,
IN ULONG PipeIndex);
typedef NTSTATUS DDKAPI
(*PFNUSBCAMD_SetVideoFormat)(
IN PVOID DeviceContext,
IN PHW_STREAM_REQUEST_BLOCK pSrb);
typedef NTSTATUS DDKAPI
(*PFNUSBCAMD_WaitOnDeviceEvent)(
IN PVOID DeviceContext,
IN ULONG PipeIndex,
IN PVOID Buffer,
IN ULONG BufferLength,
IN PCOMMAND_COMPLETE_FUNCTION EventComplete,
IN PVOID EventContext,
IN BOOLEAN LoopBack);
USBCAMAPI
PVOID
DDKAPI
USBCAMD_AdapterReceivePacket(
IN PHW_STREAM_REQUEST_BLOCK Srb,
IN PUSBCAMD_DEVICE_DATA DeviceData,
IN PDEVICE_OBJECT *DeviceObject,
IN BOOLEAN NeedsCompletion);
USBCAMAPI
NTSTATUS
DDKAPI
USBCAMD_ControlVendorCommand(
IN PVOID DeviceContext,
IN UCHAR Request,
IN USHORT Value,
IN USHORT Index,
IN PVOID Buffer,
IN OUT PULONG BufferLength,
IN BOOLEAN GetData,
IN PCOMMAND_COMPLETE_FUNCTION CommandComplete,
IN PVOID CommandContext);
typedef VOID DDKAPI
(*PADAPTER_RECEIVE_PACKET_ROUTINE)(
IN PHW_STREAM_REQUEST_BLOCK Srb);
USBCAMAPI
ULONG
DDKAPI
USBCAMD_DriverEntry(
PVOID Context1,
PVOID Context2,
ULONG DeviceContextSize,
ULONG FrameContextSize,
PADAPTER_RECEIVE_PACKET_ROUTINE ReceivePacket);
USBCAMAPI
NTSTATUS
DDKAPI
USBCAMD_GetRegistryKeyValue(
IN HANDLE Handle,
IN PWCHAR KeyNameString,
IN ULONG KeyNameStringLength,
IN PVOID Data,
IN ULONG DataLength);
USBCAMAPI
NTSTATUS
DDKAPI
USBCAMD_SelectAlternateInterface(
IN PVOID DeviceContext,
IN OUT PUSBD_INTERFACE_INFORMATION RequestInterface);
#define USBCAMD_VERSION_200 0x200
typedef struct _USBCAMD_INTERFACE {
INTERFACE Interface;
PFNUSBCAMD_WaitOnDeviceEvent USBCAMD_WaitOnDeviceEvent;
PFNUSBCAMD_BulkReadWrite USBCAMD_BulkReadWrite;
PFNUSBCAMD_SetVideoFormat USBCAMD_SetVideoFormat;
PFNUSBCAMD_SetIsoPipeState USBCAMD_SetIsoPipeState;
PFNUSBCAMD_CancelBulkReadWrite USBCAMD_CancelBulkReadWrite;
} USBCAMD_INTERFACE, *PUSBCAMD_INTERFACE;
typedef VOID DDKAPI
(*PSTREAM_RECEIVE_PACKET)(
IN PVOID Srb,
IN PVOID DeviceContext,
IN PBOOLEAN Completed);
#if defined(DEBUG_LOG)
USBCAMAPI
VOID
DDKAPI
USBCAMD_Debug_LogEntry(
IN CHAR *Name,
IN ULONG Info1,
IN ULONG Info2,
IN ULONG Info3);
#define ILOGENTRY(sig, info1, info2, info3) \
USBCAMD_Debug_LogEntry(sig, (ULONG)info1, (ULONG)info2, (ULONG)info3)
#else
#define ILOGENTRY(sig, info1, info2, info3)
#endif /* DEBUG_LOG */
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __USBCAMDI_H */

View File

@ -0,0 +1,410 @@
/*
* usbdi.h
*
* USBD and USB device driver definitions
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __USBDI_H
#define __USBDI_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#ifdef __USB_H
#error usb.h cannot be included with usbdi.h
#endif
#include "ntddk.h"
#include "usbioctl.h"
#define USBDI_VERSION 0x300
#define USB_DEFAULT_DEVICE_ADDRESS 0
#define USB_DEFAULT_ENDPOINT_ADDRESS 0
#define USB_DEFAULT_MAX_PACKET 64
#define URB_FROM_IRP(Irp) ((IoGetCurrentIrpStackLocation(Irp))->Parameters.Others.Argument1)
#define URB_FUNCTION_SELECT_CONFIGURATION 0x0000
#define URB_FUNCTION_SELECT_INTERFACE 0x0001
#define URB_FUNCTION_ABORT_PIPE 0x0002
#define URB_FUNCTION_TAKE_FRAME_LENGTH_CONTROL 0x0003
#define URB_FUNCTION_RELEASE_FRAME_LENGTH_CONTROL 0x0004
#define URB_FUNCTION_GET_FRAME_LENGTH 0x0005
#define URB_FUNCTION_SET_FRAME_LENGTH 0x0006
#define URB_FUNCTION_GET_CURRENT_FRAME_NUMBER 0x0007
#define URB_FUNCTION_CONTROL_TRANSFER 0x0008
#define URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER 0x0009
#define URB_FUNCTION_ISOCH_TRANSFER 0x000A
#define URB_FUNCTION_RESET_PIPE 0x001E
#define URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE 0x000B
#define URB_FUNCTION_GET_DESCRIPTOR_FROM_ENDPOINT 0x0024
#define URB_FUNCTION_GET_DESCRIPTOR_FROM_INTERFACE 0x0028
#define URB_FUNCTION_SET_DESCRIPTOR_TO_DEVICE 0x000C
#define URB_FUNCTION_SET_DESCRIPTOR_TO_ENDPOINT 0x0025
#define URB_FUNCTION_SET_DESCRIPTOR_TO_INTERFACE 0x0029
#define URB_FUNCTION_SET_FEATURE_TO_DEVICE 0x000D
#define URB_FUNCTION_SET_FEATURE_TO_INTERFACE 0x000E
#define URB_FUNCTION_SET_FEATURE_TO_ENDPOINT 0x000F
#define URB_FUNCTION_SET_FEATURE_TO_OTHER 0x0023
#define URB_FUNCTION_CLEAR_FEATURE_TO_DEVICE 0x0010
#define URB_FUNCTION_CLEAR_FEATURE_TO_INTERFACE 0x0011
#define URB_FUNCTION_CLEAR_FEATURE_TO_ENDPOINT 0x0012
#define URB_FUNCTION_CLEAR_FEATURE_TO_OTHER 0x0022
#define URB_FUNCTION_GET_STATUS_FROM_DEVICE 0x0013
#define URB_FUNCTION_GET_STATUS_FROM_INTERFACE 0x0014
#define URB_FUNCTION_GET_STATUS_FROM_ENDPOINT 0x0015
#define URB_FUNCTION_GET_STATUS_FROM_OTHER 0x0021
#define URB_FUNCTION_RESERVED0 0x0016
#define URB_FUNCTION_VENDOR_DEVICE 0x0017
#define URB_FUNCTION_VENDOR_INTERFACE 0x0018
#define URB_FUNCTION_VENDOR_ENDPOINT 0x0019
#define URB_FUNCTION_VENDOR_OTHER 0x0020
#define URB_FUNCTION_CLASS_DEVICE 0x001A
#define URB_FUNCTION_CLASS_INTERFACE 0x001B
#define URB_FUNCTION_CLASS_ENDPOINT 0x001C
#define URB_FUNCTION_CLASS_OTHER 0x001F
#define URB_FUNCTION_RESERVED 0x001D
#define URB_FUNCTION_GET_CONFIGURATION 0x0026
#define URB_FUNCTION_GET_INTERFACE 0x0027
#define URB_FUNCTION_LAST 0x0029
typedef LONG USBD_STATUS;
typedef PVOID USBD_PIPE_HANDLE;
typedef PVOID USBD_CONFIGURATION_HANDLE;
typedef PVOID USBD_INTERFACE_HANDLE;
#define USBD_ERROR(Status) ((USBD_STATUS)(Status) < 0)
#define USBD_HALTED(Status) ((ULONG)(Status) >> 30 == 3)
#define USBD_PENDING(Status) ((ULONG)(Status) >> 30 == 1)
#define USBD_STATUS(Status) ((ULONG)(Status) & 0x0FFFFFFFL)
#define USBD_SUCCESS(Status) ((USBD_STATUS)(Status) >= 0)
#define USBD_STATUS_SUCCESS ((USBD_STATUS)0x00000000L)
#define USBD_STATUS_PENDING ((USBD_STATUS)0x40000000L)
#define USBD_STATUS_HALTED ((USBD_STATUS)0xC0000000L)
#define USBD_STATUS_ERROR ((USBD_STATUS)0x80000000L)
#define USBD_STATUS_NO_MEMORY ((USBD_STATUS)0x80000100L)
#define USBD_STATUS_INVALID_URB_FUNCTION ((USBD_STATUS)0x80000200L)
#define USBD_STATUS_INVALID_PARAMETER ((USBD_STATUS)0x80000300L)
#define USBD_STATUS_ERROR_BUSY ((USBD_STATUS)0x80000400L)
#define USBD_STATUS_REQUEST_FAILED ((USBD_STATUS)0x80000500L)
#define USBD_STATUS_INVALID_PIPE_HANDLE ((USBD_STATUS)0x80000600L)
#define USBD_STATUS_NO_BANDWIDTH ((USBD_STATUS)0x80000700L)
#define USBD_STATUS_INTERNAL_HC_ERROR ((USBD_STATUS)0x80000800L)
#define USBD_STATUS_ERROR_SHORT_TRANSFER ((USBD_STATUS)0x80000900L)
#define USBD_STATUS_CRC ((USBD_STATUS)0xC0000001L)
#define USBD_STATUS_BTSTUFF ((USBD_STATUS)0xC0000002L)
#define USBD_STATUS_DATA_TOGGLE_MISMATCH ((USBD_STATUS)0xC0000003L)
#define USBD_STATUS_STALL_PID ((USBD_STATUS)0xC0000004L)
#define USBD_STATUS_DEV_NOT_RESPONDING ((USBD_STATUS)0xC0000005L)
#define USBD_STATUS_PID_CHECK_FAILURE ((USBD_STATUS)0xC0000006L)
#define USBD_STATUS_UNEXPECTED_PID ((USBD_STATUS)0xC0000007L)
#define USBD_STATUS_DATA_OVERRUN ((USBD_STATUS)0xC0000008L)
#define USBD_STATUS_DATA_UNDERRUN ((USBD_STATUS)0xC0000009L)
#define USBD_STATUS_RESERVED1 ((USBD_STATUS)0xC000000AL)
#define USBD_STATUS_RESERVED2 ((USBD_STATUS)0xC000000BL)
#define USBD_STATUS_BUFFER_OVERRUN ((USBD_STATUS)0xC000000CL)
#define USBD_STATUS_BUFFER_UNDERRUN ((USBD_STATUS)0xC000000DL)
#define USBD_STATUS_NOT_ACCESSED ((USBD_STATUS)0xC000000FL)
#define USBD_STATUS_FIFO ((USBD_STATUS)0xC0000010L)
#define USBD_STATUS_ENDPOINT_HALTED ((USBD_STATUS)0xC0000030L)
#define USBD_STATUS_BAD_START_FRAME ((USBD_STATUS)0xC0000A00L)
#define USBD_STATUS_ISOCH_REQUEST_FAILED ((USBD_STATUS)0xC0000B00L)
#define USBD_STATUS_FRAME_CONTROL_OWNED ((USBD_STATUS)0xC0000C00L)
#define USBD_STATUS_FRAME_CONTROL_NOT_OWNED \
((USBD_STATUS)0xC0000D00L)
#define USBD_STATUS_INAVLID_CONFIGURATION_DESCRIPTOR \
((USBD_STATUS)0xC0000F00L)
#define USBD_STATUS_CANCELING ((USBD_STATUS)0x00020000L)
#define USBD_PIPE_DIRECTION_IN(pipeInformation) \
((pipeInformation)->EndpointAddress & USB_ENDPOINT_DIRECTION_MASK)
struct _URB_HEADER {
USHORT Length;
USHORT Function;
USBD_STATUS Status;
PVOID UsbdDeviceHandle;
ULONG UsbdFlags;
};
struct _URB_HCD_AREA {
PVOID HcdEndpoint;
PIRP HcdIrp;
LIST_ENTRY HcdListEntry;
LIST_ENTRY HcdListEntry2;
PVOID HcdCurrentIoFlushPointer;
PVOID HcdExtension;
};
struct _URB_BULK_OR_INTERRUPT_TRANSFER {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
};
struct _URB_CONTROL_DESCRIPTOR_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG Reserved0;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
USHORT Reserved1;
UCHAR Index;
UCHAR DescriptorType;
USHORT LanguageId;
USHORT Reserved2;
};
struct _URB_CONTROL_FEATURE_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG Reserved2;
ULONG Reserved3;
PVOID Reserved4;
PMDL Reserved5;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
USHORT Reserved0;
USHORT FeatureSelector;
USHORT Index;
USHORT Reserved1;
};
struct _URB_CONTROL_GET_CONFIGURATION_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG Reserved0;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
UCHAR Reserved1[8];
};
struct _URB_CONTROL_GET_INTERFACE_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG Reserved0;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
UCHAR Reserved1[4];
USHORT Interface;
USHORT Reserved2;
};
struct _URB_CONTROL_GET_STATUS_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG Reserved0;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
UCHAR Reserved1[4];
USHORT Index;
USHORT Reserved2;
};
struct _URB_CONTROL_TRANSFER {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
UCHAR SetupPacket[8];
};
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST {
struct _URB_HEADER Hdr;
PVOID Reserved;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
UCHAR RequestTypeReservedBits;
UCHAR Request;
USHORT Value;
USHORT Index;
USHORT Reserved1;
};
struct _URB_FRAME_LENGTH_CONTROL {
struct _URB_HEADER Hdr;
};
struct _URB_GET_CURRENT_FRAME_NUMBER {
struct _URB_HEADER Hdr;
ULONG FrameNumber;
};
struct _URB_GET_FRAME_LENGTH {
struct _URB_HEADER Hdr;
ULONG FrameLength;
ULONG FrameNumber;
};
typedef struct _USBD_ISO_PACKET_DESCRIPTOR {
ULONG Offset;
ULONG Length;
USBD_STATUS Status;
} USBD_ISO_PACKET_DESCRIPTOR, *PUSBD_ISO_PACKET_DESCRIPTOR;
struct _URB_ISOCH_TRANSFER {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG TransferFlags;
ULONG TransferBufferLength;
PVOID TransferBuffer;
PMDL TransferBufferMDL;
struct _URB *UrbLink;
struct _URB_HCD_AREA hca;
ULONG StartFrame;
ULONG NumberOfPackets;
ULONG ErrorCount;
USBD_ISO_PACKET_DESCRIPTOR IsoPacket[1];
};
struct _URB_PIPE_REQUEST {
struct _URB_HEADER Hdr;
USBD_PIPE_HANDLE PipeHandle;
ULONG Reserved;
};
struct _URB_SET_FRAME_LENGTH {
struct _URB_HEADER Hdr;
LONG FrameLengthDelta;
};
typedef struct _USBD_DEVICE_INFORMATION {
ULONG OffsetNext;
PVOID UsbdDeviceHandle;
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
} USBD_DEVICE_INFORMATION, *PUSBD_DEVICE_INFORMATION;
typedef enum _USBD_PIPE_TYPE {
UsbdPipeTypeControl,
UsbdPipeTypeIsochronous,
UsbdPipeTypeBulk,
UsbdPipeTypeInterrupt
} USBD_PIPE_TYPE;
/* USBD_PIPE_INFORMATION.PipeFlags constants */
#define USBD_PF_CHANGE_MAX_PACKET 0x00000001
#define USBD_PF_DOUBLE_BUFFER 0x00000002
#define USBD_PF_ENABLE_RT_THREAD_ACCESS 0x00000004
#define USBD_PF_MAP_ADD_TRANSFERS 0x00000008
typedef struct _USBD_PIPE_INFORMATION {
USHORT MaximumPacketSize;
UCHAR EndpointAddress;
UCHAR Interval;
USBD_PIPE_TYPE PipeType;
USBD_PIPE_HANDLE PipeHandle;
ULONG MaximumTransferSize;
ULONG PipeFlags;
} USBD_PIPE_INFORMATION, *PUSBD_PIPE_INFORMATION;
typedef struct _USBD_INTERFACE_INFORMATION {
USHORT Length;
UCHAR InterfaceNumber;
UCHAR AlternateSetting;
UCHAR Class;
UCHAR SubClass;
UCHAR Protocol;
UCHAR Reserved;
USBD_INTERFACE_HANDLE InterfaceHandle;
ULONG NumberOfPipes;
USBD_PIPE_INFORMATION Pipes[1];
} USBD_INTERFACE_INFORMATION, *PUSBD_INTERFACE_INFORMATION;
struct _URB_SELECT_CONFIGURATION {
struct _URB_HEADER Hdr;
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor;
USBD_CONFIGURATION_HANDLE ConfigurationHandle;
USBD_INTERFACE_INFORMATION Interface;
};
struct _URB_SELECT_INTERFACE {
struct _URB_HEADER Hdr;
USBD_CONFIGURATION_HANDLE ConfigurationHandle;
USBD_INTERFACE_INFORMATION Interface;
};
typedef struct _USBD_VERSION_INFORMATION {
ULONG USBDI_Version;
ULONG Supported_USB_Version;
} USBD_VERSION_INFORMATION, *PUSBD_VERSION_INFORMATION;
typedef struct _URB {
union {
struct _URB_HEADER UrbHeader;
struct _URB_SELECT_INTERFACE UrbSelectInterface;
struct _URB_SELECT_CONFIGURATION UrbSelectConfiguration;
struct _URB_PIPE_REQUEST UrbPipeRequest;
struct _URB_FRAME_LENGTH_CONTROL UrbFrameLengthControl;
struct _URB_GET_FRAME_LENGTH UrbGetFrameLength;
struct _URB_SET_FRAME_LENGTH UrbSetFrameLength;
struct _URB_GET_CURRENT_FRAME_NUMBER UrbGetCurrentFrameNumber;
struct _URB_CONTROL_TRANSFER UrbControlTransfer;
struct _URB_BULK_OR_INTERRUPT_TRANSFER UrbBulkOrInterruptTransfer;
struct _URB_ISOCH_TRANSFER UrbIsochronousTransfer;
struct _URB_CONTROL_DESCRIPTOR_REQUEST UrbControlDescriptorRequest;
struct _URB_CONTROL_GET_STATUS_REQUEST UrbControlGetStatusRequest;
struct _URB_CONTROL_FEATURE_REQUEST UrbControlFeatureRequest;
struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST UrbControlVendorClassRequest;
struct _URB_CONTROL_GET_INTERFACE_REQUEST UrbControlGetInterfaceRequest;
struct _URB_CONTROL_GET_CONFIGURATION_REQUEST UrbControlGetConfigurationRequest;
};
} URB, *PURB;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __USBDI_H */

View File

@ -0,0 +1,353 @@
/*
* usbioctl.h
*
* USB IOCTL interface.
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __USBIOCTL_H
#define __USBIOCTL_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "usb100.h"
#include "usbiodef.h"
#define USBD_PORT_ENABLED 1
#define USBD_PORT_CONNECTED 2
#define IOCTL_INTERNAL_USB_CYCLE_PORT \
CTL_CODE(FILE_DEVICE_USB, USB_CYCLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_ENABLE_PORT \
CTL_CODE(FILE_DEVICE_USB, USB_ENABLE_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_GET_BUS_INFO \
CTL_CODE(FILE_DEVICE_USB, USB_GET_BUS_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_GET_BUSGUID_INFO \
CTL_CODE(FILE_DEVICE_USB, USB_GET_BUSGUID_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_GET_CONTROLLER_NAME \
CTL_CODE(FILE_DEVICE_USB, USB_GET_CONTROLLER_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE \
CTL_CODE(FILE_DEVICE_USB, USB_GET_DEVICE_HANDLE, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_GET_HUB_COUNT \
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_COUNT, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_GET_HUB_NAME \
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_GET_PARENT_HUB_INFO \
CTL_CODE(FILE_DEVICE_USB, USB_GET_PARENT_HUB_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_GET_PORT_STATUS \
CTL_CODE(FILE_DEVICE_USB, USB_GET_PORT_STATUS, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_RESET_PORT \
CTL_CODE(FILE_DEVICE_USB, USB_RESET_PORT, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO \
CTL_CODE(FILE_DEVICE_USB, USB_GET_ROOTHUB_PDO, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION \
CTL_CODE(FILE_DEVICE_USB, USB_IDLE_NOTIFICATION, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_INTERNAL_USB_SUBMIT_URB \
CTL_CODE(FILE_DEVICE_USB, USB_SUBMIT_URB, METHOD_NEITHER, FILE_ANY_ACCESS)
#define IOCTL_USB_DIAG_IGNORE_HUBS_ON \
CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_DIAG_IGNORE_HUBS_OFF \
CTL_CODE(FILE_DEVICE_USB, USB_DIAG_IGNORE_HUBS_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_DIAGNOSTIC_MODE_OFF \
CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_OFF, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_DIAGNOSTIC_MODE_ON \
CTL_CODE(FILE_DEVICE_USB, HCD_DIAGNOSTIC_MODE_ON, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION \
CTL_CODE(FILE_DEVICE_USB, USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_GET_HUB_CAPABILITIES \
CTL_CODE(FILE_DEVICE_USB, USB_GET_HUB_CAPABILITIES, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_GET_ROOT_HUB_NAME \
CTL_CODE(FILE_DEVICE_USB, HCD_GET_ROOT_HUB_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_GET_HCD_DRIVERKEY_NAME \
CTL_CODE(FILE_DEVICE_USB, HCD_GET_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_GET_NODE_INFORMATION \
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION \
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_INFORMATION, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_GET_NODE_CONNECTION_ATTRIBUTES \
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_ATTRIBUTES, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_GET_NODE_CONNECTION_NAME \
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_GET_NODE_CONNECTION_DRIVERKEY_NAME \
CTL_CODE(FILE_DEVICE_USB, USB_GET_NODE_CONNECTION_DRIVERKEY_NAME, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_HCD_DISABLE_PORT \
CTL_CODE(FILE_DEVICE_USB, HCD_DISABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_HCD_ENABLE_PORT \
CTL_CODE(FILE_DEVICE_USB, HCD_ENABLE_PORT, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_HCD_GET_STATS_1 \
CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_1, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_USB_HCD_GET_STATS_2 \
CTL_CODE(FILE_DEVICE_USB, HCD_GET_STATS_2, METHOD_BUFFERED, FILE_ANY_ACCESS)
typedef struct _USB_HUB_CAPABILITIES {
ULONG HubIs2xCapable : 1;
} USB_HUB_CAPABILITIES, *PUSB_HUB_CAPABILITIES;
typedef enum _USB_CONNECTION_STATUS {
NoDeviceConnected,
DeviceConnected,
DeviceFailedEnumeration,
DeviceGeneralFailure,
DeviceCausedOvercurrent,
DeviceNotEnoughPower,
DeviceNotEnoughBandwidth,
DeviceHubNestedTooDeeply,
DeviceInLegacyHub
} USB_CONNECTION_STATUS, *PUSB_CONNECTION_STATUS;
typedef struct _USB_DESCRIPTOR_REQUEST {
ULONG ConnectionIndex;
struct {
UCHAR bmRequest;
UCHAR bRequest;
USHORT wValue;
USHORT wIndex;
USHORT wLength;
} SetupPacket;
UCHAR Data[0];
} USB_DESCRIPTOR_REQUEST, *PUSB_DESCRIPTOR_REQUEST;
typedef struct _USB_HCD_DRIVERKEY_NAME {
ULONG ActualLength;
WCHAR DriverKeyName[1];
} USB_HCD_DRIVERKEY_NAME, *PUSB_HCD_DRIVERKEY_NAME;
typedef struct _HCD_ISO_STAT_COUNTERS {
USHORT LateUrbs;
USHORT DoubleBufferedPackets;
USHORT TransfersCF_5ms;
USHORT TransfersCF_2ms;
USHORT TransfersCF_1ms;
USHORT MaxInterruptLatency;
USHORT BadStartFrame;
USHORT StaleUrbs;
USHORT IsoPacketNotAccesed;
USHORT IsoPacketHWError;
USHORT SmallestUrbPacketCount;
USHORT LargestUrbPacketCount;
USHORT IsoCRC_Error;
USHORT IsoOVERRUN_Error;
USHORT IsoINTERNAL_Error;
USHORT IsoUNKNOWN_Error;
ULONG IsoBytesTransferred;
USHORT LateMissedCount;
USHORT HWIsoMissedCount;
ULONG Reserved7[8];
} HCD_ISO_STAT_COUNTERS, *PHCD_ISO_STAT_COUNTERS;
typedef struct _HCD_STAT_COUNTERS {
ULONG BytesTransferred;
USHORT IsoMissedCount;
USHORT DataOverrunErrorCount;
USHORT CrcErrorCount;
USHORT ScheduleOverrunCount;
USHORT TimeoutErrorCount;
USHORT InternalHcErrorCount;
USHORT BufferOverrunErrorCount;
USHORT SWErrorCount;
USHORT StallPidCount;
USHORT PortDisableCount;
} HCD_STAT_COUNTERS, *PHCD_STAT_COUNTERS;
typedef struct _HCD_STAT_INFORMATION_1 {
ULONG Reserved1;
ULONG Reserved2;
ULONG ResetCounters;
LARGE_INTEGER TimeRead;
HCD_STAT_COUNTERS Counters;
} HCD_STAT_INFORMATION_1, *PHCD_STAT_INFORMATION_1;
typedef struct _HCD_STAT_INFORMATION_2 {
ULONG Reserved1;
ULONG Reserved2;
ULONG ResetCounters;
LARGE_INTEGER TimeRead;
LONG LockedMemoryUsed;
HCD_STAT_COUNTERS Counters;
HCD_ISO_STAT_COUNTERS IsoCounters;
} HCD_STAT_INFORMATION_2, *PHCD_STAT_INFORMATION_2;
typedef struct _USB_HUB_INFORMATION {
USB_HUB_DESCRIPTOR HubDescriptor;
BOOLEAN HubIsBusPowered;
} USB_HUB_INFORMATION, *PUSB_HUB_INFORMATION;
typedef struct _USB_HUB_NAME {
ULONG ActualLength;
WCHAR HubName[1];
} USB_HUB_NAME, *PUSB_HUB_NAME;
typedef enum _USB_HUB_NODE {
UsbHub,
UsbMIParent
} USB_HUB_NODE;
typedef VOID STDCALL
(*USB_IDLE_CALLBACK)(
PVOID Context);
typedef struct _USB_IDLE_CALLBACK_INFO {
USB_IDLE_CALLBACK IdleCallback;
PVOID IdleContext;
} USB_IDLE_CALLBACK_INFO, *PUSB_IDLE_CALLBACK_INFO;
typedef struct _USB_NODE_CONNECTION_ATTRIBUTES {
ULONG ConnectionIndex;
USB_CONNECTION_STATUS ConnectionStatus;
ULONG PortAttributes;
} USB_NODE_CONNECTION_ATTRIBUTES, *PUSB_NODE_CONNECTION_ATTRIBUTES;
typedef struct _USB_NODE_CONNECTION_DRIVERKEY_NAME {
ULONG ConnectionIndex;
ULONG ActualLength;
WCHAR DriverKeyName[1];
} USB_NODE_CONNECTION_DRIVERKEY_NAME, *PUSB_NODE_CONNECTION_DRIVERKEY_NAME;
typedef struct _USB_PIPE_INFO {
USB_ENDPOINT_DESCRIPTOR EndpointDescriptor;
ULONG ScheduleOffset;
} USB_PIPE_INFO, *PUSB_PIPE_INFO;
typedef struct _USB_NODE_CONNECTION_INFORMATION {
ULONG ConnectionIndex;
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
UCHAR CurrentConfigurationValue;
BOOLEAN LowSpeed;
BOOLEAN DeviceIsHub;
USHORT DeviceAddress;
ULONG NumberOfOpenPipes;
USB_CONNECTION_STATUS ConnectionStatus;
USB_PIPE_INFO PipeList[0];
} USB_NODE_CONNECTION_INFORMATION, *PUSB_NODE_CONNECTION_INFORMATION;
typedef struct _USB_NODE_CONNECTION_NAME {
ULONG ConnectionIndex;
ULONG ActualLength;
WCHAR NodeName[1];
} USB_NODE_CONNECTION_NAME, *PUSB_NODE_CONNECTION_NAME;
typedef struct _USB_MI_PARENT_INFORMATION {
ULONG NumberOfInterfaces;
} USB_MI_PARENT_INFORMATION, *PUSB_MI_PARENT_INFORMATION;
typedef struct _USB_NODE_INFORMATION {
USB_HUB_NODE NodeType;
union {
USB_HUB_INFORMATION HubInformation;
USB_MI_PARENT_INFORMATION MiParentInformation;
} u;
} USB_NODE_INFORMATION, *PUSB_NODE_INFORMATION;
#define WMI_USB_DRIVER_INFORMATION 0
#define WMI_USB_DRIVER_NOTIFICATION 1
#define WMI_USB_POWER_DEVICE_ENABLE 2
typedef enum _USB_NOTIFICATION_TYPE {
EnumerationFailure = 0,
InsufficentBandwidth,
InsufficentPower,
OverCurrent,
ResetOvercurrent,
AcquireBusInfo,
AcquireHubName,
AcquireControllerName,
HubOvercurrent,
HubPowerChange,
HubNestedTooDeeply,
ModernDeviceInLegacyHub
} USB_NOTIFICATION_TYPE;
typedef struct _USB_ACQUIRE_INFO {
USB_NOTIFICATION_TYPE NotificationType;
ULONG TotalSize;
WCHAR Buffer[1];
} USB_ACQUIRE_INFO, *PUSB_ACQUIRE_INFO;
typedef struct _USB_NOTIFICATION {
USB_NOTIFICATION_TYPE NotificationType;
} USB_NOTIFICATION, *PUSB_NOTIFICATION;
typedef struct _USB_BUS_NOTIFICATION {
USB_NOTIFICATION_TYPE NotificationType;
ULONG TotalBandwidth;
ULONG ConsumedBandwidth;
ULONG ControllerNameLength;
} USB_BUS_NOTIFICATION, *PUSB_BUS_NOTIFICATION;
typedef struct _USB_CONNECTION_NOTIFICATION {
USB_NOTIFICATION_TYPE NotificationType;
ULONG ConnectionNumber;
ULONG RequestedBandwidth;
ULONG EnumerationFailReason;
ULONG PowerRequested;
ULONG HubNameLength;
} USB_CONNECTION_NOTIFICATION, *PUSB_CONNECTION_NOTIFICATION;
typedef struct _USB_ROOT_HUB_NAME {
ULONG ActualLength;
WCHAR RootHubName[1];
} USB_ROOT_HUB_NAME, *PUSB_ROOT_HUB_NAME;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __USBIOCTL_H */

View File

@ -0,0 +1,111 @@
/*
* usbiodef.h
*
* USB IOCTL definitions
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __USBIODEF_H
#define __USBIODEF_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
DEFINE_GUID(GUID_DEVINTERFACE_USB_HUB, \
0xf18a0e88, 0xc30c, 0x11d0, 0x88, 0x15, 0x00, 0xa0, 0xc9, 0x06, 0xbe, 0xd8);
DEFINE_GUID(GUID_DEVINTERFACE_USB_DEVICE,
0xA5DCBF10L, 0x6530, 0x11D2, 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED);
DEFINE_GUID(GUID_DEVINTERFACE_USB_HOST_CONTROLLER,
0x3abf6f2d, 0x71c4, 0x462a, 0x8a, 0x92, 0x1e, 0x68, 0x61, 0xe6, 0xaf, 0x27);
DEFINE_GUID(GUID_USB_WMI_STD_DATA,
0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x31, 0x00, 0xA0, 0xC9, 0x59, 0xBB, 0xD2);
DEFINE_GUID(GUID_USB_WMI_STD_NOTIFICATION,
0x4E623B20L, 0xCB14, 0x11D1, 0xB3, 0x31, 0x00, 0xA0, 0xC9, 0x59, 0xBB, 0xD2);
#define GUID_CLASS_USBHUB GUID_DEVINTERFACE_USB_HUB
#define GUID_CLASS_USB_DEVICE GUID_DEVINTERFACE_USB_DEVICE
#define GUID_CLASS_USB_HOST_CONTROLLER GUID_DEVINTERFACE_USB_HOST_CONTROLLER
#define USB_SUBMIT_URB 0
#define USB_RESET_PORT 1
#define USB_GET_ROOTHUB_PDO 3
#define USB_GET_PORT_STATUS 4
#define USB_ENABLE_PORT 5
#define USB_GET_HUB_COUNT 6
#define USB_CYCLE_PORT 7
#define USB_GET_HUB_NAME 8
#define USB_IDLE_NOTIFICATION 9
#define USB_GET_BUS_INFO 264
#define USB_GET_CONTROLLER_NAME 265
#define USB_GET_BUSGUID_INFO 266
#define USB_GET_PARENT_HUB_INFO 267
#define USB_GET_DEVICE_HANDLE 268
#define HCD_GET_STATS_1 255
#define HCD_DIAGNOSTIC_MODE_ON 256
#define HCD_DIAGNOSTIC_MODE_OFF 257
#define HCD_GET_ROOT_HUB_NAME 258
#define HCD_GET_DRIVERKEY_NAME 265
#define HCD_GET_STATS_2 266
#define HCD_DISABLE_PORT 268
#define HCD_ENABLE_PORT 269
#define HCD_USER_REQUEST 270
#define USB_GET_NODE_INFORMATION 258
#define USB_GET_NODE_CONNECTION_INFORMATION 259
#define USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION 260
#define USB_GET_NODE_CONNECTION_NAME 261
#define USB_DIAG_IGNORE_HUBS_ON 262
#define USB_DIAG_IGNORE_HUBS_OFF 263
#define USB_GET_NODE_CONNECTION_DRIVERKEY_NAME 264
#define USB_GET_HUB_CAPABILITIES 271
#define USB_GET_NODE_CONNECTION_ATTRIBUTES 272
#define FILE_DEVICE_USB FILE_DEVICE_UNKNOWN
#define USB_CTL(id) CTL_CODE(FILE_DEVICE_USB, \
(id), \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define USB_KERNEL_CTL(id) CTL_CODE(FILE_DEVICE_USB, \
(id), \
METHOD_NEITHER, \
FILE_ANY_ACCESS)
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __USBIODEF_H */

View File

@ -0,0 +1,163 @@
/*
* usbscan.h
*
* USB scanner definitions
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __USBSCAN_H
#define __USBSCAN_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#define FILE_DEVICE_USB_SCAN 0x8000
#define IOCTL_INDEX 0x0800
#define IOCTL_CANCEL_IO \
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 1, METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_GET_VERSION \
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 0, METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_GET_CHANNEL_ALIGN_RQST \
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 5, METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_GET_DEVICE_DESCRIPTOR \
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 6, METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_GET_PIPE_CONFIGURATION \
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 10,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_GET_USB_DESCRIPTOR \
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 8, METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_READ_REGISTERS \
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 3, METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_RESET_PIPE \
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 7, METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SEND_USB_REQUEST \
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 9, METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_SET_TIMEOUT \
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 11,METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_WAIT_ON_DEVICE_EVENT \
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 2, METHOD_BUFFERED,FILE_ANY_ACCESS)
#define IOCTL_WRITE_REGISTERS \
CTL_CODE(FILE_DEVICE_USB_SCAN, IOCTL_INDEX + 4, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define MAX_NUM_PIPES 8
#define BULKIN_FLAG 0x80
typedef struct _CHANNEL_INFO {
OUT ULONG EventChannelSize;
OUT ULONG uReadDataAlignment;
OUT ULONG uWriteDataAlignment;
}CHANNEL_INFO, *PCHANNEL_INFO;
typedef struct _DEVICE_DESCRIPTOR {
OUT USHORT usVendorId;
OUT USHORT usProductId;
OUT USHORT usBcdDevice;
OUT USHORT usLanguageId;
} DEVICE_DESCRIPTOR, *PDEVICE_DESCRIPTOR;
typedef struct _DRV_VERSION {
OUT ULONG major;
OUT ULONG minor;
OUT ULONG internal;
} DRV_VERSION, *PDRV_VERSION;
typedef struct _IO_BLOCK {
IN ULONG uOffset;
IN ULONG uLength;
IN OUT PUCHAR pbyData;
IN ULONG uIndex;
} IO_BLOCK, *PIO_BLOCK;
typedef struct _IO_BLOCK_EX {
IN ULONG uOffset;
IN ULONG uLength;
IN OUT PUCHAR pbyData;
IN ULONG uIndex;
IN UCHAR bRequest;
IN UCHAR bmRequestType;
IN UCHAR fTransferDirectionIn;
} IO_BLOCK_EX, *PIO_BLOCK_EX;
typedef struct _USBSCAN_GET_DESCRIPTOR {
IN UCHAR DescriptorType;
IN UCHAR Index;
IN USHORT LanguageId;
} USBSCAN_GET_DESCRIPTOR, *PUSBSCAN_GET_DESCRIPTOR;
typedef enum _RAW_PIPE_TYPE {
USBSCAN_PIPE_CONTROL,
USBSCAN_PIPE_ISOCHRONOUS,
USBSCAN_PIPE_BULK,
USBSCAN_PIPE_INTERRUPT
} RAW_PIPE_TYPE;
typedef struct _USBSCAN_PIPE_INFORMATION {
USHORT MaximumPacketSize;
UCHAR EndpointAddress;
UCHAR Interval;
RAW_PIPE_TYPE PipeType;
} USBSCAN_PIPE_INFORMATION, *PUSBSCAN_PIPE_INFORMATION;
typedef struct _USBSCAN_PIPE_CONFIGURATION {
OUT ULONG NumberOfPipes;
OUT USBSCAN_PIPE_INFORMATION PipeInfo[MAX_NUM_PIPES];
} USBSCAN_PIPE_CONFIGURATION, *PUSBSCAN_PIPE_CONFIGURATION;
typedef struct _USBSCAN_TIMEOUT {
IN ULONG TimeoutRead;
IN ULONG TimeoutWrite;
IN ULONG TimeoutEvent;
} USBSCAN_TIMEOUT, *PUSBSCAN_TIMEOUT;
typedef enum _PIPE_TYPE {
EVENT_PIPE,
READ_DATA_PIPE,
WRITE_DATA_PIPE,
ALL_PIPE
} PIPE_TYPE;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __USBSCAN_H */

View File

@ -0,0 +1,329 @@
/*
* usbuser.h
*
* USB user mode IOCTL interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __USBUSER_H
#define __USBUSER_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#pragma pack(push,4)
#include "ntddk.h"
#include "usb.h"
#include "usbiodef.h"
#define USBUSER_VERSION 0x0004
#define IOCTL_USB_USER_REQUEST USB_CTL(HCD_USER_REQUEST)
#ifndef IOCTL_USB_DIAGNOSTIC_MODE_ON
#define IOCTL_USB_DIAGNOSTIC_MODE_ON USB_CTL(HCD_DIAGNOSTIC_MODE_ON)
#endif
#ifndef IOCTL_USB_DIAGNOSTIC_MODE_OFF
#define IOCTL_USB_DIAGNOSTIC_MODE_OFF USB_CTL(HCD_DIAGNOSTIC_MODE_OFF)
#endif
#ifndef IOCTL_USB_GET_ROOT_HUB_NAME
#define IOCTL_USB_GET_ROOT_HUB_NAME USB_CTL(HCD_GET_ROOT_HUB_NAME)
#endif
#ifndef IOCTL_GET_HCD_DRIVERKEY_NAME
#define IOCTL_GET_HCD_DRIVERKEY_NAME USB_CTL(HCD_GET_DRIVERKEY_NAME)
#endif
typedef enum _USB_USER_ERROR_CODE {
UsbUserSuccess = 0,
UsbUserNotSupported,
UsbUserInvalidRequestCode,
UsbUserFeatureDisabled,
UsbUserInvalidHeaderParameter,
UsbUserInvalidParameter,
UsbUserMiniportError,
UsbUserBufferTooSmall,
UsbUserErrorNotMapped,
UsbUserDeviceNotStarted,
UsbUserNoDeviceConnected
} USB_USER_ERROR_CODE;
#define USBUSER_GET_CONTROLLER_INFO_0 0x00000001
#define USBUSER_GET_CONTROLLER_DRIVER_KEY 0x00000002
#define USBUSER_PASS_THRU 0x00000003
#define USBUSER_GET_POWER_STATE_MAP 0x00000004
#define USBUSER_GET_BANDWIDTH_INFORMATION 0x00000005
#define USBUSER_GET_BUS_STATISTICS_0 0x00000006
#define USBUSER_GET_ROOTHUB_SYMBOLIC_NAME 0x00000007
#define USBUSER_GET_USB_DRIVER_VERSION 0x00000008
#define USBUSER_GET_USB2_HW_VERSION 0x00000009
#define USBUSER_OP_SEND_ONE_PACKET 0x10000001
#define USBUSER_OP_RAW_RESET_PORT 0x20000001
#define USBUSER_OP_OPEN_RAW_DEVICE 0x20000002
#define USBUSER_OP_CLOSE_RAW_DEVICE 0x20000003
#define USBUSER_OP_SEND_RAW_COMMAND 0x20000004
#define USBUSER_INVALID_REQUEST 0xFFFFFFF0
#define USBUSER_OP_MASK_DEVONLY_API 0x10000000
#define USBUSER_OP_MASK_HCTEST_API 0x20000000
#define USB_PACKETFLAG_LOW_SPEED 0x00000001
#define USB_PACKETFLAG_FULL_SPEED 0x00000002
#define USB_PACKETFLAG_HIGH_SPEED 0x00000004
#define USB_PACKETFLAG_ASYNC_IN 0x00000008
#define USB_PACKETFLAG_ASYNC_OUT 0x00000010
#define USB_PACKETFLAG_ISO_IN 0x00000020
#define USB_PACKETFLAG_ISO_OUT 0x00000040
#define USB_PACKETFLAG_SETUP 0x00000080
#define USB_PACKETFLAG_TOGGLE0 0x00000100
#define USB_PACKETFLAG_TOGGLE1 0x00000200
typedef struct _PACKET_PARAMETERS {
UCHAR DeviceAddress;
UCHAR EndpointAddress;
USHORT MaximumPacketSize;
ULONG Timeout;
ULONG Flags;
ULONG DataLength;
USHORT HubDeviceAddress;
USHORT PortTTNumber;
UCHAR ErrorCount;
UCHAR Pad[3];
USBD_STATUS UsbdStatusCode;
UCHAR Data[4];
} PACKET_PARAMETERS, *PPACKET_PARAMETERS;
typedef struct _RAW_RESET_PORT_PARAMETERS {
USHORT PortNumber;
USHORT PortStatus;
} RAW_RESET_PORT_PARAMETERS, *PRAW_RESET_PORT_PARAMETERS;
typedef struct _USB_BANDWIDTH_INFO {
ULONG DeviceCount;
ULONG TotalBusBandwidth;
ULONG Total32secBandwidth;
ULONG AllocedBulkAndControl;
ULONG AllocedIso;
ULONG AllocedInterrupt_1ms;
ULONG AllocedInterrupt_2ms;
ULONG AllocedInterrupt_4ms;
ULONG AllocedInterrupt_8ms;
ULONG AllocedInterrupt_16ms;
ULONG AllocedInterrupt_32ms;
} USB_BANDWIDTH_INFO, *PUSB_BANDWIDTH_INFO;
typedef struct _USBUSER_REQUEST_HEADER {
ULONG UsbUserRequest;
USB_USER_ERROR_CODE UsbUserStatusCode;
ULONG RequestBufferLength;
ULONG ActualBufferLength;
} USBUSER_REQUEST_HEADER, *PUSBUSER_REQUEST_HEADER;
typedef struct _USBUSER_BANDWIDTH_INFO_REQUEST {
USBUSER_REQUEST_HEADER Header;
USB_BANDWIDTH_INFO BandwidthInformation;
} USBUSER_BANDWIDTH_INFO_REQUEST, *PUSBUSER_BANDWIDTH_INFO_REQUEST;
typedef struct _USB_BUS_STATISTICS_0 {
ULONG DeviceCount;
LARGE_INTEGER CurrentSystemTime;
ULONG CurrentUsbFrame;
ULONG BulkBytes;
ULONG IsoBytes;
ULONG InterruptBytes;
ULONG ControlDataBytes;
ULONG PciInterruptCount;
ULONG HardResetCount;
ULONG WorkerSignalCount;
ULONG CommonBufferBytes;
ULONG WorkerIdleTimeMs;
BOOLEAN RootHubEnabled;
UCHAR RootHubDevicePowerState;
UCHAR Unused;
UCHAR NameIndex;
} USB_BUS_STATISTICS_0, *PUSB_BUS_STATISTICS_0;
typedef struct _USBUSER_BUS_STATISTICS_0_REQUEST {
USBUSER_REQUEST_HEADER Header;
USB_BUS_STATISTICS_0 BusStatistics0;
} USBUSER_BUS_STATISTICS_0_REQUEST, *PUSBUSER_BUS_STATISTICS_0_REQUEST;
/* USB_CONTROLLER_INFO_0.HcFeatureFlags constants */
#define USB_HC_FEATURE_FLAG_PORT_POWER_SWITCHING 0x00000001
#define USB_HC_FEATURE_FLAG_SEL_SUSPEND 0x00000002
#define USB_HC_FEATURE_LEGACY_BIOS 0x00000004
typedef struct _USB_CLOSE_RAW_DEVICE_PARAMETERS {
ULONG xxx;
} USB_CLOSE_RAW_DEVICE_PARAMETERS , *PUSB_CLOSE_RAW_DEVICE_PARAMETERS;
typedef struct _USBUSER_CLOSE_RAW_DEVICE {
USBUSER_REQUEST_HEADER Header;
USB_CLOSE_RAW_DEVICE_PARAMETERS Parameters;
} USBUSER_CLOSE_RAW_DEVICE, *PUSBUSER_CLOSE_RAW_DEVICE;
typedef struct _USB_CONTROLLER_INFO_0 {
ULONG PciVendorId;
ULONG PciDeviceId;
ULONG PciRevision;
ULONG NumberOfRootPorts;
USB_CONTROLLER_FLAVOR ControllerFlavor;
ULONG HcFeatureFlags;
} USB_CONTROLLER_INFO_0 , *PUSB_CONTROLLER_INFO_0;
typedef struct _USBUSER_CONTROLLER_INFO_0 {
USBUSER_REQUEST_HEADER Header;
USB_CONTROLLER_INFO_0 Info0;
} USBUSER_CONTROLLER_INFO_0, *PUSBUSER_CONTROLLER_INFO_0;
typedef struct _USB_DRIVER_VERSION_PARAMETERS {
ULONG DriverTrackingCode;
ULONG USBDI_Version;
ULONG USBUSER_Version;
BOOLEAN CheckedPortDriver;
BOOLEAN CheckedMiniportDriver;
USHORT USB_Version;
} USB_DRIVER_VERSION_PARAMETERS , *PUSB_DRIVER_VERSION_PARAMETERS;
typedef struct _USBUSER_GET_DRIVER_VERSION {
USBUSER_REQUEST_HEADER Header;
USB_DRIVER_VERSION_PARAMETERS Parameters;
} USBUSER_GET_DRIVER_VERSION, *PUSBUSER_GET_DRIVER_VERSION;
typedef struct _USB_OPEN_RAW_DEVICE_PARAMETERS {
USHORT PortStatus;
USHORT MaxPacketEp0;
} USB_OPEN_RAW_DEVICE_PARAMETERS , *PUSB_OPEN_RAW_DEVICE_PARAMETERS;
typedef struct _USBUSER_OPEN_RAW_DEVICE {
USBUSER_REQUEST_HEADER Header;
USB_OPEN_RAW_DEVICE_PARAMETERS Parameters;
} USBUSER_OPEN_RAW_DEVICE, *PUSBUSER_OPEN_RAW_DEVICE;
typedef enum _WDMUSB_POWER_STATE {
WdmUsbPowerNotMapped = 0,
WdmUsbPowerSystemUnspecified = 100,
WdmUsbPowerSystemWorking,
WdmUsbPowerSystemSleeping1,
WdmUsbPowerSystemSleeping2,
WdmUsbPowerSystemSleeping3,
WdmUsbPowerSystemHibernate,
WdmUsbPowerSystemShutdown,
WdmUsbPowerDeviceUnspecified = 200,
WdmUsbPowerDeviceD0,
WdmUsbPowerDeviceD1,
WdmUsbPowerDeviceD2,
WdmUsbPowerDeviceD3
} WDMUSB_POWER_STATE;
typedef struct _USB_POWER_INFO {
WDMUSB_POWER_STATE SystemState;
WDMUSB_POWER_STATE HcDevicePowerState;
WDMUSB_POWER_STATE HcDeviceWake;
WDMUSB_POWER_STATE HcSystemWake;
WDMUSB_POWER_STATE RhDevicePowerState;
WDMUSB_POWER_STATE RhDeviceWake;
WDMUSB_POWER_STATE RhSystemWake;
WDMUSB_POWER_STATE LastSystemSleepState;
BOOLEAN CanWakeup;
BOOLEAN IsPowered;
} USB_POWER_INFO, *PUSB_POWER_INFO;
typedef struct _USBUSER_POWER_INFO_REQUEST {
USBUSER_REQUEST_HEADER Header;
USB_POWER_INFO PowerInformation;
} USBUSER_POWER_INFO_REQUEST, *PUSBUSER_POWER_INFO_REQUEST;
typedef struct _USB_UNICODE_NAME {
ULONG Length;
WCHAR String[1];
} USB_UNICODE_NAME, *PUSB_UNICODE_NAME;
typedef struct _USBUSER_CONTROLLER_UNICODE_NAME {
USBUSER_REQUEST_HEADER Header;
USB_UNICODE_NAME UnicodeName;
} USBUSER_CONTROLLER_UNICODE_NAME, *PUSBUSER_CONTROLLER_UNICODE_NAME;
typedef struct _USB_PASS_THRU_PARAMETERS {
GUID FunctionGUID;
ULONG ParameterLength;
UCHAR Parameters[4];
} USB_PASS_THRU_PARAMETERS, *PUSB_PASS_THRU_PARAMETERS;
typedef struct _USBUSER_PASS_THRU_REQUEST {
USBUSER_REQUEST_HEADER Header;
USB_PASS_THRU_PARAMETERS PassThru;
} USBUSER_PASS_THRU_REQUEST, *PUSBUSER_PASS_THRU_REQUEST;
typedef struct _USBUSER_RAW_RESET_ROOT_PORT {
USBUSER_REQUEST_HEADER Header;
RAW_RESET_PORT_PARAMETERS Parameters;
} USBUSER_RAW_RESET_ROOT_PORT, *PUSBUSER_RAW_RESET_ROOT_PORT;
typedef struct _USBUSER_SEND_ONE_PACKET {
USBUSER_REQUEST_HEADER Header;
PACKET_PARAMETERS PacketParameters;
} USBUSER_SEND_ONE_PACKET, *PUSBUSER_SEND_ONE_PACKET;
typedef struct _USB_SEND_RAW_COMMAND_PARAMETERS {
UCHAR Usb_bmRequest;
UCHAR Usb_bRequest;
USHORT Usb_wVlaue;
USHORT Usb_wIndex;
USHORT Usb_wLength;
USHORT DeviceAddress;
USHORT MaximumPacketSize;
ULONG Timeout;
ULONG DataLength;
USBD_STATUS UsbdStatusCode;
UCHAR Data[4];
} USB_SEND_RAW_COMMAND_PARAMETERS, *PUSB_SEND_RAW_COMMAND_PARAMETERS;
typedef struct _USBUSER_SEND_RAW_COMMAND {
USBUSER_REQUEST_HEADER Header;
USB_SEND_RAW_COMMAND_PARAMETERS Parameters;
} USBUSER_SEND_RAW_COMMAND, *PUSBUSER_SEND_RAW_COMMAND;
/* USB_USB2HW_VERSION_PARAMETERS.Usb2HwRevision constants */
#define USB2HW_UNKNOWN 0x00
#define USB2HW_A0 0xA0
#define USB2HW_A1 0xA1
#define USB2HW_B0 0xB0
typedef struct _USB_USB2HW_VERSION_PARAMETERS {
UCHAR Usb2HwRevision;
} USB_USB2HW_VERSION_PARAMETERS, *PUSB_USB2HW_VERSION_PARAMETERS;
typedef struct _USBUSER_GET_USB2HW_VERSION {
USBUSER_REQUEST_HEADER Header;
USB_USB2HW_VERSION_PARAMETERS Parameters;
} USBUSER_GET_USB2HW_VERSION, *PUSBUSER_GET_USB2HW_VERSION;
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __USBUSER_H */

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,131 @@
/*
* videoagp.h
*
* Video miniport AGP interface
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __VIDEOAGP_H
#define __VIDEOAGP_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#include "ntddk.h"
#include "video.h"
#define VIDEO_AGP_RATE_1X 0x00000001
#define VIDEO_AGP_RATE_2X 0x00000002
#define VIDEO_AGP_RATE_4X 0x00000004
#define VIDEO_AGP_RATE_8X 0x00000008
typedef enum _VIDEO_PORT_CACHE_TYPE {
VpNonCached = 0,
VpWriteCombined,
VpCached
} VIDEO_PORT_CACHE_TYPE;
typedef BOOLEAN DDKAPI
(*PAGP_COMMIT_PHYSICAL)(
IN PVOID HwDeviceExtension,
IN PVOID PhysicalReserveContext,
IN ULONG Pages,
IN ULONG Offset);
typedef PVOID DDKAPI
(*PAGP_COMMIT_VIRTUAL)(
IN PVOID HwDeviceExtension,
IN PVOID VirtualReserveContext,
IN ULONG Pages,
IN ULONG Offset);
typedef VOID DDKAPI
(*PAGP_FREE_PHYSICAL)(
IN PVOID HwDeviceExtension,
IN PVOID PhysicalReserveContext,
IN ULONG Pages,
IN ULONG Offset);
typedef VOID DDKAPI
(*PAGP_FREE_VIRTUAL)(
IN PVOID HwDeviceExtension,
IN PVOID VirtualReserveContext,
IN ULONG Pages,
IN ULONG Offset);
typedef VOID DDKAPI
(*PAGP_RELEASE_PHYSICAL)(
IN PVOID HwDeviceExtension,
IN PVOID PhysicalReserveContext);
typedef VOID DDKAPI
(*PAGP_RELEASE_VIRTUAL)(
IN PVOID HwDeviceExtension,
IN PVOID VirtualReserveContext);
typedef PHYSICAL_ADDRESS DDKAPI
(*PAGP_RESERVE_PHYSICAL)(
IN PVOID HwDeviceExtension,
IN ULONG Pages,
IN VIDEO_PORT_CACHE_TYPE Caching,
OUT PVOID *PhysicalReserveContext);
typedef PVOID DDKAPI
(*PAGP_RESERVE_VIRTUAL)(
IN PVOID HwDeviceExtension,
IN HANDLE ProcessHandle,
IN PVOID PhysicalReserveContext,
OUT PVOID *VirtualReserveContext);
typedef BOOLEAN DDKAPI
(*PAGP_SET_RATE)(
IN PVOID HwDeviceExtension,
IN ULONG AgpRate);
typedef struct _VIDEO_PORT_AGP_SERVICES {
PAGP_RESERVE_PHYSICAL AgpReservePhysical;
PAGP_RELEASE_PHYSICAL AgpReleasePhysical;
PAGP_COMMIT_PHYSICAL AgpCommitPhysical;
PAGP_FREE_PHYSICAL AgpFreePhysical;
PAGP_RESERVE_VIRTUAL AgpReserveVirtual;
PAGP_RELEASE_VIRTUAL AgpReleaseVirtual;
PAGP_COMMIT_VIRTUAL AgpCommitVirtual;
PAGP_FREE_VIRTUAL AgpFreeVirtual;
ULONGLONG AllocationLimit;
} VIDEO_PORT_AGP_SERVICES, *PVIDEO_PORT_AGP_SERVICES;
VPAPI
BOOLEAN
DDKAPI
VideoPortGetAgpServices(
IN PVOID HwDeviceExtension,
IN PVIDEO_PORT_AGP_SERVICES AgpServices);
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __VIDEOAGP_H */

View File

@ -0,0 +1,105 @@
/*
* win2k.h
*
* Definitions only used in Windows 2000 and earlier versions
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __WIN2K_H
#define __WIN2K_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#include "ntddk.h"
typedef enum _BUS_DATA_TYPE {
ConfigurationSpaceUndefined = -1,
Cmos,
EisaConfiguration,
Pos,
CbusConfiguration,
PCIConfiguration,
VMEConfiguration,
NuBusConfiguration,
PCMCIAConfiguration,
MPIConfiguration,
MPSAConfiguration,
PNPISAConfiguration,
SgiInternalConfiguration,
MaximumBusDataType
} BUS_DATA_TYPE, *PBUS_DATA_TYPE;
NTOSAPI
VOID
DDKAPI
ExReleaseResourceForThreadLite(
IN PERESOURCE Resource,
IN ERESOURCE_THREAD ResourceThreadId);
NTOSAPI
NTSTATUS
DDKAPI
IoReadPartitionTable(
IN PDEVICE_OBJECT DeviceObject,
IN ULONG SectorSize,
IN BOOLEAN ReturnRecognizedPartitions,
OUT struct _DRIVE_LAYOUT_INFORMATION **PartitionBuffer);
NTOSAPI
NTSTATUS
DDKAPI
IoSetPartitionInformation(
IN PDEVICE_OBJECT DeviceObject,
IN ULONG SectorSize,
IN ULONG PartitionNumber,
IN ULONG PartitionType);
NTOSAPI
NTSTATUS
DDKAPI
IoWritePartitionTable(
IN PDEVICE_OBJECT DeviceObject,
IN ULONG SectorSize,
IN ULONG SectorsPerTrack,
IN ULONG NumberOfHeads,
IN struct _DRIVE_LAYOUT_INFORMATION *PartitionBuffer);
/*
* PVOID MmGetSystemAddressForMdl(
* IN PMDL Mdl);
*/
#define MmGetSystemAddressForMdl(Mdl) \
(((Mdl)->MdlFlags & (MDL_MAPPED_TO_SYSTEM_VA | \
MDL_SOURCE_IS_NONPAGED_POOL)) ? \
((Mdl)->MappedSystemVa) : \
(MmMapLockedPages((Mdl), KernelMode)))
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __WIN2K_H */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,606 @@
/*
* winnt4.h
*
* Definitions only used in Windows NT 4.0 and earlier versions
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __WINNT4_H
#define __WINNT4_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef struct _ZONE_SEGMENT_HEADER {
SINGLE_LIST_ENTRY SegmentList;
PVOID Reserved;
} ZONE_SEGMENT_HEADER, *PZONE_SEGMENT_HEADER;
typedef struct _ZONE_HEADER {
SINGLE_LIST_ENTRY FreeList;
SINGLE_LIST_ENTRY SegmentList;
ULONG BlockSize;
ULONG TotalSegmentSize;
} ZONE_HEADER, *PZONE_HEADER;
static inline PVOID
ExAllocateFromZone(
IN PZONE_HEADER Zone)
{
if (Zone->FreeList.Next)
Zone->FreeList.Next = Zone->FreeList.Next->Next;
return (PVOID) Zone->FreeList.Next;
}
NTOSAPI
NTSTATUS
DDKAPI
ExExtendZone(
IN PZONE_HEADER Zone,
IN PVOID Segment,
IN ULONG SegmentSize);
static inline PVOID
ExFreeToZone(
IN PZONE_HEADER Zone,
IN PVOID Block)
{
((PSINGLE_LIST_ENTRY) Block)->Next = Zone->FreeList.Next;
Zone->FreeList.Next = ((PSINGLE_LIST_ENTRY) Block);
return ((PSINGLE_LIST_ENTRY) Block)->Next;
}
NTOSAPI
NTSTATUS
DDKAPI
ExInitializeZone(
IN PZONE_HEADER Zone,
IN ULONG BlockSize,
IN PVOID InitialSegment,
IN ULONG InitialSegmentSize);
/*
* PVOID
* ExInterlockedAllocateFromZone(
* IN PZONE_HEADER Zone,
* IN PKSPIN_LOCK Lock)
*/
#define ExInterlockedAllocateFromZone(Zone, \
Lock) \
((PVOID) ExInterlockedPopEntryList(&Zone->FreeList, Lock))
NTOSAPI
NTSTATUS
DDKAPI
ExInterlockedExtendZone(
IN PZONE_HEADER Zone,
IN PVOID Segment,
IN ULONG SegmentSize,
IN PKSPIN_LOCK Lock);
NTOSAPI
PVOID
DDKAPI
ExInterlockedFreeToZone(
IN PZONE_HEADER Zone,
IN PVOID Block,
IN PKSPIN_LOCK Lock);
/*
* VOID
* ExInitializeWorkItem(
* IN PWORK_QUEUE_ITEM Item,
* IN PWORKER_THREAD_ROUTINE Routine,
* IN PVOID Context)
*/
#define ExInitializeWorkItem(Item, \
Routine, \
Context) \
{ \
(Item)->WorkerRoutine = Routine; \
(Item)->Parameter = Context; \
(Item)->List.Flink = NULL; \
}
/*
* BOOLEAN
* ExIsFullZone(
* IN PZONE_HEADER Zone)
*/
#define ExIsFullZone(Zone) \
((Zone)->FreeList.Next == (PSINGLE_LIST_ENTRY) NULL)
NTOSAPI
VOID
DDKAPI
ExQueueWorkItem(
IN PWORK_QUEUE_ITEM WorkItem,
IN WORK_QUEUE_TYPE QueueType);
NTOSAPI
BOOLEAN
DDKAPI
ExIsObjectInFirstZoneSegment(
IN PZONE_HEADER Zone,
IN PVOID Object);
NTOSAPI
VOID
DDKAPI
ExReleaseResource(
IN PERESOURCE Resource);
#define ExAcquireResourceExclusive ExAcquireResourceExclusiveLite
#define ExAcquireResourceShared ExAcquireResourceSharedLite
#define ExConvertExclusiveToShared ExConvertExclusiveToSharedLite
#define ExDeleteResource ExDeleteResourceLite
#define ExInitializeResource ExInitializeResourceLite
#define ExIsResourceAcquiredExclusive ExIsResourceAcquiredExclusiveLite
#define ExIsResourceAcquiredShared ExIsResourceAcquiredSharedLite
#define ExIsResourceAcquired ExIsResourceAcquiredSharedLite
#define ExReleaseResourceForThread ExReleaseResourceForThreadLite
NTOSAPI
INTERLOCKED_RESULT
DDKAPI
ExInterlockedDecrementLong(
IN PLONG Addend,
IN PKSPIN_LOCK Lock);
NTOSAPI
ULONG
DDKAPI
ExInterlockedExchangeUlong(
IN PULONG Target,
IN ULONG Value,
IN PKSPIN_LOCK Lock);
NTOSAPI
INTERLOCKED_RESULT
DDKAPI
ExInterlockedIncrementLong(
IN PLONG Addend,
IN PKSPIN_LOCK Lock);
NTOSAPI
PVOID
DDKAPI
HalAllocateCommonBuffer(
IN PADAPTER_OBJECT AdapterObject,
IN ULONG Length,
OUT PPHYSICAL_ADDRESS LogicalAddress,
IN BOOLEAN CacheEnabled);
NTOSAPI
NTSTATUS
DDKAPI
HalAssignSlotResources(
IN PUNICODE_STRING RegistryPath,
IN PUNICODE_STRING DriverClassName,
IN PDRIVER_OBJECT DriverObject,
IN PDEVICE_OBJECT DeviceObject,
IN INTERFACE_TYPE BusType,
IN ULONG BusNumber,
IN ULONG SlotNumber,
IN OUT PCM_RESOURCE_LIST *AllocatedResources);
NTOSAPI
VOID
DDKAPI
HalFreeCommonBuffer(
IN PADAPTER_OBJECT AdapterObject,
IN ULONG Length,
IN PHYSICAL_ADDRESS LogicalAddress,
IN PVOID VirtualAddress,
IN BOOLEAN CacheEnabled);
NTOSAPI
PADAPTER_OBJECT
DDKAPI
HalGetAdapter(
IN PDEVICE_DESCRIPTION DeviceDescription,
IN OUT PULONG NumberOfMapRegisters);
NTOSAPI
ULONG
DDKAPI
HalGetBusData(
IN BUS_DATA_TYPE BusDataType,
IN ULONG BusNumber,
IN ULONG SlotNumber,
IN PVOID Buffer,
IN ULONG Length);
NTOSAPI
ULONG
DDKAPI
HalGetBusDataByOffset(
IN BUS_DATA_TYPE BusDataType,
IN ULONG BusNumber,
IN ULONG SlotNumber,
IN PVOID Buffer,
IN ULONG Offset,
IN ULONG Length);
NTOSAPI
ULONG
DDKAPI
HalGetDmaAlignmentRequirement(
VOID);
NTOSAPI
ULONG
DDKAPI
HalGetInterruptVector(
IN INTERFACE_TYPE InterfaceType,
IN ULONG BusNumber,
IN ULONG BusInterruptLevel,
IN ULONG BusInterruptVector,
OUT PKIRQL Irql,
OUT PKAFFINITY Affinity);
NTOSAPI
ULONG
DDKAPI
HalReadDmaCounter(
IN PADAPTER_OBJECT AdapterObject);
NTOSAPI
ULONG
DDKAPI
HalSetBusData(
IN BUS_DATA_TYPE BusDataType,
IN ULONG BusNumber,
IN ULONG SlotNumber,
IN PVOID Buffer,
IN ULONG Length);
NTOSAPI
ULONG
DDKAPI
HalSetBusDataByOffset(
IN BUS_DATA_TYPE BusDataType,
IN ULONG BusNumber,
IN ULONG SlotNumber,
IN PVOID Buffer,
IN ULONG Offset,
IN ULONG Length);
NTOSAPI
BOOLEAN
DDKAPI
HalTranslateBusAddress(
IN INTERFACE_TYPE InterfaceType,
IN ULONG BusNumber,
IN PHYSICAL_ADDRESS BusAddress,
IN OUT PULONG AddressSpace,
OUT PPHYSICAL_ADDRESS TranslatedAddress);
NTOSAPI
NTSTATUS
DDKAPI
IoAllocateAdapterChannel(
IN PADAPTER_OBJECT AdapterObject,
IN PDEVICE_OBJECT DeviceObject,
IN ULONG NumberOfMapRegisters,
IN PDRIVER_CONTROL ExecutionRoutine,
IN PVOID Context);
NTOSAPI
NTSTATUS
DDKAPI
IoAssignResources(
IN PUNICODE_STRING RegistryPath,
IN PUNICODE_STRING DriverClassName OPTIONAL,
IN PDRIVER_OBJECT DriverObject,
IN PDEVICE_OBJECT DeviceObject OPTIONAL,
IN PIO_RESOURCE_REQUIREMENTS_LIST RequestedResources,
IN OUT PCM_RESOURCE_LIST *AllocatedResources);
NTOSAPI
NTSTATUS
DDKAPI
IoAttachDeviceByPointer(
IN PDEVICE_OBJECT SourceDevice,
IN PDEVICE_OBJECT TargetDevice);
NTOSAPI
BOOLEAN
DDKAPI
IoFlushAdapterBuffers(
IN PADAPTER_OBJECT AdapterObject,
IN PMDL Mdl,
IN PVOID MapRegisterBase,
IN PVOID CurrentVa,
IN ULONG Length,
IN BOOLEAN WriteToDevice);
NTOSAPI
VOID
DDKAPI
IoFreeAdapterChannel(
IN PADAPTER_OBJECT AdapterObject);
NTOSAPI
VOID
DDKAPI
IoFreeMapRegisters(
IN PADAPTER_OBJECT AdapterObject,
IN PVOID MapRegisterBase,
IN ULONG NumberOfMapRegisters);
NTOSAPI
PHYSICAL_ADDRESS
DDKAPI
IoMapTransfer(
IN PADAPTER_OBJECT AdapterObject,
IN PMDL Mdl,
IN PVOID MapRegisterBase,
IN PVOID CurrentVa,
IN OUT PULONG Length,
IN BOOLEAN WriteToDevice);
NTOSAPI
PMDL
DDKAPI
MmCreateMdl(
IN PMDL MemoryDescriptorList OPTIONAL,
IN PVOID Base,
IN SIZE_T Length);
NTOSAPI
BOOLEAN
DDKAPI
MmIsNonPagedSystemAddressValid(
IN PVOID VirtualAddress);
NTOSAPI
LARGE_INTEGER
DDKAPI
RtlEnlargedIntegerMultiply(
IN LONG Multiplicand,
IN LONG Multiplier);
NTOSAPI
ULONG
DDKAPI
RtlEnlargedUnsignedDivide(
IN ULARGE_INTEGER Dividend,
IN ULONG Divisor,
IN OUT PULONG Remainder);
NTOSAPI
LARGE_INTEGER
DDKAPI
RtlEnlargedUnsignedMultiply(
IN ULONG Multiplicand,
IN ULONG Multiplier);
NTOSAPI
LARGE_INTEGER
DDKAPI
RtlExtendedIntegerMultiply(
IN LARGE_INTEGER Multiplicand,
IN LONG Multiplier);
NTOSAPI
LARGE_INTEGER
DDKAPI
RtlExtendedLargeIntegerDivide(
IN LARGE_INTEGER Dividend,
IN ULONG Divisor,
IN OUT PULONG Remainder);
NTOSAPI
LARGE_INTEGER
DDKAPI
RtlExtendedMagicDivide(
IN LARGE_INTEGER Dividend,
IN LARGE_INTEGER MagicDivisor,
IN CCHAR ShiftCount);
NTOSAPI
LARGE_INTEGER
DDKAPI
RtlLargeIntegerAdd(
IN LARGE_INTEGER Addend1,
IN LARGE_INTEGER Addend2);
NTOSAPI
VOID
DDKAPI
RtlLargeIntegerAnd(
IN OUT LARGE_INTEGER Result,
IN LARGE_INTEGER Source,
IN LARGE_INTEGER Mask);
NTOSAPI
LARGE_INTEGER
DDKAPI
RtlLargeIntegerArithmeticShift(
IN LARGE_INTEGER LargeInteger,
IN CCHAR ShiftCount);
NTOSAPI
LARGE_INTEGER
DDKAPI
RtlLargeIntegerDivide(
IN LARGE_INTEGER Dividend,
IN LARGE_INTEGER Divisor,
IN OUT PLARGE_INTEGER Remainder);
NTOSAPI
BOOLEAN
DDKAPI
RtlLargeIntegerEqualTo(
IN LARGE_INTEGER Operand1,
IN LARGE_INTEGER Operand2);
NTOSAPI
BOOLEAN
DDKAPI
RtlLargeIntegerEqualToZero(
IN LARGE_INTEGER Operand);
NTOSAPI
BOOLEAN
DDKAPI
RtlLargeIntegerGreaterOrEqualToZero(
IN LARGE_INTEGER Operand);
NTOSAPI
BOOLEAN
DDKAPI
RtlLargeIntegerGreaterThan(
IN LARGE_INTEGER Operand1,
IN LARGE_INTEGER Operand2);
NTOSAPI
BOOLEAN
DDKAPI
RtlLargeIntegerGreaterThanOrEqualTo(
IN LARGE_INTEGER Operand1,
IN LARGE_INTEGER Operand2);
NTOSAPI
BOOLEAN
DDKAPI
RtlLargeIntegerGreaterThanZero(
IN LARGE_INTEGER Operand);
NTOSAPI
BOOLEAN
DDKAPI
RtlLargeIntegerLessOrEqualToZero(
IN LARGE_INTEGER Operand);
NTOSAPI
BOOLEAN
DDKAPI
RtlLargeIntegerLessThan(
IN LARGE_INTEGER Operand1,
IN LARGE_INTEGER Operand2);
NTOSAPI
BOOLEAN
DDKAPI
RtlLargeIntegerLessThanOrEqualTo(
IN LARGE_INTEGER Operand1,
IN LARGE_INTEGER Operand2);
NTOSAPI
BOOLEAN
DDKAPI
RtlLargeIntegerLessThanZero(
IN LARGE_INTEGER Operand);
NTOSAPI
LARGE_INTEGER
DDKAPI
RtlLargeIntegerNegate(
IN LARGE_INTEGER Subtrahend);
NTOSAPI
BOOLEAN
DDKAPI
RtlLargeIntegerNotEqualTo(
IN LARGE_INTEGER Operand1,
IN LARGE_INTEGER Operand2);
NTOSAPI
BOOLEAN
DDKAPI
RtlLargeIntegerNotEqualToZero(
IN LARGE_INTEGER Operand);
NTOSAPI
LARGE_INTEGER
DDKAPI
RtlLargeIntegerShiftLeft(
IN LARGE_INTEGER LargeInteger,
IN CCHAR ShiftCount);
NTOSAPI
LARGE_INTEGER
DDKAPI
RtlLargeIntegerShiftRight(
IN LARGE_INTEGER LargeInteger,
IN CCHAR ShiftCount);
NTOSAPI
LARGE_INTEGER
DDKAPI
RtlLargeIntegerSubtract(
IN LARGE_INTEGER Minuend,
IN LARGE_INTEGER Subtrahend);
/*
* ULONG
* COMPUTE_PAGES_SPANNED(
* IN PVOID Va,
* IN ULONG Size)
*/
#define COMPUTE_PAGES_SPANNED(Va, \
Size) \
(ADDRESS_AND_SIZE_TO_SPAN_PAGES(Va, Size))
/*
** Architecture specific structures
*/
#ifdef _X86_
NTOSAPI
INTERLOCKED_RESULT
DDKFASTAPI
Exfi386InterlockedIncrementLong(
IN PLONG Addend);
NTOSAPI
INTERLOCKED_RESULT
DDKFASTAPI
Exfi386InterlockedDecrementLong(
IN PLONG Addend);
NTOSAPI
ULONG
DDKFASTAPI
Exfi386InterlockedExchangeUlong(
IN PULONG Target,
IN ULONG Value);
#define ExInterlockedIncrementLong(Addend,Lock) Exfi386InterlockedIncrementLong(Addend)
#define ExInterlockedDecrementLong(Addend,Lock) Exfi386InterlockedDecrementLong(Addend)
#define ExInterlockedExchangeUlong(Target, Value, Lock) Exfi386InterlockedExchangeUlong(Target, Value)
#endif /* _X86_ */
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __WINNT4_H */

View File

@ -0,0 +1,38 @@
/*
* winxp.h
*
* Definitions only used in Windows XP and earlier versions
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __WINXP_H
#define __WINXP_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#ifdef __cplusplus
}
#endif
#endif /* __WINXP_H */

View File

@ -0,0 +1,250 @@
/*
* ws2san.h
*
* WinSock Direct (SAN) support
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __WS2SAN_H
#define __WS2SAN_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#include <winsock2.h>
#include "ntddk.h"
#define WSPAPI STDCALL
/* FIXME: Unknown definitions */
typedef PVOID LPWSPDATA;
typedef PDWORD LPWSATHREADID;
typedef PVOID LPWSPPROC_TABLE;
typedef struct _WSPUPCALLTABLEEX WSPUPCALLTABLEEX;
typedef WSPUPCALLTABLEEX *LPWSPUPCALLTABLEEX;
#define SO_MAX_RDMA_SIZE 0x700D
#define SO_RDMA_THRESHOLD_SIZE 0x700E
#define WSAID_REGISTERMEMORY \
{0xC0B422F5, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
#define WSAID_DEREGISTERMEMORY \
{0xC0B422F6, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
#define WSAID_REGISTERRDMAMEMORY \
{0xC0B422F7, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
#define WSAID_DEREGISTERRDMAMEMORY \
{0xC0B422F8, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
#define WSAID_RDMAWRITE \
{0xC0B422F9, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
#define WSAID_RDMAREAD \
{0xC0B422FA, 0xF58C, 0x11d1, {0xAD, 0x6C, 0x00, 0xC0, 0x4F, 0xA3, 0x4A, 0x2D}}
#define WSAID_MEMORYREGISTRATIONCACHECALLBACK \
{0xE5DA4AF8, 0xD824, 0x48CD, {0xA7, 0x99, 0x63, 0x37, 0xA9, 0x8E, 0xD2, 0xAF}}
typedef struct _WSABUFEX {
u_long len;
char FAR *buf;
HANDLE handle;
} WSABUFEX, FAR * LPWSABUFEX;
#if 0
typedef struct _WSPUPCALLTABLEEX {
LPWPUCLOSEEVENT lpWPUCloseEvent;
LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
LPWPUCREATEEVENT lpWPUCreateEvent;
LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
LPWPUFDISSET lpWPUFDIsSet;
LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
LPWPUPOSTMESSAGE lpWPUPostMessage;
LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
LPWPUQUEUEAPC lpWPUQueueApc;
LPWPURESETEVENT lpWPUResetEvent;
LPWPUSETEVENT lpWPUSetEvent;
LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
LPWPUCLOSETHREAD lpWPUCloseThread;
LPWPUCOMPLETEOVERLAPPEDREQUEST lpWPUCompleteOverlappedRequest;
} WSPUPCALLTABLEEX, FAR * LPWSPUPCALLTABLEEX;
#endif
int WSPAPI
WSPStartupEx(
IN WORD wVersionRequested,
OUT LPWSPDATA lpWSPData,
IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
IN LPWSPUPCALLTABLEEX lpUpcallTable,
OUT LPWSPPROC_TABLE lpProcTable);
typedef int WSPAPI
(*LPWSPSTARTUPEX)(
IN WORD wVersionRequested,
OUT LPWSPDATA lpWSPData,
IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
IN LPWSPUPCALLTABLEEX lpUpcallTable,
OUT LPWSPPROC_TABLE lpProcTable);
#define MEM_READ 1
#define MEM_WRITE 2
#define MEM_READWRITE 3
int WSPAPI
WSPDeregisterMemory(
IN SOCKET s,
IN HANDLE Handle,
OUT LPINT lpErrno);
typedef int WSPAPI
(*LPFN_WSPDEREGISTERMEMORY)(
IN SOCKET s,
IN HANDLE Handle,
OUT LPINT lpErrno);
int WSPAPI
WSPDeregisterRdmaMemory(
IN SOCKET s,
IN LPVOID lpRdmaBufferDescriptor,
IN DWORD dwDescriptorLength,
OUT LPINT lpErrno);
typedef int WSPAPI
(*LPFN_WSPDEREGISTERRDMAMEMORY)(
IN SOCKET s,
IN LPVOID lpRdmaBufferDescriptor,
IN DWORD dwDescriptorLength,
OUT LPINT lpErrno);
int WSPAPI
WSPMemoryRegistrationCacheCallback(
IN PVOID lpvAddress,
IN SIZE_T Size,
OUT LPINT lpErrno);
typedef int WSPAPI
(*LPFN_WSPMEMORYREGISTRATIONCACHECALLBACK)(
IN PVOID lpvAddress,
IN SIZE_T Size,
OUT LPINT lpErrno);
int WSPAPI
WSPRdmaRead(
IN SOCKET s,
IN LPWSABUFEX lpBuffers,
IN DWORD dwBufferCount,
IN LPVOID lpTargetBufferDescriptor,
IN DWORD dwTargetDescriptorLength,
IN DWORD dwTargetBufferOffset,
OUT LPDWORD lpdwNumberOfBytesRead,
IN DWORD dwFlags,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
IN LPWSATHREADID lpThreadId,
OUT LPINT lpErrno);
typedef int WSPAPI
(*LPFN_WSPRDMAREAD)(
IN SOCKET s,
IN LPWSABUFEX lpBuffers,
IN DWORD dwBufferCount,
IN LPVOID lpTargetBufferDescriptor,
IN DWORD dwTargetDescriptorLength,
IN DWORD dwTargetBufferOffset,
OUT LPDWORD lpdwNumberOfBytesRead,
IN DWORD dwFlags,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
IN LPWSATHREADID lpThreadId,
OUT LPINT lpErrno);
int WSPAPI
WSPRdmaWrite(
IN SOCKET s,
IN LPWSABUFEX lpBuffers,
IN DWORD dwBufferCount,
IN LPVOID lpTargetBufferDescriptor,
IN DWORD dwTargetDescriptorLength,
IN DWORD dwTargetBufferOffset,
OUT LPDWORD lpdwNumberOfBytesWritten,
IN DWORD dwFlags,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
IN LPWSATHREADID lpThreadId,
OUT LPINT lpErrno);
typedef int WSPAPI
(*LPFN_WSPRDMAWRITE)(
IN SOCKET s,
IN LPWSABUFEX lpBuffers,
IN DWORD dwBufferCount,
IN LPVOID lpTargetBufferDescriptor,
IN DWORD dwTargetDescriptorLength,
IN DWORD dwTargetBufferOffset,
OUT LPDWORD lpdwNumberOfBytesWritten,
IN DWORD dwFlags,
IN LPWSAOVERLAPPED lpOverlapped,
IN LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine,
IN LPWSATHREADID lpThreadId,
OUT LPINT lpErrno);
HANDLE WSPAPI
WSPRegisterMemory(
IN SOCKET s,
IN PVOID lpBuffer,
IN DWORD dwBufferLength,
IN DWORD dwFlags,
OUT LPINT lpErrno);
int WSPAPI
WSPRegisterRdmaMemory(
IN SOCKET s,
IN PVOID lpBuffer,
IN DWORD dwBufferLength,
IN DWORD dwFlags,
OUT LPVOID lpRdmaBufferDescriptor,
IN OUT LPDWORD lpdwDescriptorLength,
OUT LPINT lpErrno);
typedef int WSPAPI
(*LPFN_WSPREGISTERRDMAMEMORY)(
IN SOCKET s,
IN PVOID lpBuffer,
IN DWORD dwBufferLength,
IN DWORD dwFlags,
OUT LPVOID lpRdmaBufferDescriptor,
IN OUT LPDWORD lpdwDescriptorLength,
OUT LPINT lpErrno);
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __WS2SAN_H */

View File

@ -0,0 +1,241 @@
/*
* xfilter.h
*
* Address filtering for NDIS MACs
*
* This file is part of the MinGW package.
*
* Contributors:
* Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __XFILTER_H
#define __XFILTER_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#include "ntddk.h"
#define ETH_LENGTH_OF_ADDRESS 6
#define ETH_IS_BROADCAST(Address) \
((((PUCHAR)(Address))[0] == ((UCHAR)0xff)) && (((PUCHAR)(Address))[1] == ((UCHAR)0xff)))
#define ETH_IS_MULTICAST(Address) \
(BOOLEAN)(((PUCHAR)(Address))[0] & ((UCHAR)0x01))
#define ETH_COMPARE_NETWORK_ADDRESSES(_A, _B, _Result) \
{ \
if (*(ULONG UNALIGNED *)&(_A)[2] > *(ULONG UNALIGNED *)&(_B)[2]) \
{ \
*(_Result) = 1; \
} \
else if (*(ULONG UNALIGNED *)&(_A)[2] < *(ULONG UNALIGNED *)&(_B)[2]) \
{ \
*(_Result) = (UINT)-1; \
} \
else if (*(USHORT UNALIGNED *)(_A) > *(USHORT UNALIGNED *)(_B)) \
{ \
*(_Result) = 1; \
} \
else if (*(USHORT UNALIGNED *)(_A) < *(USHORT UNALIGNED *)(_B)) \
{ \
*(_Result) = (UINT)-1; \
} \
else \
{ \
*(_Result) = 0; \
} \
}
#define ETH_COMPARE_NETWORK_ADDRESSES_EQ(_A,_B, _Result) \
{ \
if ((*(ULONG UNALIGNED *)&(_A)[2] == *(ULONG UNALIGNED *)&(_B)[2]) && \
(*(USHORT UNALIGNED *)(_A) == *(USHORT UNALIGNED *)(_B))) \
{ \
*(_Result) = 0; \
} \
else \
{ \
*(_Result) = 1; \
} \
}
#define ETH_COPY_NETWORK_ADDRESS(_D, _S) \
{ \
*((ULONG UNALIGNED *)(_D)) = *((ULONG UNALIGNED *)(_S)); \
*((USHORT UNALIGNED *)((UCHAR *)(_D) + 4)) = *((USHORT UNALIGNED *)((UCHAR *)(_S) + 4)); \
}
#define FDDI_LENGTH_OF_LONG_ADDRESS 6
#define FDDI_LENGTH_OF_SHORT_ADDRESS 2
#define FDDI_IS_BROADCAST(Address, AddressLength, Result) \
*Result = ((*(PUCHAR)(Address) == (UCHAR)0xFF) && \
(*((PUCHAR)(Address) + 1) == (UCHAR)0xFF))
#define FDDI_IS_MULTICAST(Address, AddressLength, Result) \
*Result = (BOOLEAN)(*(UCHAR *)(Address) & (UCHAR)0x01)
#define FDDI_IS_SMT(FcByte, Result) \
{ \
*Result = ((FcByte & ((UCHAR)0xf0)) == 0x40); \
}
#define FDDI_COMPARE_NETWORK_ADDRESSES(_A, _B, _Length, _Result) \
{ \
if (*(USHORT UNALIGNED *)(_A) > *(USHORT UNALIGNED *)(_B)) \
{ \
*(_Result) = 1; \
} \
else if (*(USHORT UNALIGNED *)(_A) < *(USHORT UNALIGNED *)(_B)) \
{ \
*(_Result) = (UINT)-1; \
} \
else if (_Length == 2) \
{ \
*(_Result) = 0; \
} \
else if (*(ULONG UNALIGNED *)((PUCHAR)(_A) + 2) > *(ULONG UNALIGNED *)((PUCHAR)(_B) + 2)) \
{ \
*(_Result) = 1; \
} \
else if (*(ULONG UNALIGNED *)((PUCHAR)(_A) + 2) < *(ULONG UNALIGNED *)((PUCHAR)(_B) + 2)) \
{ \
*(_Result) = (UINT)-1; \
} \
else \
{ \
*(_Result) = 0; \
} \
}
#define FDDI_COMPARE_NETWORK_ADDRESSES_EQ(_A, _B, _Length, _Result) \
{ \
if ((*(USHORT UNALIGNED *)(_A) == *(USHORT UNALIGNED *)(_B)) && \
(((_Length) == 2) || \
(*(ULONG UNALIGNED *)((PUCHAR)(_A) + 2) == *(ULONG UNALIGNED *)((PUCHAR)(_B) + 2)))) \
{ \
*(_Result) = 0; \
} \
else \
{ \
*(_Result) = 1; \
} \
}
#define FDDI_COPY_NETWORK_ADDRESS(D, S, AddressLength) \
{ \
PCHAR _D = (D); \
PCHAR _S = (S); \
UINT _C = (AddressLength); \
for ( ; _C > 0 ; _D++, _S++, _C--) \
{ \
*_D = *_S; \
} \
}
#define TR_LENGTH_OF_FUNCTIONAL 4
#define TR_LENGTH_OF_ADDRESS 6
typedef ULONG TR_FUNCTIONAL_ADDRESS;
typedef ULONG TR_GROUP_ADDRESS;
#define TR_IS_NOT_DIRECTED(_Address, _Result) \
{ \
*(_Result) = (BOOLEAN)((_Address)[0] & 0x80); \
}
#define TR_IS_FUNCTIONAL(_Address, _Result) \
{ \
*(_Result) = (BOOLEAN)(((_Address)[0] & 0x80) && !((_Address)[2] & 0x80)); \
}
#define TR_IS_GROUP(_Address, _Result) \
{ \
*(_Result) = (BOOLEAN)((_Address)[0] & (_Address)[2] & 0x80); \
}
#define TR_IS_SOURCE_ROUTING(_Address, _Result) \
{ \
*(_Result) = (BOOLEAN)((_Address)[0] & 0x80); \
}
#define TR_IS_MAC_FRAME(_PacketHeader) ((((PUCHAR)_PacketHeader)[1] & 0xFC) == 0)
#define TR_IS_BROADCAST(_Address, _Result) \
{ \
*(_Result) = (BOOLEAN)(((*(UNALIGNED USHORT *)&(_Address)[0] == 0xFFFF) || \
(*(UNALIGNED USHORT *)&(_Address)[0] == 0x00C0)) && \
(*(UNALIGNED ULONG *)&(_Address)[2] == 0xFFFFFFFF)); \
}
#define TR_COMPARE_NETWORK_ADDRESSES(_A, _B, _Result) \
{ \
if (*(ULONG UNALIGNED *)&(_A)[2] > *(ULONG UNALIGNED *)&(_B)[2]) \
{ \
*(_Result) = 1; \
} \
else if (*(ULONG UNALIGNED *)&(_A)[2] < *(ULONG UNALIGNED *)&(_B)[2]) \
{ \
*(_Result) = (UINT)-1; \
} \
else if (*(USHORT UNALIGNED *)(_A) > *(USHORT UNALIGNED *)(_B)) \
{ \
*(_Result) = 1; \
} \
else if (*(USHORT UNALIGNED *)(_A) < *(USHORT UNALIGNED *)(_B)) \
{ \
*(_Result) = (UINT)-1; \
} \
else \
{ \
*(_Result) = 0; \
} \
}
#define TR_COPY_NETWORK_ADDRESS(_D, _S) \
{ \
*((ULONG UNALIGNED *)(_D)) = *((ULONG UNALIGNED *)(_S)); \
*((USHORT UNALIGNED *)((UCHAR *)(_D)+4)) = *((USHORT UNALIGNED *)((UCHAR *)(_S) + 4)); \
}
#define TR_COMPARE_NETWORK_ADDRESSES_EQ(_A, _B, _Result) \
{ \
if ((*(ULONG UNALIGNED *)&(_A)[2] == *(ULONG UNALIGNED *)&(_B)[2]) && \
(*(USHORT UNALIGNED *)&(_A)[0] == *(USHORT UNALIGNED *)&(_B)[0])) \
{ \
*(_Result) = 0; \
} \
else \
{ \
*(_Result) = 1; \
} \
}
#pragma pack(pop)
#ifdef __cplusplus
}
#endif
#endif /* __XFILTER_H */

View File

@ -0,0 +1,195 @@
# Makefile.in
#
# This file is part of a free library building Windows NT drivers.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# start config section
SHELL = @SHELL@
srcdir = @srcdir@
VPATH = @srcdir@
host_alias = @host_alias@
build_alias = @build_alias@
target_alias = @target_alias@
prefix = @prefix@
includedir:=@includedir@
program_transform_name = @program_transform_name@
exec_prefix = @exec_prefix@
libdir:=@libdir@
bindir = @bindir@
ifeq ($(target_alias),$(host_alias))
ifeq ($(build_alias),$(host_alias))
tooldir:=$(exec_prefix)
else
tooldir:=$(exec_prefix)/$(target_alias)
endif
else
tooldir:=$(exec_prefix)/$(target_alias)
endif
datadir = @datadir@
infodir = @infodir@
ifneq (,$(findstring cygwin,$(target_alias)))
inst_includedir:=$(tooldir)/include/ddk
inst_libdir:=$(tooldir)/lib
else
inst_includedir:=$(includedir)/ddk
inst_libdir:=$(libdir)
endif
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
mkinstalldirs = mkdir -p
CC = @CC@
CC_FOR_TARGET = $(CC)
DLLTOOL = @DLLTOOL@
DLLTOOL_FLAGS = --as=$(AS) -k
AS = @AS@
AS_FOR_TARGET = $(AS_FOR_TARGET)
WINDRES = @WINDRES@
# Depending on if we build as part of winsup or mingw we need to
# add additional include paths in order to get the correct headers
# from the C library.
BUILDENV = @BUILDENV@
ifeq ($(BUILDENV), cygwin)
# winsup/include
# winsup/../newlib/libc/include
# winsup/../newlib/libc/sys/cygwin
EXTRA_INCLUDES = -I$(srcdir)/../../include -I$(srcdir)/../../../newlib/libc/include -I$(srcdir)/../../../newlib/libc/sys/cygwin
endif
ifeq ($(BUILDENV), mingw)
EXTRA_INCLUDES = -I$(srcdir)/../../mingw/include
endif
INCLUDES = -I$(srcdir)/../include $(EXTRA_INCLUDES)
CFLAGS = @CFLAGS@
ALL_CFLAGS = $(CFLAGS) $(INCLUDES)
RANLIB = @RANLIB@
AR = @AR@
LD = @LD@
# end config section
# headers
HEADERS = $(notdir $(wildcard $(srcdir)/../include/*.h))
# libraries
DEF_FILES = $(notdir $(wildcard $(srcdir)/*.def))
IMPLIBS = $(addprefix lib,$(subst .def,.a,$(DEF_FILES)))
LIBS = $(IMPLIBS)
DISTFILES = Makefile.in $(DEF_FILES)
.NOTPARALLEL:
# targets
all: $(LIBS)
TEST_OPTIONS = $(ALL_CFLAGS) -Wall -pedantic -Wsystem-headers -c $(srcdir)/test.c -o test.o
.PHONY: test
test:
@echo "Testing ddk..."
@for lang in c c++ objective-c ; do \
echo "$$lang..."; \
$(CC) -x$$lang $(TEST_OPTIONS) ; \
echo "$$lang UNICODE..."; \
$(CC) -x$$lang -DUNICODE $(TEST_OPTIONS) ; \
done
@echo "windres..."
@$(WINDRES) --include-dir $(INCDIR) -i $(srcdir)/res.rc -o test.o
@echo "windres UNICODE..."
@$(WINDRES) --define UNICODE --include-dir $(INCDIR) -i $(srcdir)/res.rc -o test.o
@rm -f test.o
# make rules
.SUFFIXES: .c .o .def .a
.c.o:
$(CC) -c $(ALL_CFLAGS) -o $@ $<
lib%.a : %.def %.o
$(DLLTOOL) $(DLLTOOL_FLAGS) --output-lib $@ --def $(srcdir)/$*.def
$(AR) r $@ $*.o
$(RANLIB) $@
lib%.a: %.def
$(DLLTOOL) $(DLLTOOL_FLAGS) --output-lib $@ --def $<
lib%.a: %.o
$(AR) rc $@ $*.o
$(RANLIB) $@
# install headers and libraries in a target specified directory.
install: install-libraries install-headers
install-libraries: all
$(mkinstalldirs) $(inst_libdir)
for i in $(LIBS); do \
$(INSTALL_DATA) $$i $(inst_libdir)/$$i ; \
done
install-headers:
$(mkinstalldirs) $(inst_includedir)
for i in $(HEADERS); do \
$(INSTALL_DATA) $(srcdir)/../../ddk/include/$$i $(inst_includedir)/$$i ; \
done
# uninstall headers and libraries from a target specified directory
uninstall: uninstall-libraries uninstall-headers
uninstall-libraries:
@for i in $(LIBS); do \
rm -f $(inst_libdir)/$$i ; \
done
rmdir $(inst_libdir)
uninstall-headers:
@for i in $(HEADERS); do \
rm -r $(inst_includedir)/$$i ; \
done
rmdir $(inst_includedir)
dist:
mkdir $(distdir)/include
chmod 755 $(distdir)/include
@for i in $(HEADERS); do \
cp -p $(srcdir)/../../ddk/include/$$i $(distdir)/include/ddk/$$i ; \
done
mkdir $(distdir)/lib
chmod 755 $(distdir)/lib
@for i in $(DISTFILES); do \
cp -p $(srcdir)/$$i $(distdir)/lib/$$i ; \
done
Makefile: Makefile.in ../../config.status ../../configure
cd ../..; $(SHELL) config.status
# clean
mostlyclean:
rm -f *~ *.o *.s
clean:
rm -f *.o *.a *.s *~
distclean: clean
rm -f config.cache config.status config.log Makefile
maintainer-clean: distclean

View File

@ -0,0 +1,8 @@
LIBRARY apcups.dll
EXPORTS
UPSCancelWait@0
UPSGetState@0
UPSInit@0
UPSStop@0
UPSTurnOff@4
UPSWaitForStateChange@8

View File

@ -0,0 +1,394 @@
LIBRARY cfgmgr32.dll
EXPORTS
;CMP_Init_Detection
;CMP_RegisterNotification
;CMP_Report_LogOn
;CMP_UnregisterNotification
CMP_WaitNoPendingInstallEvents@4
;CMP_WaitServicesAvailable
CM_Add_Empty_Log_Conf@16
CM_Add_Empty_Log_Conf_Ex@20
CM_Add_IDA@16
CM_Add_IDW@16
CM_Add_ID_ExA@16
CM_Add_ID_ExW@16
;CM_Add_Range
CM_Add_Res_Des@24
CM_Add_Res_Des_Ex@28
CM_Connect_MachineA@8
CM_Connect_MachineW@8
;CM_Create_DevNodeA
;CM_Create_DevNodeW
;CM_Create_DevNode_ExA
;CM_Create_DevNode_ExW
;CM_Create_Range_List
;CM_Delete_Class_Key
;CM_Delete_Class_Key_Ex
;CM_Delete_DevNode_Key
;CM_Delete_DevNode_Key_Ex
;CM_Delete_Range
;CM_Detect_Resource_Conflict
;CM_Detect_Resource_Conflict_Ex
;CM_Disable_DevNode
;CM_Disable_DevNode_Ex
CM_Disconnect_Machine@4
;CM_Dup_Range_List
;CM_Enable_DevNode
;CM_Enable_DevNode_Ex
CM_Enumerate_Classes@12
CM_Enumerate_Classes_Ex@16
CM_Enumerate_EnumeratorsA@16
CM_Enumerate_EnumeratorsW@16
CM_Enumerate_Enumerators_ExA@20
CM_Enumerate_Enumerators_ExW@20
;CM_Find_Range
;CM_First_Range
CM_Free_Log_Conf@8
CM_Free_Log_Conf_Ex@12
CM_Free_Log_Conf_Handle@4
;CM_Free_Range_List
CM_Free_Res_Des@12
CM_Free_Res_Des_Ex@16
CM_Free_Res_Des_Handle@4
CM_Free_Resource_Conflict_Handle@4
CM_Get_Child@12
CM_Get_Child_Ex@16
;CM_Get_Class_Key_NameA
;CM_Get_Class_Key_NameW
;CM_Get_Class_Key_Name_ExA
;CM_Get_Class_Key_Name_ExW
;CM_Get_Class_NameA
;CM_Get_Class_NameW
;CM_Get_Class_Name_ExA
;CM_Get_Class_Name_ExW
;CM_Get_Class_Registry_PropertyA
;CM_Get_Class_Registry_PropertyW
CM_Get_Depth@12
CM_Get_Depth_Ex@16
;CM_Get_DevNode_Registry_PropertyA
;CM_Get_DevNode_Registry_PropertyW
;CM_Get_DevNode_Registry_Property_ExA
;CM_Get_DevNode_Registry_Property_ExW
CM_Get_DevNode_Status@16
CM_Get_DevNode_Status_Ex@20
CM_Get_Device_IDA@16
CM_Get_Device_IDW@16
CM_Get_Device_ID_ExA@20
CM_Get_Device_ID_ExW@20
CM_Get_Device_ID_ListA@16
CM_Get_Device_ID_ListW@16
CM_Get_Device_ID_List_ExA@20
CM_Get_Device_ID_List_ExW@20
CM_Get_Device_ID_List_SizeA@12
CM_Get_Device_ID_List_SizeW@12
CM_Get_Device_ID_List_Size_ExA@16
CM_Get_Device_ID_List_Size_ExW@16
CM_Get_Device_ID_Size@12
CM_Get_Device_ID_Size_Ex@16
;CM_Get_Device_Interface_AliasA
;CM_Get_Device_Interface_AliasW
;CM_Get_Device_Interface_Alias_ExA
;CM_Get_Device_Interface_Alias_ExW
;CM_Get_Device_Interface_ListA
;CM_Get_Device_Interface_ListW
;CM_Get_Device_Interface_List_ExA
;CM_Get_Device_Interface_List_ExW
;CM_Get_Device_Interface_List_SizeA
;CM_Get_Device_Interface_List_SizeW
;CM_Get_Device_Interface_List_Size_ExA
;CM_Get_Device_Interface_List_Size_ExW
CM_Get_First_Log_Conf@12
CM_Get_First_Log_Conf_Ex@16
;CM_Get_Global_State
;CM_Get_Global_State_Ex
;CM_Get_HW_Prof_FlagsA
;CM_Get_HW_Prof_FlagsW
;CM_Get_HW_Prof_Flags_ExA
;CM_Get_HW_Prof_Flags_ExW
;CM_Get_Hardware_Profile_InfoA
;CM_Get_Hardware_Profile_InfoW
;CM_Get_Hardware_Profile_Info_ExA
;CM_Get_Hardware_Profile_Info_ExW
CM_Get_Log_Conf_Priority@12
CM_Get_Log_Conf_Priority_Ex@16
CM_Get_Next_Log_Conf@12
CM_Get_Next_Log_Conf_Ex@16
CM_Get_Next_Res_Des@20
CM_Get_Next_Res_Des_Ex@24
CM_Get_Parent@12
CM_Get_Parent_Ex@16
CM_Get_Res_Des_Data@16
CM_Get_Res_Des_Data_Ex@20
CM_Get_Res_Des_Data_Size@12
CM_Get_Res_Des_Data_Size_Ex@16
CM_Get_Resource_Conflict_Count@8
CM_Get_Resource_Conflict_DetailsA@12
CM_Get_Resource_Conflict_DetailsW@12
CM_Get_Sibling@12
CM_Get_Sibling_Ex@16
CM_Get_Version@0
CM_Get_Version_Ex@4
;CM_Intersect_Range_List
;CM_Invert_Range_List
;CM_Is_Dock_Station_Present
;CM_Is_Dock_Station_Present_Ex
CM_Locate_DevNodeA@12
CM_Locate_DevNodeW@12
CM_Locate_DevNode_ExA@16
CM_Locate_DevNode_ExW@16
;CM_Merge_Range_List
CM_Modify_Res_Des@24
CM_Modify_Res_Des_Ex@28
;CM_Move_DevNode
;CM_Move_DevNode_Ex
;CM_Next_Range
;CM_Open_Class_KeyA
;CM_Open_Class_KeyW
;CM_Open_Class_Key_ExA
;CM_Open_Class_Key_ExW
;CM_Open_DevNode_Key
;CM_Open_DevNode_Key_Ex
CM_Query_And_Remove_SubTreeA@20
CM_Query_And_Remove_SubTreeW@20
CM_Query_And_Remove_SubTree_ExA@0
CM_Query_And_Remove_SubTree_ExW@0
;CM_Query_Arbitrator_Free_Data
;CM_Query_Arbitrator_Free_Data_Ex
;CM_Query_Arbitrator_Free_Size
;CM_Query_Arbitrator_Free_Size_Ex
;CM_Query_Remove_SubTree
;CM_Query_Remove_SubTree_Ex
CM_Query_Resource_Conflict_List@28
CM_Reenumerate_DevNode@8
CM_Reenumerate_DevNode_Ex@12
;CM_Register_Device_Driver
;CM_Register_Device_Driver_Ex
;CM_Register_Device_InterfaceA
;CM_Register_Device_InterfaceW
;CM_Register_Device_Interface_ExA
;CM_Register_Device_Interface_ExW
;CM_Remove_SubTree
;CM_Remove_SubTree_Ex
;CM_Request_Eject_PC
;CM_Request_Eject_PC_Ex
;CM_Run_Detection
;CM_Run_Detection_Ex
;CM_Set_Class_Registry_PropertyA
;CM_Set_Class_Registry_PropertyW
;CM_Set_DevNode_Problem
;CM_Set_DevNode_Problem_Ex
;CM_Set_DevNode_Registry_PropertyA
;CM_Set_DevNode_Registry_PropertyW
;CM_Set_DevNode_Registry_Property_ExA
;CM_Set_DevNode_Registry_Property_ExW
;CM_Set_HW_Prof
;CM_Set_HW_Prof_Ex
;CM_Set_HW_Prof_FlagsA
;CM_Set_HW_Prof_FlagsW
;CM_Set_HW_Prof_Flags_ExA
;CM_Set_HW_Prof_Flags_ExW
;CM_Setup_DevNode
;CM_Setup_DevNode_Ex
;CM_Test_Range_Available
;CM_Uninstall_DevNode
;CM_Uninstall_DevNode_Ex
;CM_Unregister_Device_InterfaceA
;CM_Unregister_Device_InterfaceW
;CM_Unregister_Device_Interface_ExA
;CM_Unregister_Device_Interface_ExW
;CMP_Init_Detection
;CMP_RegisterNotification
;CMP_Report_LogOn
;CMP_UnregisterNotification
CMP_WaitNoPendingInstallEvents@4
;CMP_WaitServicesAvailable
CM_Add_Empty_Log_Conf@16
CM_Add_Empty_Log_Conf_Ex@20
CM_Add_IDA@16
CM_Add_IDW@16
CM_Add_ID_ExA@16
CM_Add_ID_ExW@16
;CM_Add_Range
CM_Add_Res_Des@24
CM_Add_Res_Des_Ex@28
CM_Connect_MachineA@8
CM_Connect_MachineW@8
;CM_Create_DevNodeA
;CM_Create_DevNodeW
;CM_Create_DevNode_ExA
;CM_Create_DevNode_ExW
;CM_Create_Range_List
;CM_Delete_Class_Key
;CM_Delete_Class_Key_Ex
;CM_Delete_DevNode_Key
;CM_Delete_DevNode_Key_Ex
;CM_Delete_Range
;CM_Detect_Resource_Conflict
;CM_Detect_Resource_Conflict_Ex
;CM_Disable_DevNode
;CM_Disable_DevNode_Ex
CM_Disconnect_Machine@4
;CM_Dup_Range_List
;CM_Enable_DevNode
;CM_Enable_DevNode_Ex
CM_Enumerate_Classes@12
CM_Enumerate_Classes_Ex@16
CM_Enumerate_EnumeratorsA@16
CM_Enumerate_EnumeratorsW@16
CM_Enumerate_Enumerators_ExA@20
CM_Enumerate_Enumerators_ExW@20
;CM_Find_Range
;CM_First_Range
CM_Free_Log_Conf@8
CM_Free_Log_Conf_Ex@12
CM_Free_Log_Conf_Handle@4
;CM_Free_Range_List
CM_Free_Res_Des@12
CM_Free_Res_Des_Ex@16
CM_Free_Res_Des_Handle@4
CM_Free_Resource_Conflict_Handle@4
CM_Get_Child@12
CM_Get_Child_Ex@16
;CM_Get_Class_Key_NameA
;CM_Get_Class_Key_NameW
;CM_Get_Class_Key_Name_ExA
;CM_Get_Class_Key_Name_ExW
;CM_Get_Class_NameA
;CM_Get_Class_NameW
;CM_Get_Class_Name_ExA
;CM_Get_Class_Name_ExW
;CM_Get_Class_Registry_PropertyA
;CM_Get_Class_Registry_PropertyW
CM_Get_Depth@12
CM_Get_Depth_Ex@16
;CM_Get_DevNode_Registry_PropertyA
;CM_Get_DevNode_Registry_PropertyW
;CM_Get_DevNode_Registry_Property_ExA
;CM_Get_DevNode_Registry_Property_ExW
CM_Get_DevNode_Status@16
CM_Get_DevNode_Status_Ex@20
CM_Get_Device_IDA@16
CM_Get_Device_IDW@16
CM_Get_Device_ID_ExA@20
CM_Get_Device_ID_ExW@20
CM_Get_Device_ID_ListA@16
CM_Get_Device_ID_ListW@16
CM_Get_Device_ID_List_ExA@20
CM_Get_Device_ID_List_ExW@20
CM_Get_Device_ID_List_SizeA@12
CM_Get_Device_ID_List_SizeW@12
CM_Get_Device_ID_List_Size_ExA@16
CM_Get_Device_ID_List_Size_ExW@16
CM_Get_Device_ID_Size@12
CM_Get_Device_ID_Size_Ex@16
;CM_Get_Device_Interface_AliasA
;CM_Get_Device_Interface_AliasW
;CM_Get_Device_Interface_Alias_ExA
;CM_Get_Device_Interface_Alias_ExW
;CM_Get_Device_Interface_ListA
;CM_Get_Device_Interface_ListW
;CM_Get_Device_Interface_List_ExA
;CM_Get_Device_Interface_List_ExW
;CM_Get_Device_Interface_List_SizeA
;CM_Get_Device_Interface_List_SizeW
;CM_Get_Device_Interface_List_Size_ExA
;CM_Get_Device_Interface_List_Size_ExW
CM_Get_First_Log_Conf@12
CM_Get_First_Log_Conf_Ex@16
;CM_Get_Global_State
;CM_Get_Global_State_Ex
;CM_Get_HW_Prof_FlagsA
;CM_Get_HW_Prof_FlagsW
;CM_Get_HW_Prof_Flags_ExA
;CM_Get_HW_Prof_Flags_ExW
;CM_Get_Hardware_Profile_InfoA
;CM_Get_Hardware_Profile_InfoW
;CM_Get_Hardware_Profile_Info_ExA
;CM_Get_Hardware_Profile_Info_ExW
CM_Get_Log_Conf_Priority@12
CM_Get_Log_Conf_Priority_Ex@16
CM_Get_Next_Log_Conf@12
CM_Get_Next_Log_Conf_Ex@16
CM_Get_Next_Res_Des@20
CM_Get_Next_Res_Des_Ex@24
CM_Get_Parent@12
CM_Get_Parent_Ex@16
CM_Get_Res_Des_Data@16
CM_Get_Res_Des_Data_Ex@20
CM_Get_Res_Des_Data_Size@12
CM_Get_Res_Des_Data_Size_Ex@16
CM_Get_Resource_Conflict_Count@8
CM_Get_Resource_Conflict_DetailsA@12
CM_Get_Resource_Conflict_DetailsW@12
CM_Get_Sibling@12
CM_Get_Sibling_Ex@16
CM_Get_Version@0
CM_Get_Version_Ex@4
;CM_Intersect_Range_List
;CM_Invert_Range_List
;CM_Is_Dock_Station_Present
;CM_Is_Dock_Station_Present_Ex
CM_Locate_DevNodeA@12
CM_Locate_DevNodeW@12
CM_Locate_DevNode_ExA@16
CM_Locate_DevNode_ExW@16
;CM_Merge_Range_List
CM_Modify_Res_Des@24
CM_Modify_Res_Des_Ex@28
;CM_Move_DevNode
;CM_Move_DevNode_Ex
;CM_Next_Range
;CM_Open_Class_KeyA
;CM_Open_Class_KeyW
;CM_Open_Class_Key_ExA
;CM_Open_Class_Key_ExW
;CM_Open_DevNode_Key
;CM_Open_DevNode_Key_Ex
CM_Query_And_Remove_SubTreeA@20
CM_Query_And_Remove_SubTreeW@20
CM_Query_And_Remove_SubTree_ExA@0
CM_Query_And_Remove_SubTree_ExW@0
;CM_Query_Arbitrator_Free_Data
;CM_Query_Arbitrator_Free_Data_Ex
;CM_Query_Arbitrator_Free_Size
;CM_Query_Arbitrator_Free_Size_Ex
;CM_Query_Remove_SubTree
;CM_Query_Remove_SubTree_Ex
CM_Query_Resource_Conflict_List@28
CM_Reenumerate_DevNode@8
CM_Reenumerate_DevNode_Ex@12
;CM_Register_Device_Driver
;CM_Register_Device_Driver_Ex
;CM_Register_Device_InterfaceA
;CM_Register_Device_InterfaceW
;CM_Register_Device_Interface_ExA
;CM_Register_Device_Interface_ExW
;CM_Remove_SubTree
;CM_Remove_SubTree_Ex
;CM_Request_Eject_PC
;CM_Request_Eject_PC_Ex
;CM_Run_Detection
;CM_Run_Detection_Ex
;CM_Set_Class_Registry_PropertyA
;CM_Set_Class_Registry_PropertyW
;CM_Set_DevNode_Problem
;CM_Set_DevNode_Problem_Ex
;CM_Set_DevNode_Registry_PropertyA
;CM_Set_DevNode_Registry_PropertyW
;CM_Set_DevNode_Registry_Property_ExA
;CM_Set_DevNode_Registry_Property_ExW
;CM_Set_HW_Prof
;CM_Set_HW_Prof_Ex
;CM_Set_HW_Prof_FlagsA
;CM_Set_HW_Prof_FlagsW
;CM_Set_HW_Prof_Flags_ExA
;CM_Set_HW_Prof_Flags_ExW
;CM_Setup_DevNode
;CM_Setup_DevNode_Ex
;CM_Test_Range_Available
;CM_Uninstall_DevNode
;CM_Uninstall_DevNode_Ex
;CM_Unregister_Device_InterfaceA
;CM_Unregister_Device_InterfaceW
;CM_Unregister_Device_Interface_ExA
;CM_Unregister_Device_Interface_ExW

View File

@ -0,0 +1,9 @@
LIBRARY dxapi.sys
EXPORTS
;_DxApi@20
;_DxApiGetVersion@0
;_DxApiInitialize@32
;_DxAutoflipUpdate@20
;_DxEnableIRQ@8
;_DxLoseObject@8
;_DxUpdateCapture@12

View File

@ -0,0 +1,94 @@
LIBRARY hal.dll
EXPORTS
@ExAcquireFastMutex@4
@ExReleaseFastMutex@4
@ExTryToAcquireFastMutex@4
;HalAcquireDisplayOwnership
;HalAdjustResourceList
;HalAllProcessorsStarted
;HalAllocateAdapterChannel
HalAllocateCommonBuffer@16
;HalAllocateCrashDumpRegisters
HalAssignSlotResources@32
;HalBeginSystemInterrupt
;HalCalibratePerformanceCounter
;HalClearSoftwareInterrupt
;HalDisableSystemInterrupt
;HalDisplayString
;HalEnableSystemInterrupt
;HalEndSystemInterrupt
;HalFlushCommonBuffer
HalFreeCommonBuffer@20
HalGetAdapter@8
HalGetBusData@20
HalGetBusDataByOffset@24
;HalGetEnvironmentVariable
HalGetInterruptVector@24
;HalHandleNMI
;HalInitSystem
;HalInitializeProcessor
;HalMakeBeep
;HalProcessorIdle
;HalQueryDisplayParameters
;HalQueryRealTimeClock
HalReadDmaCounter@4
;HalReportResourceUsage
;HalRequestIpi
;HalRequestSoftwareInterrupt
;HalReturnToFirmware
HalSetBusData@20
HalSetBusDataByOffset@24
;HalSetDisplayParameters
;HalSetEnvironmentVariable
;HalSetProfileInterval
;HalSetRealTimeClock
;HalSetTimeIncrement
;HalStartNextProcessor
;HalStartProfileInterrupt
;HalStopProfileInterrupt
;HalSystemVectorDispatchEntry
HalTranslateBusAddress@20
;IoAssignDriveLetters
IoFlushAdapterBuffers@24
IoFreeAdapterChannel@4
IoFreeMapRegisters@12
IoMapTransfer@24
IoReadPartitionTable@16
IoSetPartitionInformation@16
IoWritePartitionTable@20
;KdComPortInUse DATA
@KeAcquireInStackQueuedSpinLock@8
;KeAcquireInStackQueuedSpinLockRaiseToSynch
;KeAcquireQueuedSpinLock
;KeAcquireQueuedSpinLockRaiseToSynch
KeAcquireSpinLock@8
;KeAcquireSpinLockRaiseToSynch
;KeFlushWriteBuffer
KeGetCurrentIrql@0
KeLowerIrql@4
KeQueryPerformanceCounter@4
KeRaiseIrql@8
KeRaiseIrqlToDpcLevel@0
;KeRaiseIrqlToSynchLevel
@KeReleaseInStackQueuedSpinLock@4
;KeReleaseQueuedSpinLock
KeReleaseSpinLock@8
KeStallExecutionProcessor@4
;KeTryToAcquireQueuedSpinLock
;KeTryToAcquireQueuedSpinLockRaiseToSynch
;KfAcquireSpinLock
;KfLowerIrql
;KfRaiseIrql
;KfReleaseSpinLock
READ_PORT_BUFFER_UCHAR@12
READ_PORT_BUFFER_ULONG@12
READ_PORT_BUFFER_USHORT@12
READ_PORT_UCHAR@4
READ_PORT_ULONG@4
READ_PORT_USHORT@4
WRITE_PORT_BUFFER_UCHAR@12
WRITE_PORT_BUFFER_ULONG@12
WRITE_PORT_BUFFER_USHORT@12
WRITE_PORT_UCHAR@8
WRITE_PORT_ULONG@8
WRITE_PORT_USHORT@8

View File

@ -0,0 +1,47 @@
LIBRARY hid.dll
EXPORTS
;HidD_FlushQueue
;HidD_FreePreparsedData
;HidD_GetAttributes
;HidD_GetConfiguration
;HidD_GetFeature
;HidD_GetHidGuid
;HidD_GetIndexedString
;HidD_GetInputReport
;HidD_GetManufacturerString
;HidD_GetMsGenreDescriptor
;HidD_GetNumInputBuffers
;HidD_GetPhysicalDescriptor
;HidD_GetPreparsedData
;HidD_GetProductString
;HidD_GetSerialNumberString
;HidD_Hello
;HidD_SetConfiguration
;HidD_SetFeature
;HidD_SetNumInputBuffers
;HidD_SetOutputReport
;HidP_GetButtonCaps
HidP_GetCaps@8
HidP_GetData@24
HidP_GetExtendedAttributes@20
HidP_GetLinkCollectionNodes@12
HidP_GetScaledUsageValue@32
HidP_GetSpecificButtonCaps@28
HidP_GetSpecificValueCaps@28
HidP_GetUsageValue@32
HidP_GetUsageValueArray@36
HidP_GetUsages@32
HidP_GetUsagesEx@28
;HidP_GetValueCaps
HidP_InitializeReportForID@20
HidP_MaxDataListLength@8
HidP_MaxUsageListLength@12
HidP_SetData@24
HidP_SetScaledUsageValue@32
HidP_SetUsageValue@32
HidP_SetUsageValueArray@36
HidP_SetUsages@32
HidP_TranslateUsagesToI8042ScanCodes@24
HidP_UnsetUsages@32
HidP_UsageListDifference@20
;HidservInstaller

View File

@ -0,0 +1,32 @@
LIBRARY hidparse.sys
EXPORTS
;HidP_FreeCollectionDescription
;HidP_GetButtonCaps
HidP_GetCaps@8
;HidP_GetCollectionDescription
HidP_GetData@24
HidP_GetExtendedAttributes@20
HidP_GetLinkCollectionNodes@12
HidP_GetScaledUsageValue@32
HidP_GetSpecificButtonCaps@28
HidP_GetSpecificValueCaps@28
HidP_GetUsageValue@32
HidP_GetUsageValueArray@36
HidP_GetUsages@32
HidP_GetUsagesEx@28
;HidP_GetValueCaps
HidP_InitializeReportForID@20
HidP_MaxDataListLength@8
HidP_MaxUsageListLength@12
HidP_SetData@24
HidP_SetScaledUsageValue@32
HidP_SetUsageValue@32
HidP_SetUsageValueArray@36
HidP_SetUsages@32
;HidP_SysPowerCaps
;HidP_SysPowerEvent
HidP_TranslateUsageAndPagesToI8042ScanCodes@24
HidP_TranslateUsagesToI8042ScanCodes@24
HidP_UnsetUsages@32
HidP_UsageAndPageListDifference@20
HidP_UsageListDifference@20

View File

@ -0,0 +1,7 @@
LIBRARY mcd.sys
EXPORTS
ChangerClassAllocatePool@8
ChangerClassDebugPrint@8
ChangerClassFreePool@4
ChangerClassInitialize@12
ChangerClassSendSrbSynchronous@20

View File

@ -0,0 +1,277 @@
LIBRARY ndis.sys
EXPORTS
;ArcFilterDprIndicateReceive
;ArcFilterDprIndicateReceiveComplete
;EthFilterDprIndicateReceive
;EthFilterDprIndicateReceiveComplete
;FddiFilterDprIndicateReceive
;FddiFilterDprIndicateReceiveComplete
NDIS_BUFFER_TO_SPAN_PAGES@4
NdisAcquireReadWriteLock@12
;NdisAcquireSpinLock
NdisAdjustBufferLength@8
NdisAllocateBuffer@20
NdisAllocateBufferPool@12
;NdisAllocateFromBlockPool
NdisAllocateMemory@16
NdisAllocateMemoryWithTag@12
NdisAllocatePacket@12
NdisAllocatePacketPool@16
NdisAllocatePacketPoolEx@20
;NdisAllocateSpinLock
NdisAnsiStringToUnicodeString@8
NdisBufferLength@4
NdisBufferVirtualAddress@4
;NdisCancelSendPackets
;NdisCancelTimer
NdisClAddParty@16
NdisClCloseAddressFamily@4
NdisClCloseCall@16
NdisClDeregisterSap@4
NdisClDropParty@12
;NdisClGetProtocolVcContextFromTapiCallId
NdisClIncomingCallComplete@12
NdisClMakeCall@16
NdisClModifyCallQoS@8
NdisClOpenAddressFamily@24
NdisClRegisterSap@16
NdisCloseAdapter@8
NdisCloseConfiguration@4
;NdisCloseFile
NdisCmActivateVc@8
NdisCmAddPartyComplete@16
NdisCmCloseAddressFamilyComplete@8
NdisCmCloseCallComplete@12
NdisCmDeactivateVc@4
NdisCmDeregisterSapComplete@8
NdisCmDispatchCallConnected@4
NdisCmDispatchIncomingCall@12
NdisCmDispatchIncomingCallQoSChange@8
NdisCmDispatchIncomingCloseCall@16
NdisCmDispatchIncomingDropParty@16
NdisCmDropPartyComplete@8
NdisCmMakeCallComplete@20
NdisCmModifyCallQoSComplete@12
NdisCmOpenAddressFamilyComplete@12
NdisCmRegisterAddressFamily@16
NdisCmRegisterSapComplete@12
;NdisCoAssignInstanceName
NdisCoCreateVc@16
NdisCoDeleteVc@4
;NdisCoGetTapiCallId
NdisCoRequest@20
NdisCoRequestComplete@20
NdisCoSendPackets@12
;NdisCompareAnsiString DATA
;NdisCompareUnicodeString DATA
NdisCompleteBindAdapter@12
;NdisCompleteDmaTransfer
NdisCompletePnPEvent@12
NdisCompleteUnbindAdapter@8
;NdisConvertStringToAtmAddress
NdisCopyBuffer@24
NdisCopyFromPacketToPacket@24
;NdisCopyFromPacketToPacketSafe
;NdisCreateBlockPool
NdisDeregisterProtocol@8
;NdisDestroyBlockPool
;NdisDprAcquireSpinLock
NdisDprAllocatePacket@12
NdisDprAllocatePacketNonInterlocked@12
NdisDprFreePacket@4
NdisDprFreePacketNonInterlocked@4
;NdisDprReleaseSpinLock
;NdisEqualString DATA
NdisFreeBuffer@4
NdisFreeBufferPool@4
NdisFreeMemory@12
NdisFreePacket@4
NdisFreePacketPool@4
;NdisFreeSpinLock
;NdisFreeToBlockPool
;NdisGeneratePartialCancelId
NdisGetBufferPhysicalArraySize@8
NdisGetCurrentProcessorCounts@12
NdisGetCurrentProcessorCpuUsage@4
;NdisGetCurrentSystemTime
NdisGetDriverHandle@8
NdisGetFirstBufferFromPacket@20
;NdisGetFirstBufferFromPacketSafe
;NdisGetPacketCancelId
;NdisGetPoolFromPacket
NdisGetReceivedPacket@8
;NdisGetRoutineAddress
;NdisGetSharedDataAlignment
NdisGetSystemUpTime@4
;NdisGetVersion
NdisIMAssociateMiniport@8
NdisIMCancelInitializeDeviceInstance@8
NdisIMCopySendCompletePerPacketInfo@8
NdisIMCopySendPerPacketInfo@8
NdisIMDeInitializeDeviceInstance@4
NdisIMDeregisterLayeredMiniport@4
NdisIMGetBindingContext@4
;NdisIMGetCurrentPacketStack
NdisIMGetDeviceContext@4
;NdisIMInitializeDeviceInstance
NdisIMInitializeDeviceInstanceEx@12
;NdisIMNotifyPnPEvent
;NdisIMQueueMiniportCallback
NdisIMRegisterLayeredMiniport@16
;NdisIMRevertBack
;NdisIMSwitchToMiniport
;NdisImmediateReadPciSlotInformation
;NdisImmediateReadPortUchar
;NdisImmediateReadPortUlong
;NdisImmediateReadPortUshort
NdisImmediateReadSharedMemory@16
;NdisImmediateWritePciSlotInformation
;NdisImmediateWritePortUchar
;NdisImmediateWritePortUlong
;NdisImmediateWritePortUshort
NdisImmediateWriteSharedMemory@16
;NdisInitAnsiString DATA
;NdisInitUnicodeString DATA
;NdisInitializeEvent
NdisInitializeReadWriteLock@4
;NdisInitializeString
;NdisInitializeTimer
NdisInitializeWrapper@16
;NdisInterlockedAddLargeInterger DATA
;NdisInterlockedAddUlong
;NdisInterlockedDecrement
;NdisInterlockedIncrement
;NdisInterlockedInsertHeadList
;NdisInterlockedInsertTailList
;NdisInterlockedPopEntryList
;NdisInterlockedPushEntryList
;NdisInterlockedRemoveHeadList
NdisMAllocateMapRegisters@20
NdisMAllocateSharedMemory@20
NdisMAllocateSharedMemoryAsync@16
;NdisMCancelTimer
NdisMCloseLog@4
NdisMCmActivateVc@8
NdisMCmCreateVc@16
NdisMCmDeactivateVc@4
NdisMCmDeleteVc@4
NdisMCmRegisterAddressFamily@16
NdisMCmRequest@16
NdisMCoActivateVcComplete@12
NdisMCoDeactivateVcComplete@8
NdisMCoIndicateReceivePacket@12
NdisMCoIndicateStatus@20
NdisMCoReceiveComplete@4
NdisMCoRequestComplete@12
NdisMCoSendComplete@12
;NdisMCompleteBufferPhysicalMapping
NdisMCreateLog@12
NdisMDeregisterAdapterShutdownHandler@4
NdisMDeregisterDevice@4
;NdisMDeregisterDmaChannel
NdisMDeregisterInterrupt@4
NdisMDeregisterIoPortRange@16
NdisMFlushLog@4
NdisMFreeMapRegisters@4
NdisMFreeSharedMemory@20
NdisMGetDeviceProperty@24
;NdisMGetDmaAlignment
;NdisMIndicateStatus
;NdisMIndicateStatusComplete
NdisMInitializeScatterGatherDma@12
;NdisMInitializeTimer
NdisMMapIoSpace@16
;NdisMPciAssignResources
NdisMPromoteMiniport@4
NdisMQueryAdapterInstanceName@8
NdisMQueryAdapterResources@16
;NdisMQueryInformationComplete
;NdisMReadDmaCounter
NdisMRegisterAdapterShutdownHandler@12
NdisMRegisterDevice@24
;NdisMRegisterDmaChannel
NdisMRegisterInterrupt@28
NdisMRegisterIoPortRange@16
NdisMRegisterMiniport@12
NdisMRegisterUnloadHandler@8
NdisMRemoveMiniport@4
;NdisMResetComplete
;NdisMSendComplete
;NdisMSendResourcesAvailable
;NdisMSetAttributes
NdisMSetAttributesEx@20
;NdisMSetInformationComplete
NdisMSetMiniportSecondary@8
;NdisMSetPeriodicTimer
;NdisMSetTimer
NdisMSleep@4
;NdisMStartBufferPhysicalMapping
NdisMSynchronizeWithInterrupt@12
;NdisMTransferDataComplete
NdisMUnmapIoSpace@12
NdisMWanIndicateReceive@20
NdisMWanIndicateReceiveComplete@4
NdisMWanSendComplete@12
NdisMWriteLogData@12
;NdisMapFile
;NdisMatchPdoWithPacket
NdisOpenAdapter@44
NdisOpenConfiguration@12
NdisOpenConfigurationKeyByIndex@20
NdisOpenConfigurationKeyByName@16
;NdisOpenFile
NdisOpenProtocolConfiguration@12
;NdisOverrideBusNumber
NdisPacketPoolUsage@4
;NdisPacketSize
NdisQueryAdapterInstanceName@8
;NdisQueryBindInstanceName
NdisQueryBuffer@12
NdisQueryBufferOffset@12
NdisQueryBufferSafe@16
;NdisQueryMapRegisterCount
;NdisQueryPendingIOCount
;NdisReEnumerateProtocolBindings
NdisReadConfiguration@20
NdisReadEisaSlotInformation@16
NdisReadEisaSlotInformationEx@20
;NdisReadMcaPosInformation
NdisReadNetworkAddress@16
NdisReadPciSlotInformation@20
NdisReadPcmciaAttributeMemory@16
NdisRegisterProtocol@16
;NdisRegisterTdiCallBack
NdisReleaseReadWriteLock@8
;NdisReleaseSpinLock
NdisRequest@12
NdisReset@8
;NdisResetEvent
NdisReturnPackets@8
;NdisScheduleWorkItem
NdisSend@12
NdisSendPackets@12
;NdisSetEvent
;NdisSetPacketCancelId
;NdisSetPacketPoolProtocolId
;NdisSetPacketStatus
;NdisSetProtocolFilter
;NdisSetTimer
;NdisSetTimerEx
NdisSetupDmaTransfer@24
;NdisSystemProcessorCount
NdisTerminateWrapper@8
NdisTransferData@28
NdisUnchainBufferAtBack@8
NdisUnchainBufferAtFront@8
NdisUnicodeStringToAnsiString@8
;NdisUnmapFile
NdisUpcaseUnicodeString@8
NdisUpdateSharedMemory@16
;NdisWaitEvent
NdisWriteConfiguration@16
NdisWriteErrorLogEntry
NdisWriteEventLogEntry@28
NdisWritePciSlotInformation@20
NdisWritePcmciaAttributeMemory@16
;TrFilterDprIndicateReceive
;TrFilterDprIndicateReceiveComplete

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,49 @@
LIBRARY scsiport.sys
EXPORTS
DllInitialize@4
ScsiDebugPrint
ScsiPortCompleteRequest@20
;ScsiPortConvertPhysicalAddressToUlong
ScsiPortConvertUlongToPhysicalAddress@4
ScsiPortFlushDma@4
ScsiPortFreeDeviceBase@8
ScsiPortGetBusData@24
ScsiPortGetDeviceBase@24
ScsiPortGetLogicalUnit@16
ScsiPortGetPhysicalAddress@16
ScsiPortGetSrb@20
ScsiPortGetUncachedExtension@12
ScsiPortGetVirtualAddress@8
ScsiPortInitialize@16
ScsiPortIoMapTransfer@16
ScsiPortLogError@28
ScsiPortMoveMemory@12
ScsiPortNotification
ScsiPortQuerySystemTime@4
ScsiPortReadPortBufferUchar@12
ScsiPortReadPortBufferUlong@12
ScsiPortReadPortBufferUshort@12
ScsiPortReadPortUchar@4
ScsiPortReadPortUlong@4
ScsiPortReadPortUshort@4
ScsiPortReadRegisterBufferUchar@12
ScsiPortReadRegisterBufferUlong@12
ScsiPortReadRegisterBufferUshort@12
ScsiPortReadRegisterUchar@4
ScsiPortReadRegisterUlong@4
ScsiPortReadRegisterUshort@4
ScsiPortSetBusDataByOffset@28
ScsiPortStallExecution@4
ScsiPortValidateRange@24
ScsiPortWritePortBufferUchar@12
ScsiPortWritePortBufferUlong@12
ScsiPortWritePortBufferUshort@12
ScsiPortWritePortUchar@8
ScsiPortWritePortUlong@8
ScsiPortWritePortUshort@8
ScsiPortWriteRegisterBufferUchar@12
ScsiPortWriteRegisterBufferUlong@12
ScsiPortWriteRegisterBufferUshort@12
ScsiPortWriteRegisterUchar@8
ScsiPortWriteRegisterUlong@8
ScsiPortWriteRegisterUshort@8

View File

@ -0,0 +1,50 @@
LIBRARY tdi.sys
EXPORTS
;CTEAllocateString
;CTEBlock
;CTEInitEvent
;CTEInitString
;CTEInitTimer
;CTEInitialize
;CTELogEvent
;CTEScheduleDelayedEvent
;CTEScheduleEvent
;CTESignal
;CTEStartTimer
;CTESystemUpTime
TdiBuildNetbiosAddress@12
TdiBuildNetbiosAddressEa@12
TdiCopyBufferToMdl@24
TdiCopyMdlChainToMdlChain@20
TdiCopyMdlToBuffer@24
TdiDefaultChainedRcvDatagramHandler@40
TdiDefaultChainedRcvExpeditedHandler@28
TdiDefaultChainedReceiveHandler@28
TdiDefaultConnectHandler@36
TdiDefaultDisconnectHandler@28
TdiDefaultErrorHandler@8
TdiDefaultRcvDatagramHandler@44
TdiDefaultRcvExpeditedHandler@32
TdiDefaultReceiveHandler@32
TdiDefaultSendPossibleHandler@12
TdiDeregisterAddressChangeHandler@4
TdiDeregisterDeviceObject@4
TdiDeregisterNetAddress@4
;TdiDeregisterNotificationHandler
TdiDeregisterPnPHandlers@4
TdiDeregisterProvider@4
TdiEnumerateAddresses@4
TdiInitialize@0
TdiMapUserRequest@12
TdiMatchPdoWithChainedReceiveContext@8
;TdiOpenNetbiosAddress
TdiPnPPowerComplete@12
TdiPnPPowerRequest@20
TdiProviderReady@4
TdiRegisterAddressChangeHandler@12
TdiRegisterDeviceObject@8
TdiRegisterNetAddress@16
TdiRegisterNotificationHandler@12
TdiRegisterPnPHandlers@12
TdiRegisterProvider@8
TdiReturnChainedReceives@8

View File

@ -0,0 +1,10 @@
LIBRARY usbcamd.sys
EXPORTS
DllUnload@0
USBCAMD_AdapterReceivePacket@16
USBCAMD_ControlVendorCommand@36
;USBCAMD_Debug_LogEntry
USBCAMD_DriverEntry@20
USBCAMD_GetRegistryKeyValue@20
USBCAMD_InitializeNewInterface@16
USBCAMD_SelectAlternateInterface@8

View File

@ -0,0 +1,10 @@
LIBRARY usbcamd2.sys
EXPORTS
DllUnload@0
USBCAMD_AdapterReceivePacket@16
USBCAMD_ControlVendorCommand@36
;USBCAMD_Debug_LogEntry
USBCAMD_DriverEntry@20
USBCAMD_GetRegistryKeyValue@20
USBCAMD_InitializeNewInterface@16
USBCAMD_SelectAlternateInterface@8

View File

@ -0,0 +1,115 @@
LIBRARY videoprt.sys
EXPORTS
VideoPortAcquireDeviceLock@4
VideoPortAcquireSpinLock@12
VideoPortAcquireSpinLockAtDpcLevel@8
VideoPortAllocateBuffer@12
VideoPortAllocateCommonBuffer@24
VideoPortAllocateContiguousMemory@12
VideoPortAllocatePool@16
VideoPortAssociateEventsWithDmaHandle@16
;VideoPortCheckForDeviceExistance
VideoPortCheckForDeviceExistence@28
VideoPortClearEvent@8
VideoPortCompareMemory@12
VideoPortCompleteDma@16
VideoPortCreateEvent@16
VideoPortCreateSecondaryDisplay@12
VideoPortCreateSpinLock@8
VideoPortDDCMonitorHelper@16
VideoPortDebugPrint
VideoPortDeleteEvent@8
VideoPortDeleteSpinLock@8
VideoPortDisableInterrupt@4
VideoPortDoDma@12
VideoPortEnableInterrupt@4
VideoPortEnumerateChildren@8
;VideoPortFlushRegistry
VideoPortFreeCommonBuffer@20
VideoPortFreeDeviceBase@8
VideoPortFreePool@8
VideoPortGetAccessRanges@32
VideoPortGetAgpServices@8
VideoPortGetAssociatedDeviceExtension@4
VideoPortGetAssociatedDeviceID@4
VideoPortGetBusData@24
VideoPortGetBytesUsed@8
VideoPortGetCommonBuffer@24
VideoPortGetCurrentIrql@0
VideoPortGetDeviceBase@16
VideoPortGetDeviceData@16
VideoPortGetDmaAdapter@8
VideoPortGetDmaContext@8
VideoPortGetMdl@8
VideoPortGetRegistryParameters@20
VideoPortGetRomImage@16
VideoPortGetVersion@8
VideoPortGetVgaStatus@8
VideoPortInitialize@16
VideoPortInt10@8
@VideoPortInterlockedDecrement@4
@VideoPortInterlockedExchange@8
@VideoPortInterlockedIncrement@4
VideoPortLockBuffer@16
VideoPortLockPages@20
VideoPortLogError@16
VideoPortMapBankedMemory@36
VideoPortMapDmaMemory@32
VideoPortMapMemory@20
VideoPortMoveMemory@12
VideoPortPutDmaAdapter@8
VideoPortQueryPerformanceCounter@8
VideoPortQueryServices@12
VideoPortQuerySystemTime@4
VideoPortQueueDpc@12
VideoPortReadPortBufferUchar@12
VideoPortReadPortBufferUlong@12
VideoPortReadPortBufferUshort@12
VideoPortReadPortUchar@4
VideoPortReadPortUlong@4
VideoPortReadPortUshort@4
VideoPortReadRegisterBufferUchar@12
VideoPortReadRegisterBufferUlong@12
VideoPortReadRegisterBufferUshort@12
VideoPortReadRegisterUchar@4
VideoPortReadRegisterUlong@4
VideoPortReadRegisterUshort@4
VideoPortReadStateEvent@8
VideoPortReleaseBuffer@8
VideoPortReleaseCommonBuffer@24
VideoPortReleaseDeviceLock@4
VideoPortReleaseSpinLock@12
VideoPortReleaseSpinLockFromDpcLevel@8
VideoPortScanRom@16
VideoPortSetBusData@24
VideoPortSetBytesUsed@12
VideoPortSetDmaContext@12
VideoPortSetEvent@8
VideoPortSetRegistryParameters@16
VideoPortSetTrappedEmulatorPorts@12
VideoPortSignalDmaComplete@8
VideoPortStallExecution@4
VideoPortStartDma@32
VideoPortStartTimer@4
VideoPortStopTimer@4
VideoPortSynchronizeExecution@16
VideoPortUnlockBuffer@8
VideoPortUnlockPages@8
VideoPortUnmapDmaMemory@16
VideoPortUnmapMemory@12
VideoPortVerifyAccessRanges@12
VideoPortWaitForSingleObject@12
VideoPortWritePortBufferUchar@12
VideoPortWritePortBufferUlong@12
VideoPortWritePortBufferUshort@12
VideoPortWritePortUchar@8
VideoPortWritePortUlong@8
VideoPortWritePortUshort@8
VideoPortWriteRegisterBufferUchar@12
VideoPortWriteRegisterBufferUlong@12
VideoPortWriteRegisterBufferUshort@12
VideoPortWriteRegisterUchar@8
VideoPortWriteRegisterUlong@8
VideoPortWriteRegisterUshort@8
VideoPortZeroDeviceMemory@8
VideoPortZeroMemory@8

View File

@ -0,0 +1,226 @@
LIBRARY win32k.sys
EXPORTS
BRUSHOBJ_hGetColorTransform@4
BRUSHOBJ_pvAllocRbrush@8
BRUSHOBJ_pvGetRbrush@4
BRUSHOBJ_ulGetBrushColor@4
CLIPOBJ_bEnum@12
CLIPOBJ_cEnumStart@20
CLIPOBJ_ppoGetPath@4
EngAcquireSemaphore@4
EngAllocMem@12
EngAllocPrivateUserMem@12
;EngAllocSectionMem
EngAllocUserMem@8
EngAlphaBlend@28
EngAssociateSurface@12
EngBitBlt@44
EngCheckAbort@4
EngClearEvent@4
EngComputeGlyphSet@12
EngControlSprites@8
EngCopyBits@24
EngCreateBitmap@20
EngCreateClip@0
EngCreateDeviceBitmap@12
EngCreateDeviceSurface@12
;EngCreateDriverObj
EngCreateEvent@4
EngCreatePalette@24
EngCreatePath@0
EngCreateSemaphore@0
EngCreateWnd@20
EngDebugBreak@0
EngDebugPrint@12
EngDeleteClip@4
EngDeleteDriverObj@12
EngDeleteEvent@4
EngDeleteFile@4
EngDeletePalette@4
EngDeletePath@4
EngDeleteSafeSemaphore@4
EngDeleteSemaphore@4
EngDeleteSurface@4
EngDeleteWnd@4
EngDeviceIoControl@28
EngDitherColor@16
;EngDxIoctl
EngEnumForms@24
EngEraseSurface@12
;EngFileIoControl
;EngFileWrite
EngFillPath@28
EngFindImageProcAddress@8
EngFindResource@16
EngFntCacheAlloc@8
EngFntCacheFault@8
EngFntCacheLookUp@8
EngFreeMem@4
EngFreeModule@4
EngFreePrivateUserMem@8
;EngFreeSectionMem
EngFreeUserMem@4
EngGetCurrentCodePage@8
EngGetCurrentProcessId@0
EngGetCurrentThreadId@0
EngGetDriverName@4
EngGetFileChangeTime@8
EngGetFilePath@8
EngGetForm@24
EngGetLastError@0
EngGetPrinter@20
EngGetPrinterData@24
EngGetPrinterDataFileName@4
EngGetPrinterDriver@24
EngGetProcessHandle@0
;EngGetTickCount
EngGetType1FontList@24
EngGradientFill@40
EngHangNotification@8
EngInitializeSafeSemaphore@4
EngIsSemaphoreOwned@4
EngIsSemaphoreOwnedByCurrentThread@4
EngLineTo@36
EngLoadImage@4
EngLoadModule@4
EngLoadModuleForWrite@8
EngLockDirectDrawSurface@4
;EngLockDriverObj
EngLockSurface@4
EngLpkInstalled@0
EngMapEvent@20
EngMapFile@12
EngMapFontFile@12
EngMapFontFileFD@12
EngMapModule@8
;EngMapSection
EngMarkBandingSurface@4
EngModifySurface@32
EngMovePointer@16
EngMulDiv@12
EngMultiByteToUnicodeN@20
EngMultiByteToWideChar@20
;EngNineGrid
EngPaint@20
EngPlgBlt@44
EngProbeForRead@12
EngProbeForReadAndWrite@12
EngQueryDeviceAttribute@24
EngQueryLocalTime@4
EngQueryPalette@16
EngQueryPerformanceCounter@4
EngQueryPerformanceFrequency@4
EngQuerySystemAttribute@8
EngReadStateEvent@4
EngReleaseSemaphore@4
EngRestoreFloatingPointState@4
EngSaveFloatingPointState@8
EngSecureMem@8
EngSetEvent@4
EngSetLastError@4
EngSetPointerShape@40
EngSetPointerTag@20
EngSetPrinterData@20
EngSort@16
EngStretchBlt@44
EngStretchBltROP@52
EngStrokeAndFillPath@40
EngStrokePath@32
EngTextOut@40
EngTransparentBlt@32
EngUnicodeToMultiByteN@20
EngUnloadImage@4
EngUnlockDirectDrawSurface@4
EngUnlockDriverObj@4
EngUnlockSurface@4
EngUnmapEvent@4
EngUnmapFile@4
EngUnmapFontFile@4
EngUnmapFontFileFD@4
EngUnsecureMem@4
EngWaitForSingleObject@8
EngWideCharToMultiByte@20
EngWritePrinter@16
FLOATOBJ_Add@8
FLOATOBJ_AddFloat@8
;FLOATOBJ_AddFloatObj
FLOATOBJ_AddLong@8
FLOATOBJ_Div@8
FLOATOBJ_DivFloat@8
;FLOATOBJ_DivFloatObj
FLOATOBJ_DivLong@8
FLOATOBJ_Equal@8
FLOATOBJ_EqualLong@8
FLOATOBJ_GetFloat@4
FLOATOBJ_GetLong@4
FLOATOBJ_GreaterThan@8
FLOATOBJ_GreaterThanLong@8
FLOATOBJ_LessThan@8
FLOATOBJ_LessThanLong@8
FLOATOBJ_Mul@8
FLOATOBJ_MulFloat@8
;FLOATOBJ_MulFloatObj
FLOATOBJ_MulLong@8
FLOATOBJ_Neg@4
FLOATOBJ_SetFloat@8
FLOATOBJ_SetLong@8
FLOATOBJ_Sub@8
FLOATOBJ_SubFloat@8
;FLOATOBJ_SubFloatObj
FLOATOBJ_SubLong@8
FONTOBJ_cGetAllGlyphHandles@8
FONTOBJ_cGetGlyphs@20
FONTOBJ_pQueryGlyphAttrs@8
FONTOBJ_pfdg@4
FONTOBJ_pifi@4
FONTOBJ_pjOpenTypeTablePointer@12
FONTOBJ_pvTrueTypeFontFile@8
FONTOBJ_pwszFontFilePaths@8
FONTOBJ_pxoGetXform@4
FONTOBJ_vGetInfo@12
HT_ComputeRGBGammaTable@24
HT_Get8BPPFormatPalette@16
HT_Get8BPPMaskPalette@24
HeapVidMemAllocAligned@20
PALOBJ_cGetColors@16
PATHOBJ_bCloseFigure@4
PATHOBJ_bEnum@8
PATHOBJ_bEnumClipLines@12
PATHOBJ_bMoveTo@8
PATHOBJ_bPolyBezierTo@12
PATHOBJ_bPolyLineTo@12
PATHOBJ_vEnumStart@4
PATHOBJ_vEnumStartClipLines@16
PATHOBJ_vGetBounds@8
;RtlAnsiCharToUnicodeChar
;RtlMultiByteToUnicodeN
;RtlRaiseException
;RtlUnicodeToMultiByteN
;RtlUnicodeToMultiByteSize
;RtlUnwind
RtlUpcaseUnicodeChar@4
;RtlUpcaseUnicodeToMultiByteN
STROBJ_bEnum@12
STROBJ_bEnumPositionsOnly@12
STROBJ_bGetAdvanceWidths@16
STROBJ_dwGetCodePage@4
STROBJ_fxBreakExtra@4
STROBJ_fxCharacterExtra@4
STROBJ_vEnumStart@4
VidMemFree@8
WNDOBJ_bEnum@12
WNDOBJ_cEnumStart@16
WNDOBJ_vSetConsumer@8
XFORMOBJ_bApplyXform@20
XFORMOBJ_iGetFloatObjXform@8
XFORMOBJ_iGetXform@8
XLATEOBJ_cGetPalette@16
XLATEOBJ_hGetColorTransform@4
XLATEOBJ_iXlate@8
XLATEOBJ_piVector@4
;_abnormal_termination
;_except_handler2
;_global_unwind2
;_itoa
;_itow
;_local_unwind2