Sample Code
windows driver samples/ Native Wi-Fi Miniport Sample Driver/ C++/ driver/ mp_defs.h/
/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
mp_defs.h
Abstract:
Contains miniport layer defines
Revision History:
When What
---------- ----------------------------------------------
09-04-2007 Created
Notes:
--*/
#pragma once
extern NDIS_HANDLE GlobalDriverHandle;
extern NDIS_HANDLE GlobalDriverContext;
#define MP_MAJOR_NDIS_VERSION 6
#define MP_MINOR_NDIS_VERSION 20
// Adapter status flags and manipulation macros
#define MP_ADAPTER_PAUSED 0x00000001
#define MP_ADAPTER_PAUSING 0x00000002
#define MP_ADAPTER_HALTING 0x00000010
#define MP_ADAPTER_IN_RESET 0x00000020
#define MP_ADAPTER_REMOVING 0x00000040
#define MP_ADAPTER_SURPRISE_REMOVED 0x00000100
// Currently if any of the flags are set, we cannot send
#define MP_ADAPTER_CANNOT_SEND_MASK 0xFFFFFFF
#define MP_SET_ADAPTER_STATUS(_Adapter, _Flag) \
MP_INTERLOCKED_SET_FLAG(&(_Adapter->Status), _Flag)
#define MP_CLEAR_ADAPTER_STATUS(_Adapter, _Flag) \
MP_INTERLOCKED_CLEAR_FLAG(&(_Adapter->Status), _Flag)
#define MP_TEST_ADAPTER_STATUS(_Adapter, _Flag) \
MP_TEST_FLAG(_Adapter->Status, _Flag)
// Adapter lock manipulation macros
#define MP_ACQUIRE_ADAPTER_LOCK(_Adapter, _AtDispatch) \
NdisAcquireSpinLock(&(_Adapter->Lock))
#define MP_RELEASE_ADAPTER_LOCK(_Adapter, _AtDispatch) \
NdisReleaseSpinLock(&(_Adapter->Lock))
// Adapter's port refcount
#define MP_INCREMENT_PORTLIST_REFCOUNT(_Adapter)\
MPASSERTOP(NdisInterlockedIncrement(&(_Adapter->PortRefCount)) > 0)
#define MP_DECREMENT_PORTLIST_REFCOUNT(_Adapter)\
MPASSERTOP(NdisInterlockedDecrement(&(_Adapter->PortRefCount)) >= 0)
// Just a busy wait for PortList refcount to go to 0
#define MP_WAIT_FOR_PORTLIST_REFCOUNT(_Adapter) \
MP_VERIFY_PASSIVE_IRQL(); \
while (_Adapter->PortRefCount != 0) NdisMSleep(10);
typedef struct _ADAPTER
{
/**
* The handle by which NDIS recognizes this adapter. This handle needs to be passed
* in for many of the calls made to NDIS
*/
NDIS_HANDLE MiniportAdapterHandle;
/**
* HW structure associated with this Adapter
*/
PHW Hw;
/**
* HVL structure
*/
PHVL Hvl;
/**
* The helper port
*/
PMP_PORT HelperPort;
/**
* List to hold the ports created on this adapter
*/
_Field_size_part_(MP_MAX_NUMBER_OF_PORT, NumberOfPorts)
MP_PORT* PortList[MP_MAX_NUMBER_OF_PORT]; // Public
ULONG NumberOfPorts; // Public
/** Flag maintaining state about the ADAPTER. It is used for synchronization */
ULONG Status; // PnpFlag; // Public
/** Refcount tracking whether any component is using a port. While this is
* non-zero, the port list cannot be modified */
LONG PortRefCount; // Public
/** Lock used to protect the ADAPTER (and HVL) data */
NDIS_SPIN_LOCK Lock; // Public
/** Registry settings for port */
PVOID PortRegInfo;
/** Last processed/pending request. Maintained for tracking purpose */
PNDIS_OID_REQUEST Tracking_LastRequest;
NDIS_OID Tracking_LastOid;
#if DBG
NDIS_OID Debug_BreakOnOid;
ULONG Debug_BreakOnReset;
#endif
/** Work item for handling OIDs */
NDIS_HANDLE OidWorkItem;
/** Oid request information for requests that are processed deferred */
PNDIS_OID_REQUEST DeferredOidRequest;
} ADAPTER, *PADAPTER;
Our Services
-
What our customers say about us?
Read our customer testimonials to find out why our clients keep returning for their projects.
View Testimonials

