|
|
/*++
Copyright (c) 2000, Microsoft Corporation
Module Name: eldeviceio.h
Abstract:
This module contains declarations for media-management and device I/O. The module interfaces with WMI, NDIS for device managment, and NDIS UIO for read/write of data. The routines declared here operate asynchronously on the handles associated with an I/O completion port opened on the ndis uio driver.
Revision History:
sachins, Apr 23 2000, Created
--*/
#ifndef _EAPOL_DEVICEIO_H_
#define _EAPOL_DEVICEIO_H_
//
// Hash table definition for interfaces
//
typedef struct _EAPOL_ITF { struct _EAPOL_ITF *pNext; WCHAR *pwszInterfaceDesc; // Friendly name of interface
WCHAR *pwszInterfaceGUID; // GUID
} EAPOL_ITF, *PEAPOL_ITF;
typedef struct _ITF_BUCKET { EAPOL_ITF *pItf; } ITF_BUCKET, *PITF_BUCKET;
typedef struct _ITF_TABLE { ITF_BUCKET *pITFBuckets; DWORD dwNumITFBuckets; } ITF_TABLE, *PITF_TABLE;
//
// Variables global to eldeviceio.h
//
// Interface table containing interface friendly-name GUID pair
ITF_TABLE g_ITFTable;
// Read-write lock for interface table synchronization
READ_WRITE_LOCK g_ITFLock;
//
// FUNCTION DECLARATIONS
//
DWORD ElMediaInit ( );
DWORD ElMediaDeInit ( );
DWORD ElMediaEventsHandler ( IN PWZC_DEVICE_NOTIF pwzcDeviceNotif );
DWORD ElMediaSenseRegister ( IN BOOL Register );
VOID ElMediaSenseCallback ( IN PWNODE_HEADER pWnodeHeader, IN UINT_PTR uiNotificationContext );
DWORD WINAPI ElMediaSenseCallbackWorker ( IN PVOID pvContext );
DWORD ElBindingsNotificationRegister ( IN BOOL fRegister );
VOID ElBindingsNotificationCallback ( IN PWNODE_HEADER pWnodeHeader, IN UINT_PTR uiNotificationContext );
DWORD WINAPI ElBindingsNotificationCallbackWorker ( IN PVOID pvContext );
DWORD ElDeviceNotificationRegister ( IN BOOL fRegister );
DWORD ElDeviceNotificationHandler ( IN PVOID lpEventData, IN DWORD dwEventType );
DWORD WINAPI ElDeviceNotificationHandlerWorker ( IN PVOID pvContext );
DWORD ElEnumAndOpenInterfaces ( IN WCHAR *pwszDesiredDescription, IN WCHAR *pwszDesiredGUID, IN DWORD dwHandle, IN PRAW_DATA prdUserData );
DWORD ElOpenInterfaceHandle ( IN WCHAR *pwszDeviceName, OUT HANDLE hDevice );
DWORD ElCloseInterfaceHandle ( IN HANDLE hDevice, IN LPWSTR pwszDeviceGUID );
DWORD ElReadFromInterface ( IN HANDLE hDevice, IN PEAPOL_BUFFER pBuffer, IN DWORD dwBufferLength );
DWORD ElWriteToInterface ( IN HANDLE hDevice, IN PEAPOL_BUFFER pBuffer, IN DWORD dwBufferLength );
DWORD ElGetCardStatus ( UNICODE_STRING *pInterface, DWORD *pdwNetCardStatus, DWORD *pdwMediaType );
DWORD ElHashInterfaceDescToBucket ( IN WCHAR *pwszInterfaceDesc );
PEAPOL_ITF ElGetITFPointerFromInterfaceDesc ( IN WCHAR *pwszInterfaceDesc );
VOID ElRemoveITFFromTable ( IN EAPOL_ITF *pITF );
DWORD ElNdisuioEnumerateInterfaces ( IN OUT PNDIS_ENUM_INTF pItfBuffer, IN DWORD dwAvailableInterfaces, IN DWORD dwBufferSize );
DWORD ElShutdownInterface ( IN WCHAR *pwszGUID );
DWORD ElCreateInterfaceEntry ( IN WCHAR *pwszInterfaceGUID, IN WCHAR *pwszInterfaceDescription );
#endif //_EAPOL_DEVICEIO_H_
|