⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nuiouser.h

📁 此压缩包为杰得开发得z228的BSP的源代码,可以实现很多功能,尤其是视频解码有很好的效果.
💻 H
字号:
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
/*++


Module Name:

    nuiouser.h

Abstract:

    Constants and types to access the NDISUIO driver.
    Users must also include ntddndis.h

Environment:

    User/Kernel mode.

Revision History:

    
    4/12/2000    Created
	03/15/2001	 CE port.

--*/

#ifndef __NUIOUSER__H
#define __NUIOUSER__H

#ifdef UNDER_CE
#define	NDISUIO_DEVICE_NAME          TEXT("UIO1:")
#endif


#define FSCTL_NDISUIO_BASE      FILE_DEVICE_NETWORK

#define _NDISUIO_CTL_CODE(_Function, _Method, _Access)  \
            CTL_CODE(FSCTL_NDISUIO_BASE, _Function, _Method, _Access)

#define IOCTL_NDISUIO_OPEN_DEVICE		\
            _NDISUIO_CTL_CODE(0x200, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_NDISUIO_QUERY_OID_VALUE   \
            _NDISUIO_CTL_CODE(0x201, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_NDISUIO_SET_OID_VALUE		\
            _NDISUIO_CTL_CODE(0x205, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_NDISUIO_SET_ETHER_TYPE	\
            _NDISUIO_CTL_CODE(0x202, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_NDISUIO_QUERY_BINDING		\
            _NDISUIO_CTL_CODE(0x203, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_NDISUIO_BIND_WAIT			\
            _NDISUIO_CTL_CODE(0x204, METHOD_BUFFERED, FILE_ANY_ACCESS)


#ifdef UNDER_CE

#define IOCTL_NDISUIO_OPEN_WRITE_DEVICE		\
            _NDISUIO_CTL_CODE(0x206, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define	IOCTL_NDISUIO_REQUEST_NOTIFICATION	\
			_NDISUIO_CTL_CODE(0x207, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define	IOCTL_NDISUIO_CANCEL_NOTIFICATION	\
			_NDISUIO_CTL_CODE(0x208, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define	IOCTL_NDISUIO_NIC_STATISTICS		\
			_NDISUIO_CTL_CODE(0x209, METHOD_BUFFERED, FILE_ANY_ACCESS)

#define IOCTL_CANCEL_READ					\
			_NDISUIO_CTL_CODE(0x20a, METHOD_BUFFERED, FILE_ANY_ACCESS)

#endif


//
//  Structure to go with IOCTL_NDISUIO_QUERY_OID_VALUE.
//  The Data part is of variable length, determined by
//  the input buffer length passed to DeviceIoControl.
//
typedef struct _NDISUIO_QUERY_OID
{
    NDIS_OID        Oid;

#ifdef UNDER_CE
	//
	//	In CE land app is allowed to query without having to do
	//	IOCTL_NDISUIO_OPEN_DEVICE
	//	Hence the device name to query argument needed..
	//	For app that does IOCTL_NDISUIO_OPEN_DEVICE this argument
	//	is then not necessary..
	//

	PTCHAR			ptcDeviceName;	
#endif

    UCHAR           Data[sizeof(ULONG)];

} NDISUIO_QUERY_OID, *PNDISUIO_QUERY_OID;

//
//  Structure to go with IOCTL_NDISUIO_SET_OID_VALUE.
//  The Data part is of variable length, determined
//  by the input buffer length passed to DeviceIoControl.
//
typedef struct _NDISUIO_SET_OID
{
    NDIS_OID        Oid;

#ifdef UNDER_CE
	//
	//	In CE land app is allowed to set without having to do
	//	IOCTL_NDISUIO_OPEN_DEVICE
	//	Hence the device name to query argument needed..
	//	For app that does IOCTL_NDISUIO_OPEN_DEVICE this argument
	//	is then not necessary..
	//

	PTCHAR			ptcDeviceName;	
#endif

    UCHAR           Data[sizeof(ULONG)];

} NDISUIO_SET_OID, *PNDISUIO_SET_OID;


//
//  Structure to go with IOCTL_NDISUIO_QUERY_BINDING.
//  The input parameter is BindingIndex, which is the
//  index into the list of bindings active at the driver.
//  On successful completion, we get back a device name
//  and a device descriptor (friendly name).
//
typedef struct _NDISUIO_QUERY_BINDING
{
	ULONG			BindingIndex;		// 0-based binding number
	ULONG			DeviceNameOffset;	// from start of this struct
	ULONG			DeviceNameLength;	// in bytes
	ULONG			DeviceDescrOffset;	// from start of this struct
	ULONG			DeviceDescrLength;	// in bytes

} NDISUIO_QUERY_BINDING, *PNDISUIO_QUERY_BINDING;



#ifdef UNDER_CE

//
//	These are from \nt\public\internal\net\inc\ndispnp.h
//	Since CE does not support NdisQueryStatistics(), so NDISUIO 
//	will do the job via IOCTL_NDISUIO_NIC_STATISTICS ioctl call.
//

#define MEDIA_STATE_CONNECTED       0
#define MEDIA_STATE_DISCONNECTED    1
#define MEDIA_STATE_UNKNOWN         -1

#define DEVICE_STATE_CONNECTED      1
#define DEVICE_STATE_DISCONNECTED   0

typedef struct
{
    ULONG               Size;               //	Of this structure
	PTCHAR				ptcDeviceName;		//	The device name to be queried..
    ULONG               DeviceState;        //	DEVICE_STATE_XXX above
    ULONG               MediaType;          //	NdisMediumXXX
    ULONG               MediaState;			//	MEDIA_STATE_XXX above
    ULONG               PhysicalMediaType;
    ULONG               LinkSpeed;          //	In 100bits/s. 10Mb/s = 100000
    ULONGLONG           PacketsSent;
    ULONGLONG           PacketsReceived;
    ULONG               InitTime;           //	In milliseconds
    ULONG               ConnectTime;        //	In seconds
    ULONGLONG           BytesSent;          //	0 - Unknown (or not supported)
    ULONGLONG           BytesReceived;      //	0 - Unknown (or not supported)
    ULONGLONG           DirectedBytesReceived;
    ULONGLONG           DirectedPacketsReceived;
    ULONG               PacketsReceiveErrors;
    ULONG               PacketsSendErrors;
    ULONG               ResetCount;
    ULONG               MediaSenseConnectCount;
    ULONG               MediaSenseDisconnectCount;

} NIC_STATISTICS, *PNIC_STATISTICS;



//
//	This is for device notification (Media State, bind/unbind etc).
//	Because CE does not have WMI..
//

#define	NDISUIO_NOTIFICATION_RESET_START					0x00000001
#define	NDISUIO_NOTIFICATION_RESET_END						0x00000002
#define NDISUIO_NOTIFICATION_MEDIA_CONNECT					0x00000004
#define NDISUIO_NOTIFICATION_MEDIA_DISCONNECT				0x00000008			
#define NDISUIO_NOTIFICATION_BIND							0x00000010
#define	NDISUIO_NOTIFICATION_UNBIND							0x00000020
#define NDISUIO_NOTIFICATION_MEDIA_SPECIFIC_NOTIFICATION    0x00000040

typedef struct
{
	DWORD	dwNotificationType;
	TCHAR	ptcDeviceName[MAX_PATH];
	PVOID   pvStatusBuffer;             //  For notifications that come with status.	
	UINT    uiStatusBufferSize;         //      e.g. NDIS_STATUS_MEDIA_SPECIFIC_INDICATION
	
}	NDISUIO_DEVICE_NOTIFICATION, *PNDISUIO_DEVICE_NOTIFICATION;


typedef	struct
{
	HANDLE	hMsgQueue;
	DWORD	dwNotificationTypes;

}	NDISUIO_REQUEST_NOTIFICATION, *PNDISUIO_REQUEST_NOTIFICATION;


#endif
 
#endif // __NUIOUSER__H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -