=?UTF-8?Q?Andr=C3=A9=20Hentschel=20?=: ndis.sys: Add NdisRegisterProtocol stub.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Feb 22 08:57:39 CST 2016


Module: wine
Branch: master
Commit: f71f7db63caeffdc92ede12bf15e8f7d184addd4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=f71f7db63caeffdc92ede12bf15e8f7d184addd4

Author: André Hentschel <nerv at dawncrow.de>
Date:   Fri Feb 19 23:43:44 2016 +0100

ndis.sys: Add NdisRegisterProtocol stub.

Signed-off-by: André Hentschel <nerv at dawncrow.de>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ndis.sys/main.c        |   8 ++
 dlls/ndis.sys/ndis.sys.spec |   2 +-
 include/ddk/ndis.h          | 183 +++++++++++++++++++++++++++++++++++++++++++-
 3 files changed, 191 insertions(+), 2 deletions(-)

diff --git a/dlls/ndis.sys/main.c b/dlls/ndis.sys/main.c
index 6e1bb9b..90c8c3c 100644
--- a/dlls/ndis.sys/main.c
+++ b/dlls/ndis.sys/main.c
@@ -2,6 +2,7 @@
  * ndis.sys
  *
  * Copyright 2014 Austin English
+ * Copyright 2016 André Hentschel
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -49,6 +50,13 @@ void WINAPI NdisAllocateSpinLock(NDIS_SPIN_LOCK *lock)
     FIXME("(%p): stub\n", lock);
 }
 
+void WINAPI NdisRegisterProtocol(NDIS_STATUS *status, NDIS_HANDLE *handle,
+                                 NDIS_PROTOCOL_CHARACTERISTICS *prot, UINT len)
+{
+    FIXME("(%p, %p, %p, %u): stub\n", status, handle, prot, len);
+    *status = NDIS_STATUS_FAILURE;
+}
+
 CCHAR WINAPI NdisSystemProcessorCount(void)
 {
     SYSTEM_INFO si;
diff --git a/dlls/ndis.sys/ndis.sys.spec b/dlls/ndis.sys/ndis.sys.spec
index 8957d8f..b478c39 100644
--- a/dlls/ndis.sys/ndis.sys.spec
+++ b/dlls/ndis.sys/ndis.sys.spec
@@ -238,7 +238,7 @@
 @ stub NdisReadNetworkAddress
 @ stub NdisReadPciSlotInformation
 @ stub NdisReadPcmciaAttributeMemory
-@ stub NdisRegisterProtocol
+@ stdcall NdisRegisterProtocol(ptr ptr ptr long)
 @ stub NdisRegisterTdiCallBack
 @ stub NdisReleaseReadWriteLock
 @ stub NdisReleaseSpinLock
diff --git a/include/ddk/ndis.h b/include/ddk/ndis.h
index ffa1396..a4b0e54 100644
--- a/include/ddk/ndis.h
+++ b/include/ddk/ndis.h
@@ -2,6 +2,7 @@
  * ndis.h
  *
  * Copyright 2015 Austin English
+ * Copyright 2016 André Hentschel
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -20,8 +21,97 @@
 #ifndef _NDIS_
 #define _NDIS_
 
-typedef void *NDIS_HANDLE, *PNDIS_HANDLE;
+typedef ULONG NDIS_AF, *PNDIS_AF;
+typedef MDL   NDIS_BUFFER, *PNDIS_BUFFER;
+typedef void *NDIS_HANDLE, *PNDIS_HANDLE, *PNDIS_PACKET_POOL;
+typedef ULONG NDIS_OID, *PNDIS_OID;
 typedef int   NDIS_STATUS, *PNDIS_STATUS;
+typedef UNICODE_STRING NDIS_STRING, *PNDIS_STRING;
+
+typedef enum _NDIS_REQUEST_TYPE
+{
+    NdisRequestQueryInformation,
+    NdisRequestSetInformation,
+    NdisRequestQueryStatistics,
+    NdisRequestOpen,
+    NdisRequestClose,
+    NdisRequestSend,
+    NdisRequestTransferData,
+    NdisRequestReset,
+    NdisRequestGeneric1,
+    NdisRequestGeneric2,
+    NdisRequestGeneric3,
+    NdisRequestGeneric4,
+    NdisRequestMethod,
+} NDIS_REQUEST_TYPE, *PNDIS_REQUEST_TYPE;
+
+typedef enum _NET_PNP_EVENT_CODE
+{
+    NetEventSetPower,
+    NetEventQueryPower,
+    NetEventQueryRemoveDevice,
+    NetEventCancelRemoveDevice,
+    NetEventReconfigure,
+    NetEventBindList,
+    NetEventBindsComplete,
+    NetEventPnPCapabilities,
+    NetEventPause,
+    NetEventRestart,
+    NetEventPortActivation,
+    NetEventPortDeactivation,
+    NetEventIMReEnableDevice,
+    NetEventMaximum,
+} NET_PNP_EVENT_CODE, *PNET_PNP_EVENT_CODE;
+
+
+typedef struct _NET_PNP_EVENT
+{
+    NET_PNP_EVENT_CODE NetEvent;
+    PVOID Buffer;
+    ULONG BufferLength;
+    ULONG_PTR NdisReserved[4];
+    ULONG_PTR TransportReserved[4];
+    ULONG_PTR TdiReserved[4];
+    ULONG_PTR TdiClientReserved[4];
+} NET_PNP_EVENT, *PNET_PNP_EVENT;
+
+typedef struct _NDIS_PACKET_PRIVATE
+{
+    UINT PhysicalCount;
+    UINT TotalLength;
+    PNDIS_BUFFER Head;
+    PNDIS_BUFFER Tail;
+    PNDIS_PACKET_POOL Pool;
+    UINT Count;
+    ULONG Flags;
+    BOOLEAN ValidCounts;
+    UCHAR NdisPacketFlags;
+    USHORT NdisPacketOobOffset;
+} NDIS_PACKET_PRIVATE, *PNDIS_PACKET_PRIVATE;
+
+typedef struct _NDIS_PACKET
+{
+    NDIS_PACKET_PRIVATE Private;
+    union
+    {
+        struct
+        {
+            UCHAR MiniportReserved[2 * sizeof(void*)];
+            UCHAR WrapperReserved[2 * sizeof(void*)];
+        } DUMMYSTRUCTNAME;
+        struct
+        {
+            UCHAR MiniportReservedEx[3 * sizeof(void*)];
+            UCHAR WrapperReservedEx[sizeof(void*)];
+        } DUMMYSTRUCTNAME1;
+        struct
+        {
+            UCHAR MacReserved[4 * sizeof(void*)];
+        } DUMMYSTRUCTNAME2;
+    } DUMMYUNIONNAME;
+    ULONG_PTR Reserved[2];
+    UCHAR ProtocolReserved[1];
+} NDIS_PACKET, *PNDIS_PACKET, **PPNDIS_PACKET;
 
 typedef struct _NDIS_SPIN_LOCK
 {
@@ -29,10 +119,101 @@ typedef struct _NDIS_SPIN_LOCK
   KIRQL      OldIrql;
 } NDIS_SPIN_LOCK, *PNDIS_SPIN_LOCK;
 
+
+typedef struct _NDIS_REQUEST
+{
+    UCHAR MacReserved[4 * sizeof(void*)];
+    NDIS_REQUEST_TYPE RequestType;
+    union _DATA
+    {
+        struct QUERY_INFORMATION
+        {
+            NDIS_OID Oid;
+            PVOID InformationBuffer;
+            UINT InformationBufferLength;
+            UINT BytesWritten;
+            UINT BytesNeeded;
+        } QUERY_INFORMATION;
+        struct SET_INFORMATION
+        {
+            NDIS_OID Oid;
+            PVOID InformationBuffer;
+            UINT InformationBufferLength;
+            UINT BytesRead;
+            UINT BytesNeeded;
+        } SET_INFORMATION;
+    } DATA;
+    UCHAR NdisReserved[9 * sizeof(void*)];
+    union
+    {
+        UCHAR CallMgrReserved[2 * sizeof(void*)];
+        UCHAR ProtocolReserved[2 * sizeof(void*)];
+    } DUMMYUNIONNAME;
+    UCHAR MiniportReserved[2 * sizeof(void*)];
+} NDIS_REQUEST, *PNDIS_REQUEST;
+
+typedef struct _CO_ADDRESS_FAMILY
+{
+    NDIS_AF AddressFamily;
+    ULONG MajorVersion;
+    ULONG MinorVersion;
+} CO_ADDRESS_FAMILY, *PCO_ADDRESS_FAMILY;
+
+
+typedef void (NTAPI *CO_AF_REGISTER_NOTIFY_HANDLER)(NDIS_HANDLE, PCO_ADDRESS_FAMILY);
+typedef void (NTAPI *CO_SEND_COMPLETE_HANDLER)(NDIS_STATUS, NDIS_HANDLE, PNDIS_PACKET);
+typedef void (NTAPI *CO_STATUS_HANDLER)(NDIS_HANDLE, NDIS_HANDLE, NDIS_STATUS, PVOID, UINT);
+typedef UINT (NTAPI *CO_RECEIVE_PACKET_HANDLER)(NDIS_HANDLE, NDIS_HANDLE, PNDIS_PACKET);
+typedef void (NTAPI *OPEN_ADAPTER_COMPLETE_HANDLER)(NDIS_HANDLE, NDIS_STATUS, NDIS_STATUS);
+typedef void (NTAPI *CLOSE_ADAPTER_COMPLETE_HANDLER)(NDIS_HANDLE, NDIS_STATUS);
+typedef void (NTAPI *RESET_COMPLETE_HANDLER)(NDIS_HANDLE, NDIS_STATUS);
+typedef void (NTAPI *REQUEST_COMPLETE_HANDLER)(NDIS_HANDLE, PNDIS_REQUEST, NDIS_STATUS);
+typedef void (NTAPI *STATUS_HANDLER)(NDIS_HANDLE, NDIS_STATUS, PVOID, UINT);
+typedef void (NTAPI *STATUS_COMPLETE_HANDLER)(NDIS_HANDLE);
+typedef void (NTAPI *SEND_COMPLETE_HANDLER)(NDIS_HANDLE, PNDIS_PACKET, NDIS_STATUS);
+typedef void (NTAPI *TRANSFER_DATA_COMPLETE_HANDLER)(NDIS_HANDLE, PNDIS_PACKET, NDIS_STATUS, UINT);
+typedef NDIS_STATUS (NTAPI *RECEIVE_HANDLER)(NDIS_HANDLE, NDIS_HANDLE, PVOID, UINT, PVOID, UINT, UINT);
+typedef void (NTAPI *RECEIVE_COMPLETE_HANDLER)(NDIS_HANDLE);
+typedef INT  (NTAPI *RECEIVE_PACKET_HANDLER)(NDIS_HANDLE, PNDIS_PACKET);
+typedef void (NTAPI *BIND_HANDLER)(PNDIS_STATUS, NDIS_HANDLE, PNDIS_STRING, PVOID, PVOID);
+typedef void (NTAPI *UNBIND_HANDLER)(PNDIS_STATUS, NDIS_HANDLE, NDIS_HANDLE);
+typedef NDIS_STATUS (NTAPI *PNP_EVENT_HANDLER)(NDIS_HANDLE, PNET_PNP_EVENT);
+typedef void (NTAPI *UNLOAD_PROTOCOL_HANDLER)(void);
+
+
+typedef struct _NDIS_PROTOCOL_CHARACTERISTICS
+{
+    UCHAR MajorNdisVersion;
+    UCHAR MinorNdisVersion;
+    USHORT Filler;
+    UINT Reserved;
+    OPEN_ADAPTER_COMPLETE_HANDLER OpenAdapterCompleteHandler;
+    CLOSE_ADAPTER_COMPLETE_HANDLER CloseAdapterCompleteHandler;
+    SEND_COMPLETE_HANDLER SendCompleteHandler;
+    TRANSFER_DATA_COMPLETE_HANDLER TransferDataCompleteHandler;
+    RESET_COMPLETE_HANDLER ResetCompleteHandler;
+    REQUEST_COMPLETE_HANDLER RequestCompleteHandler;
+    RECEIVE_HANDLER ReceiveHandler;
+    RECEIVE_COMPLETE_HANDLER ReceiveCompleteHandler;
+    STATUS_HANDLER StatusHandler;
+    STATUS_COMPLETE_HANDLER StatusCompleteHandler;
+    NDIS_STRING Name;
+    RECEIVE_PACKET_HANDLER ReceivePacketHandler;
+    BIND_HANDLER BindAdapterHandler;
+    UNBIND_HANDLER UnbindAdapterHandler;
+    PNP_EVENT_HANDLER PnPEventHandler;
+    UNLOAD_PROTOCOL_HANDLER UnloadHandler;
+    CO_SEND_COMPLETE_HANDLER CoSendCompleteHandler;
+    CO_STATUS_HANDLER CoStatusHandler;
+    CO_RECEIVE_PACKET_HANDLER CoReceivePacketHandler;
+    CO_AF_REGISTER_NOTIFY_HANDLER CoAfRegisterNotifyHandler;
+} NDIS_PROTOCOL_CHARACTERISTICS, *PNDIS_PROTOCOL_CHARACTERISTICS;
+
 #define NDIS_STATUS_FAILURE                                ((NDIS_STATUS) STATUS_UNSUCCESSFUL)
 
 NDIS_STATUS WINAPI NdisAllocateMemoryWithTag(void **, UINT, ULONG);
 void WINAPI NdisAllocateSpinLock(NDIS_SPIN_LOCK *);
+void WINAPI NdisRegisterProtocol(NDIS_STATUS *, NDIS_HANDLE *, NDIS_PROTOCOL_CHARACTERISTICS *, UINT);
 CCHAR WINAPI NdisSystemProcessorCount(void);
 
 #endif /* _NDIS_ */




More information about the wine-cvs mailing list