NDISUIO_OPEN_CONTEXT (Windows Embedded CE 6.0)

1/6/2010

This structure represents the network device object when opened. It is allocated on processing ProtocolBindAdapter from NDIS and freed when all references to it are gone.

Syntax

typedef struct _NDISUIO_OPEN_CONTEXT {
  LIST_ENTRYLink;
  ULONG Flags;
  ULONG RefCount;
  NUIO_LOCK Lock;
  PFILE_OBJECT pFileObject;
  NDIS_HANDLE BindingHandle;
  NDIS_HANDLE SendPacketPool;
  NDIS_HANDLE SendBufferPool;
  NDIS_HANDLE RecvPacketPool;
  NDIS_HANDLE RecvBufferPool;
  ULONG MacOptions;
  ULONG MaxFrameSize;
  LIST_ENTRY PendedWrites;
  ULONG PendedSendCount;
  #ifndef UNDER_CE
  LIST_ENTRY PendedReads;
  ULONG PendedReadCount;
  #else
  NDIS_EVENT ReadEvent;
  BOOL bBlockingRead;
  DWORD dwReadTimeOut;
  #endif
  LIST_ENTRY RecvPktQueue;
  ULONG RecvPktCount;
  NET_DEVICE_POWER_STATE PowerState;
  NDIS_STRING DeviceName;
  NDIS_STRING DeviceDescr;
NDIS_STATUS BindStatus;
NUIO_EVENT BindEvent;
#ifndef UNDER_CE
BOOLEAN bRunningOnWin9x;
#endif
#ifdef UNDER_CE
USHORT EthType;
#endif
ULONG oc_sig;
} NDISUIO_OPEN_CONTEXT, *PNDISUIO_OPEN_CONTEXT;

Members

  • Link
    Link to the global list.
  • Flags
    State information. The following table shows the values for Flags.

    Flag Value

    NUIOO_BIND_IDLE

    0x00000000

    NUIOO_BIND_OPENING

    0x00000001

    NUIOO_BIND_FAILED

    0x00000002

    NUIOO_BIND_ACTIVE

    0x00000004

    NUIOO_BIND_CLOSING

    0x00000008

    NUIOO_BIND_FLAGS

    0x0000000F

    NUIOO_OPEN_IDLE

    0x00000000

    NUIOO_OPEN_ACTIVE

    0x00000010

    NUIOO_OPEN_FLAGS

    0x000000F0

    NUIOO_RESET_IN_PROGRESS

    0x00000100

    NUIOO_NOT_RESETTING

    0x00000000

    NUIOO_RESET_FLAGS

    0x00000100

    NUIOO_MEDIA_CONNECTED

    0x00000000

    NUIOO_MEDIA_DISCONNECTED

    0x00000200

    NUIOO_MEDIA_FLAGS

    0x00000200

    NUIOO_READ_SERVICING

    0x00100000

    NUIOO_READ_FLAGS

    0x00100000

    NUIOO_UNBIND_RECEIVED

    0x10000000

    NUIOO_UNBIND_FLAGS

    0x10000000

  • RefCount
    Count of pended read IRPs, queued or incomplete write IRPs, and existence of binding.
  • Lock
    Indicates an NDISUIO lock.
  • pFileObject
    Pointer to the file assignment for the open device.
  • BindingHandle
    File handle for NDIS binding.
  • SendPacketPool
    File handle for the send packet pool.
  • SendBufferPool
    File handle for the send buffer.
  • RecvPacketPool
    File handle for the received packet pool.
  • RecvBufferPool
    File handle for the receive buffer.
  • MacOptions
    Media access options.
  • MaxFrameSize
    Maximum frame size permitted, in bytes.
  • PendedWrites
    Pended write IRP queue.
  • PendedSendCount
    Number of pended writes.
  • PendedReads
    Pended read IRP queue.
  • PendedReadCount
    Number of pended reads.
  • ReadEvent
    Event to trigger when bBlockingRead is TRUE.
  • bBlockingRead
    Boolean value indicating that ReadEvent has occurred.
  • dwReadTimeOut
    Amount of time to wait for incoming reads.
  • RecvPktQueue
    Not used.
  • RecvPktCount
    Not used.
  • PowerState
    Indication of the device power state.
  • DeviceDescr
    Friendly name of the DeviceName adapter.
  • BindStatus
    Existence of the bind status for the device designated by NdisOpenAdapter or NdisCloseAdapter.
  • BindEvent
    Notification event that adapter binding or unbinding is complete.
  • bRunningOnWin9x
    Not used.
  • EthType
    Ethernet frame type of interest, which can be tuned for each adapter context. The following table shows the valid EthType values.

    EthType Value

    NUIO_ETH_TYPE

    0x8001

    NUIO_8021P_TAG_TYPE

    0x0081

  • oc_sig
    Validation signature.

Remarks

While an NDIS binding exists, read I/O request packets (IRPs) are queued on this structure and processed when packets are received. If data arrives in the absence of a pended read, NDISUIO saves the contents of the latest packet received. If no binding exists, the read packet fails.

NDISUIO uses write IRPs to send data. Each write IRP maps to a single NDIS packet. Packet send-completion is mapped to write IRP completion. If no active binding exists, write IRPs fail.

Requirements

Header nuiouser.h
Windows Embedded CE Windows CE .NET 4.0 and later

See Also

Reference

NDIS Structures
ProtocolBindAdapter
NdisOpenAdapter
NdisCloseAdapter