mirror of
https://github.com/reactos/reactos.git
synced 2025-04-26 16:40:27 +00:00
- Fix support for asynchronously completed requests
svn path=/trunk/; revision=40704
This commit is contained in:
parent
6156cae916
commit
d818cea15d
1 changed files with 13 additions and 27 deletions
|
@ -259,22 +259,6 @@ MiniIndicateData(
|
||||||
NDIS_DbgPrint(MAX_TRACE, ("Leaving.\n"));
|
NDIS_DbgPrint(MAX_TRACE, ("Leaving.\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID NTAPI
|
|
||||||
MiniQueryComplete(
|
|
||||||
IN NDIS_HANDLE MiniportAdapterHandle,
|
|
||||||
IN NDIS_STATUS Status)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
VOID NTAPI
|
|
||||||
MiniSetComplete(
|
|
||||||
IN NDIS_HANDLE MiniportAdapterHandle,
|
|
||||||
IN NDIS_STATUS Status)
|
|
||||||
{
|
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
VOID NTAPI
|
VOID NTAPI
|
||||||
MiniIndicateReceivePacket(
|
MiniIndicateReceivePacket(
|
||||||
|
@ -409,16 +393,14 @@ MiniResetComplete(
|
||||||
KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql);
|
KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
VOID NTAPI
|
VOID NTAPI
|
||||||
MiniRequestComplete(
|
MiniRequestComplete(
|
||||||
IN PNDIS_HANDLE MiniportAdapterHandle,
|
IN NDIS_HANDLE MiniportAdapterHandle,
|
||||||
IN PNDIS_REQUEST Request,
|
|
||||||
IN NDIS_STATUS Status)
|
IN NDIS_STATUS Status)
|
||||||
{
|
{
|
||||||
PLOGICAL_ADAPTER Adapter = (PLOGICAL_ADAPTER)MiniportAdapterHandle;
|
PLOGICAL_ADAPTER Adapter = (PLOGICAL_ADAPTER)MiniportAdapterHandle;
|
||||||
PNDIS_REQUEST_MAC_BLOCK MacBlock = (PNDIS_REQUEST_MAC_BLOCK)Request->MacReserved;
|
PNDIS_REQUEST Request;
|
||||||
|
PNDIS_REQUEST_MAC_BLOCK MacBlock;
|
||||||
KIRQL OldIrql;
|
KIRQL OldIrql;
|
||||||
|
|
||||||
NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n"));
|
NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n"));
|
||||||
|
@ -426,15 +408,22 @@ MiniRequestComplete(
|
||||||
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
|
KeRaiseIrql(DISPATCH_LEVEL, &OldIrql);
|
||||||
|
|
||||||
KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock);
|
KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock);
|
||||||
Adapter->NdisMiniportBlock.PendingRequest = NULL;
|
Request = Adapter->NdisMiniportBlock.PendingRequest;
|
||||||
KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock);
|
KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock);
|
||||||
|
|
||||||
|
MacBlock = (PNDIS_REQUEST_MAC_BLOCK)Request->MacReserved;
|
||||||
|
|
||||||
if( MacBlock->Binding->RequestCompleteHandler ) {
|
if( MacBlock->Binding->RequestCompleteHandler ) {
|
||||||
(*MacBlock->Binding->RequestCompleteHandler)(
|
(*MacBlock->Binding->RequestCompleteHandler)(
|
||||||
MacBlock->Binding->ProtocolBindingContext,
|
MacBlock->Binding->ProtocolBindingContext,
|
||||||
Request,
|
Request,
|
||||||
Status);
|
Status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock);
|
||||||
|
Adapter->NdisMiniportBlock.PendingRequest = NULL;
|
||||||
|
KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock);
|
||||||
|
|
||||||
KeLowerIrql(OldIrql);
|
KeLowerIrql(OldIrql);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1148,17 +1137,14 @@ MiniportWorker(IN PDEVICE_OBJECT DeviceObject, IN PVOID Context)
|
||||||
{
|
{
|
||||||
case NdisRequestQueryInformation:
|
case NdisRequestQueryInformation:
|
||||||
NdisMQueryInformationComplete((NDIS_HANDLE)Adapter, NdisStatus);
|
NdisMQueryInformationComplete((NDIS_HANDLE)Adapter, NdisStatus);
|
||||||
MiniRequestComplete( (NDIS_HANDLE)Adapter, (PNDIS_REQUEST)WorkItemContext, NdisStatus );
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case NdisRequestSetInformation:
|
case NdisRequestSetInformation:
|
||||||
NdisMSetInformationComplete((NDIS_HANDLE)Adapter, NdisStatus);
|
NdisMSetInformationComplete((NDIS_HANDLE)Adapter, NdisStatus);
|
||||||
MiniRequestComplete( (NDIS_HANDLE)Adapter, (PNDIS_REQUEST)WorkItemContext, NdisStatus );
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
NDIS_DbgPrint(MIN_TRACE, ("Unknown NDIS request type.\n"));
|
NDIS_DbgPrint(MIN_TRACE, ("Unknown NDIS request type.\n"));
|
||||||
MiniRequestComplete( (NDIS_HANDLE)Adapter, (PNDIS_REQUEST)WorkItemContext, NdisStatus );
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1842,8 +1828,8 @@ NdisIPnPStartDevice(
|
||||||
Adapter->NdisMiniportBlock.StatusHandler = MiniStatus;
|
Adapter->NdisMiniportBlock.StatusHandler = MiniStatus;
|
||||||
Adapter->NdisMiniportBlock.StatusCompleteHandler= MiniStatusComplete;
|
Adapter->NdisMiniportBlock.StatusCompleteHandler= MiniStatusComplete;
|
||||||
Adapter->NdisMiniportBlock.SendPacketsHandler = ProSendPackets;
|
Adapter->NdisMiniportBlock.SendPacketsHandler = ProSendPackets;
|
||||||
Adapter->NdisMiniportBlock.QueryCompleteHandler = MiniQueryComplete;
|
Adapter->NdisMiniportBlock.QueryCompleteHandler = MiniRequestComplete;
|
||||||
Adapter->NdisMiniportBlock.SetCompleteHandler = MiniSetComplete;
|
Adapter->NdisMiniportBlock.SetCompleteHandler = MiniRequestComplete;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Call MiniportInitialize.
|
* Call MiniportInitialize.
|
||||||
|
|
Loading…
Reference in a new issue