windows-nt/Source/XPSP1/NT/public/sdk/inc/i2osmi.h
2020-09-26 16:20:57 +08:00

135 lines
3.5 KiB
C

/*++
Copyright (c) 1997-1999 Hewlett-Packard Company & Microsoft Corporation
Module Name:
i2osmi.h
Abstract:
This module defines the NT types, constants, and functions that are
exposed from the i2oexec driver.
Revision History:
--*/
#if !defined(I2OSMI_HDR)
#define I2OSMI_HDR
#if _MSC_VER > 1000
#pragma once
#endif
#include <devioctl.h>
#include "I2OUtil.h"
#include "I2OExec.h"
#pragma pack (push, 1)
//
// Parameter structure for Get/Set Parameters call.
//
typedef struct _I2O_PARAM_BLOCK {
ULONG IOP;
USHORT TargetTID;
UCHAR ParamData[1];
} I2O_PARAM_BLOCK, *PI2O_PARAM_BLOCK;
//
// I2O IOP Descriptor
//
typedef struct _I2O_IOP_DESCRIPTOR {
U32 IOPNumber;
BOOLEAN (*SendHandler) (PVOID HandlerContext, PVOID MessageFrame);
PVOID reserved;
PVOID reserved1;
PVOID HandlerContext;
ULONG (*GetMFA)(PVOID HandlerContext, PVOID MFA, PVOID Buffer, ULONG Size);
ULONG MaxMessageFrameSize;
ULONG ExpectedLCTSize;
PVOID AdapterObject;
ULONG MaxInboundMFrames;
ULONG InitialInboundMFrames;
} I2O_IOP_DESCRIPTOR, *PI2O_IOP_DESCRIPTOR;
//
// I2O IOP and LCT Configuration data
//
typedef struct _I2O_DEVICE_DESCRIPTOR {
I2O_IOP_DESCRIPTOR IOP;
ULONG ChangeIndicator;
I2O_LCT_ENTRY LCT;
} I2O_DEVICE_DESCRIPTOR, *PI2O_DEVICE_DESCRIPTOR;
//
// I2O Query Configuration Record structure
//
#define I2O_CLASS_MATCH_ANY_BITS (((1<<I2O_CLASS_ID_SZ)-1) & I2O_CLASS_MATCH_ANYCLASS)
typedef struct _I2O_CONFIG_QUERY {
ULONG IOPNumber;
I2O_CLASS_ID ClassID;
ULONG SubClassID;
ULONG Index;
} I2O_CONFIG_QUERY, *PI2O_CONFIG_QUERY;
//
// Useful define in get/set operations
//
typedef struct _I2O_PARAM_SCALAR_OPERATION {
I2O_PARAM_OPERATIONS_LIST_HEADER OpList;
I2O_PARAM_OPERATION_SPECIFIC_TEMPLATE OpBlock;
} I2O_PARAM_SCALAR_OPERATION, *PI2O_PARAM_SCALAR_OPERATION;
//
// Defines for the interface to the I2OExec driver.
//
#define I2O_GET_CONFIG_INFO 0xBA0
#define I2O_PRIVATE_MESSAGE_CODE 0xBB0
#define I2O_EXEC_REQUEST 0xBC0
#define I2O_PARAMS_GET_REQUEST 0xBD0
#define I2O_PARAMS_SET_REQUEST 0xBE0
#define I2O_GET_LCT 0xBF0
#define I2O_GET_IOPCOUNT 0xC00
#define I2O_GET_CONFIGDIALOG 0xC10
#define IOCTL_GET_CONFIG_INFO \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_GET_CONFIG_INFO, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PRIVATE_MESSAGE \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_PRIVATE_MESSAGE_CODE, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_EXEC_REQUEST \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_EXEC_REQUEST, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PARAMS_GET_REQUEST \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_PARAMS_GET_REQUEST, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PARAMS_SET_REQUEST \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_PARAMS_SET_REQUEST, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_GET_LCT \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_GET_LCT, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_PRIVATE_MSG \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_PRIVATE_MESSAGE, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_GET_IOP_COUNT \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_GET_IOPCOUNT, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define IOCTL_GET_CONFIG_DIALOG \
CTL_CODE (FILE_DEVICE_UNKNOWN, I2O_GET_CONFIGDIALOG, METHOD_BUFFERED, FILE_ANY_ACCESS)
#pragma pack (pop)
#endif // I2OCONFIG_HDR