NT4/private/ntos/tdi/wrapper/tdipnp.h
2020-09-30 17:12:29 +02:00

164 lines
3.2 KiB
C

/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
tdipnp.h
Abstract:
This module contains the definitions for the PnP related code
in the TDI driver.
Author:
Henry Sanders (henrysa) 11 Oct 1995
Environment:
Kernel mode
Revision History:
--*/
#ifndef _TDIPNP_
#define _TDIPNP_
// Define the types possible for a TDI_NOTIFY_ELEMENT structure.
#define TDI_NOTIFY_DEVICE 0
#define TDI_NOTIFY_NET_ADDRESS 1
// And the types possible for a TDI_PROVIDER_RESOURCE structure.
#define TDI_RESOURCE_DEVICE 0
#define TDI_RESOURCE_NET_ADDRESS 1
//
// Define the types of bind requests possible.
#define TDI_REGISTER_BIND_NOTIFY 0
#define TDI_DEREGISTER_BIND_NOTIFY 1
#define TDI_REGISTER_DEVICE 2
#define TDI_DEREGISTER_DEVICE 3
#define TDI_REGISTER_ADDRESS_NOTIFY 4
#define TDI_DEREGISTER_ADDRESS_NOTIFY 5
#define TDI_REGISTER_ADDRESS 6
#define TDI_DEREGISTER_ADDRESS 7
#define TDI_MAX_BIND_REQUEST TDI_DEREGISTER_DEVICE
//
// This is the definition of the common part of a TDI_NOTIFY_ELEMENT structure.
//
typedef struct _TDI_NOTIFY_COMMON {
LIST_ENTRY Linkage;
UCHAR Type;
} TDI_NOTIFY_COMMON, *PTDI_NOTIFY_COMMON;
//
// The definition of the TDI_NOTIFY_BIND structure.
//
typedef struct _TDI_NOTIFY_BIND {
TDI_BIND_HANDLER BindHandler;
TDI_UNBIND_HANDLER UnbindHandler;
} TDI_NOTIFY_BIND, *PTDI_NOTIFY_BIND;
//
// The definition of a TDI_NOTIFY_ADDRESS structure,
//
typedef struct _TDI_NOTIFY_ADDRESS {
TDI_ADD_ADDRESS_HANDLER AddHandler;
TDI_DEL_ADDRESS_HANDLER DeleteHandler;
} TDI_NOTIFY_ADDRESS, *PTDI_NOTIFY_ADDRESS;
//
// This is the definition of a TDI_NOTIFY_ELEMENT stucture.
//
typedef struct _TDI_NOTIFY_ELEMENT {
TDI_NOTIFY_COMMON Common;
union {
TDI_NOTIFY_BIND BindElement;
TDI_NOTIFY_ADDRESS AddressElement;
} Specific;
} TDI_NOTIFY_ELEMENT, *PTDI_NOTIFY_ELEMENT;
//
// This is the definition of the common part of a TDI_PROVIDER_RESOURCE structure.
//
typedef struct _TDI_PROVIDER_COMMON {
LIST_ENTRY Linkage;
UCHAR Type;
} TDI_PROVIDER_COMMON, *PTDI_PROVIDER_COMMON;
//
// The definition of the TDI_PROVIDER_DEVICE structure.
//
typedef struct _TDI_PROVIDER_DEVICE {
UNICODE_STRING DeviceName;
} TDI_PROVIDER_DEVICE, *PTDI_PROVIDER_DEVICE;
//
// The definition of the TDI_PROVIDER_NET_ADDRESS structure.
//
typedef struct _TDI_PROVIDER_NET_ADDRESS {
TA_ADDRESS Address;
} TDI_PROVIDER_NET_ADDRESS, *PTDI_PROVIDER_NET_ADDRESS;
//
// This is the definition of a TDI_PROVIDER_RESOURCE stucture.
//
typedef struct _TDI_PROVIDER_RESOURCE {
TDI_PROVIDER_COMMON Common;
union {
TDI_PROVIDER_DEVICE Device;
TDI_PROVIDER_NET_ADDRESS NetAddress;
} Specific;
} TDI_PROVIDER_RESOURCE, *PTDI_PROVIDER_RESOURCE;
//
// Structure of a bind list request.
//
typedef struct _TDI_SERIALIZED_REQUEST {
LIST_ENTRY Linkage;
PVOID Element;
UINT Type;
PKEVENT Event;
} TDI_SERIALIZED_REQUEST, *PTDI_SERIALIZED_REQUEST;
// External defintions for global variables.
extern KSPIN_LOCK TDIListLock;
extern LIST_ENTRY BindClientList;
extern LIST_ENTRY NetAddressClientList;
extern LIST_ENTRY BindProviderList;
extern LIST_ENTRY NetAddressProviderList;
extern LIST_ENTRY BindRequestList;
extern LIST_ENTRY NetAddressRequestList;
#endif // _TDIPNP