Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1992 Microsoft Corporation
Module Name:
_read.c
Abstract:
Author:
Thomas J. Dimitri (TommyD) 08-May-1992
Environment:
Kernel Mode - Or whatever is the equivalent on OS/2 and DOS.
Revision History:
--*/ #include "asyncall.h"
#define RAISEIRQL
#if DBG
ULONG UlFramesUp = 0; #endif
#ifdef LALALA
PVOID CurrentWatchPoint=0;
static VOID AsyncSetBreakPoint( PVOID LinearAddress) {
ASSERT(CurrentWatchPoint == 0); CurrentWatchPoint = LinearAddress;
_asm { mov eax, LinearAddress mov dr0, eax mov eax, dr7 or eax, 10303h mov dr7, eax } }
static VOID AsyncRemoveBreakPoint( PVOID LinearAddress) {
ASSERT(CurrentWatchPoint == LinearAddress); CurrentWatchPoint = 0;
_asm {
mov eax, dr7 mov ebx, 10003h not ebx and eax, ebx mov dr7, eax
} } #endif
// the function below is called by an executive worker thread
// to start reading frames.
NTSTATUS AsyncStartReads( PASYNC_INFO pInfo )
/*++
--*/
{ UCHAR eventChar;
//
// Initialize locals.
//
//
// assign back ptr from frame to adapter
//
pInfo->AsyncFrame->Adapter = pInfo->Adapter;
//
// assign other back ptr
//
pInfo->AsyncFrame->Info = pInfo;
//
// set baud rate and timeouts
// we use a linkspeed of 0 to indicate
// no read interval timeout
//
SetSerialStuff(NULL, pInfo, 0);
eventChar = PPP_FLAG_BYTE;
if (pInfo->GetLinkInfo.RecvFramingBits & SLIP_FRAMING) {
eventChar = SLIP_END_BYTE; }
SerialSetEventChar(pInfo, eventChar);
//
// We will wait on whenever we get the special PPP flag byte
// or whenever we get RLSD or DSR changes (for possible hang-up
// cases) or when the receive buffer is getting full.
//
SerialSetWaitMask(pInfo, pInfo->WaitMaskToUse) ;
//
// For SLIP and PPP reads we use the AsyncPPPRead routine.
//
AsyncPPPRead(pInfo);
return NDIS_STATUS_SUCCESS; }
VOID AsyncIndicateFragment( IN PASYNC_INFO pInfo, IN ULONG Error) {
PASYNC_ADAPTER pAdapter=pInfo->Adapter; NDIS_MAC_FRAGMENT AsyncFragment;
AsyncFragment.NdisLinkContext = pInfo->NdisLinkContext; AsyncFragment.Errors = Error;
//
// Tell the transport above (or really RasHub) that a frame
// was just dropped. Give the endpoint when doing so.
//
NdisMIndicateStatus( pAdapter->MiniportHandle, NDIS_STATUS_WAN_FRAGMENT, // General Status
&AsyncFragment, // Specific Status (address)
sizeof(NDIS_MAC_FRAGMENT));
}
|