?? 1394.h
字號:
// mimicks the core 1394 CSRs. The core CSRs are defined as
// Bandwidth Units, Channels Available and the entire 1k of ConfigROM.
//
#define PORT_SUPPORTS_CSRS 1
//
// Specifies port driver implements large Async Read/Write requests.
// If this bit is ON, the 1394 Bus driver will NOT chop up Async requests
// based on speed constraints (i.e. 512 bytes at 100Mbps, 1024 bytes at
// 200Mbps, etc.). Otherwise the 1394 Bus driver WILL chop up large
// requests into speed constrained sizes before handing them to the port
// driver.
//
#define PORT_SUPPORTS_LARGE_ASYNC 2
//
// Specifies port driver indicates packet headers to the bus driver in the
// native format of the bus driver (as defined by the structs in this file.
// If this capability bit is turned on, the bus driver will not need to byte
// swap headers to get the packet headers in the right format before acting
// on them. This bit is used on indication or reception of packets only, as
// the bus driver doesn't try to assemble packet headers on transmission.
//
#define PORT_SUPPORTS_NATIVE_ENDIAN 4
//
// flags for the SetPortProperties request
//
#define SET_LOCAL_HOST_PROPERTIES_NO_CYCLE_STARTS 0x00000001
#define SET_LOCAL_HOST_PROPERTIES_GAP_COUNT 0x00000002
#define SET_LOCAL_HOST_PROPERTIES_MODIFY_CROM 0x00000003
//
// Definitions of the structures that correspond to the Host info levels
//
typedef struct _SET_LOCAL_HOST_PROPS2 {
ULONG GapCountLowerBound;
} SET_LOCAL_HOST_PROPS2, *PSET_LOCAL_HOST_PROPS2;
//
// Definition for appending a properly formated Config Rom subsection, to
// the core config rom exposed by the PC.
// The first element of the submitted buffer must be a unit directory and any
// offset to other leafs/dir following it, must be indirect offsets from the
// beginning of the submitted buffer.
// The bus driver will then add a pointer to this unit dir, in our root directory.
// The entire supplied buffer must be in big endian with CRCs pre-calculated..
// If a driver fails to remove its added crom data, when it gets removed, the bus driver
// will do so automatically, restoring the crom image prior to this modification
//
typedef struct _SET_LOCAL_HOST_PROPS3 {
ULONG fulFlags;
HANDLE hCromData;
ULONG nLength;
PMDL Mdl;
} SET_LOCAL_HOST_PROPS3, *PSET_LOCAL_HOST_PROPS3;
//
// definition of Flags for SET_LOCAL_HOST_PROPERTIES_MODIFY_CROM
//
#define SLHP_FLAG_ADD_CROM_DATA 0x01
#define SLHP_FLAG_REMOVE_CROM_DATA 0x02
//
// Definition of fulFlags in Async Read/Write/Lock requests
//
#define ASYNC_FLAGS_NONINCREMENTING 0x00000001
#define ASYNC_FLAGS_PARTIAL_REQUEST 0x80000000
//
// flag instucts the port driver to NOT take an int for checking the status
// of this transaction. Always return success...
//
#define ASYNC_FLAGS_NO_STATUS 0x00000002
//
// if this flag is set the read packet is going to be used as a PING packet also.
// we are going to determine, in units of micro secs, the delay
// between Tx of the async packet and reception of ACK_PENDING or ACK_COMPLETE
//
#define ASYNC_FLAGS_PING 0x00000004
//
// when this flag is set, the bus driver will use 63 as the node id, so this message
// is broadcast to all nodes
//
#define ASYNC_FLAGS_BROADCAST 0x00000008
//
// Definition of fulAccessType for AllocateAddressRange
//
#define ACCESS_FLAGS_TYPE_READ 1
#define ACCESS_FLAGS_TYPE_WRITE 2
#define ACCESS_FLAGS_TYPE_LOCK 4
#define ACCESS_FLAGS_TYPE_BROADCAST 8
//
// Definition of fulNotificationOptions for AllocateAddressRange
//
#define NOTIFY_FLAGS_NEVER 0
#define NOTIFY_FLAGS_AFTER_READ 1
#define NOTIFY_FLAGS_AFTER_WRITE 2
#define NOTIFY_FLAGS_AFTER_LOCK 4
//
// Definitions of Speed flags used throughout 1394 Bus APIs
//
#define SPEED_FLAGS_100 0x01
#define SPEED_FLAGS_200 0x02
#define SPEED_FLAGS_400 0x04
#define SPEED_FLAGS_800 0x08
#define SPEED_FLAGS_1600 0x10
#define SPEED_FLAGS_3200 0x20
#define SPEED_FLAGS_FASTEST 0x80000000
//
// Definitions of Channel flags
//
#define ISOCH_ANY_CHANNEL 0xffffffff
#define ISOCH_MAX_CHANNEL 63
//
// Definitions of Bus Reset flags (used when Bus driver asks Port driver
// to perform a bus reset)
//
#define BUS_RESET_FLAGS_PERFORM_RESET 1
#define BUS_RESET_FLAGS_FORCE_ROOT 2
//
// Definitions of Bus Reset informative states.
//
#define BUS_RESET_BEGINNING 1
#define BUS_RESET_FINISHED 2
#define BUS_RESET_LOCAL_NODE_IS_ROOT 4
#define BUS_RESET_LOCAL_NODE_IS_ISOCH_MANAGER 8
#define BUS_RESET_LOCAL_NODE_IS_BUS_MANAGER 16
#define BUS_RESET_SELFID_ENUMERATION_ERROR 32
//
// Definitions of Lock transaction types
//
#define LOCK_TRANSACTION_MASK_SWAP 1
#define LOCK_TRANSACTION_COMPARE_SWAP 2
#define LOCK_TRANSACTION_FETCH_ADD 3
#define LOCK_TRANSACTION_LITTLE_ADD 4
#define LOCK_TRANSACTION_BOUNDED_ADD 5
#define LOCK_TRANSACTION_WRAP_ADD 6
//
// Definitions of Isoch Allocate Resources flags
//
#define RESOURCE_USED_IN_LISTENING 0x00000001
#define RESOURCE_USED_IN_TALKING 0x00000002
#define RESOURCE_BUFFERS_CIRCULAR 0x00000004
#define RESOURCE_STRIP_ADDITIONAL_QUADLETS 0x00000008
#define RESOURCE_TIME_STAMP_ON_COMPLETION 0x00000010
#define RESOURCE_SYNCH_ON_TIME 0x00000020
#define RESOURCE_USE_PACKET_BASED 0x00000040
#define RESOURCE_VARIABLE_ISOCH_PAYLOAD 0x00000080 // not implemented
//
// Definitions of Isoch Descriptor flags
//
#define DESCRIPTOR_SYNCH_ON_SY 0x00000001
#define DESCRIPTOR_SYNCH_ON_TAG 0x00000002
#define DESCRIPTOR_SYNCH_ON_TIME 0x00000004
#define DESCRIPTOR_USE_SY_TAG_IN_FIRST 0x00000008
#define DESCRIPTOR_TIME_STAMP_ON_COMPLETION 0x00000010
#define DESCRIPTOR_PRIORITY_TIME_DELIVERY 0x00000020
#define DESCRIPTOR_HEADER_SCATTER_GATHER 0x00000040
#define DESCRIPTOR_HEADER_RX_SCATTER_GATHER 0x00000080 // not implemented
//
// Definitions of Isoch synchronization flags
//
#define SYNCH_ON_SY DESCRIPTOR_SYNCH_ON_SY
#define SYNCH_ON_TAG DESCRIPTOR_SYNCH_ON_TAG
#define SYNCH_ON_TIME DESCRIPTOR_SYNCH_ON_TIME
//
// Definitions of levels of Host controller information
//
#define GET_HOST_UNIQUE_ID 1
#define GET_HOST_CAPABILITIES 2
#define GET_POWER_SUPPLIED 3
#define GET_PHYS_ADDR_ROUTINE 4
#define GET_HOST_CONFIG_ROM 5
#define GET_HOST_CSR_CONTENTS 6
#define GET_HOST_DMA_CAPABILITIES 7
//
// Definitions of the structures that correspond to the Host info levels
//
typedef struct _GET_LOCAL_HOST_INFO1 {
LARGE_INTEGER UniqueId;
} GET_LOCAL_HOST_INFO1, *PGET_LOCAL_HOST_INFO1;
typedef struct _GET_LOCAL_HOST_INFO2 {
ULONG HostCapabilities;
ULONG MaxAsyncReadRequest;
ULONG MaxAsyncWriteRequest;
} GET_LOCAL_HOST_INFO2, *PGET_LOCAL_HOST_INFO2;
typedef struct _GET_LOCAL_HOST_INFO3 {
ULONG deciWattsSupplied;
ULONG Voltage; // x10 -> +3.3 == 33
// +5.0 == 50,+12.0 == 120
// etc.
} GET_LOCAL_HOST_INFO3, *PGET_LOCAL_HOST_INFO3;
// l
// physical mapping routine
//
typedef
NTSTATUS
(*PPORT_PHYS_ADDR_ROUTINE) ( // We will call this routine
IN PVOID Context, // at DISPATCH_LEVEL
IN OUT PIRB Irb
);
//
// callback from Physical Mapping routine, indicating its done...
//
typedef
VOID
(*PPORT_ALLOC_COMPLETE_NOTIFICATION) ( // We will call this routine
IN PVOID Context // at DISPATCH_LEVEL
);
typedef struct _GET_LOCAL_HOST_INFO4 {
PPORT_PHYS_ADDR_ROUTINE PhysAddrMappingRoutine;
PVOID Context;
} GET_LOCAL_HOST_INFO4, *PGET_LOCAL_HOST_INFO4;
//
// the caller can set ConfigRomLength to zero, issue the request, which will
// be failed with STATUS_INVALID_BUFFER_SIZE and the ConfigRomLength will be set
// by the port driver to the proper length. The caller can then re-issue the request
// after it has allocated a buffer for the configrom with the correct length
// Same is tru for the GET_LOCAL_HOST_INFO6 call
//
typedef struct _GET_LOCAL_HOST_INFO5 {
PVOID ConfigRom;
ULONG ConfigRomLength;
} GET_LOCAL_HOST_INFO5, *PGET_LOCAL_HOST_INFO5;
typedef struct _GET_LOCAL_HOST_INFO6 {
ADDRESS_OFFSET CsrBaseAddress;
ULONG CsrDataLength;
PVOID CsrDataBuffer;
} GET_LOCAL_HOST_INFO6, *PGET_LOCAL_HOST_INFO6;
typedef struct _GET_LOCAL_HOST_INFO7 {
ULONG HostDmaCapabilities;
ULARGE_INTEGER MaxDmaBufferSize;
ULONG MaxOutstandingXmitRequests;
ULONG MaxOutstandingXmitResponses;
} GET_LOCAL_HOST_INFO7, *PGET_LOCAL_HOST_INFO7;
//
// Definitions of capabilities in Host info level 2
//
#define HOST_INFO_PACKET_BASED 0x00000001
#define HOST_INFO_STREAM_BASED 0x00000002
#define HOST_INFO_SUPPORTS_ISOCH_STRIPPING 0x00000004
#define HOST_INFO_SUPPORTS_START_ON_CYCLE 0x00000008
#define HOST_INFO_SUPPORTS_RETURNING_ISO_HDR 0x00000010
#define HOST_INFO_SUPPORTS_ISO_HDR_INSERTION 0x00000020
#define HOST_INFO_SUPPORTS_DV_CIP_STRIPPING 0x00000040
//
// Definitions of flags for GetMaxSpeedBetweenDevices and
// Get1394AddressFromDeviceObject
//
#define USE_LOCAL_NODE 1
//
// Definitions of flags for IndicationFlags in INDICATION_INFO struct
//
#define BUS_RESPONSE_IS_RAW 1
//
// Definition of flags for BusResetNotification Irb
//
#define REGISTER_NOTIFICATION_ROUTINE 1
#define DEREGISTER_NOTIFICATION_ROUTINE 2
//
// Definition of flags for AllocateAddressRange Irb
//
#define BIG_ENDIAN_ADDRESS_RANGE 1
#ifdef __cplusplus
}
#endif
#endif // _1394_H_
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -