亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? tmhal.c

?? PNX系列設(shè)備驅(qū)動(dòng) PNX系列設(shè)備驅(qū)動(dòng)
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
	}

	return statusSuccess;
}

BOOLEAN	halHardwareInterruptHandler (
    PKINTERRUPT Interrupt,
    PVOID ServiceContext  )
{
	// we should be getting the board handle from the IRQHandle
	HalObject*	Hal = (HalObject*)ServiceContext;
	UInt32	InterruptControl;


	InterruptControl = *(Hal->MMIOAddrKernel + INT_CTL);

	// here SelfInterrupt indicates PCI Interrupt A
	// INT#A = 0, INT#B = 1, INT#C = 2, INT#D = 3

	if ( ( InterruptControl &
		( (1 << Hal->SelfInterrupt)  | (0x10 << Hal->SelfInterrupt) ) ) !=
		(ULONG)( (1 << Hal->SelfInterrupt)  | (0x10 << Hal->SelfInterrupt) ) )
	{
		return FALSE;
	}

	/*
	DPF(0,("tmman:halHardwareInterruptHandler:Interrupt[%x]:ServiceContext[%x]\n",
		Interrupt, ServiceContext ));	
	*/

	// check if some device driver has installed a ISR hook function */
	if ( Hal->ISRHookFunction )
	{
		/* call the function */
		if ( Hal->ISRHookFunction ( Hal->ISRHookContext ) == FALSE )
		{
			/* Queue the DPc only if the Hook did not handle the ISR*/
			IoRequestDpc ( Hal->DeviceObject, Hal->DeviceObject->CurrentIrp, Hal );
		}
	}
	else
	{
		IoRequestDpc ( Hal->DeviceObject, Hal->DeviceObject->CurrentIrp, Hal );
	}

	halAcknowledgeInterrupt ( (UInt32)Hal ); 

    return TRUE;
}

VOID	halDeferredInterruptHandler (
	PKDPC Dpc,
	PDEVICE_OBJECT DeviceObject,
	PIRP Irp,
	PVOID Context )
{
	HalObject*	Hal = (HalObject*)Context;
/*	DPF(0,("HL{")); */
	/*
	DPF(0,("tmman:halDeferredInterruptHandler:DPC[%x]:DeviceObject[%x]:Irp[%x]:Context[%x]\n",
		Dpc, DeviceObject, Irp, Context ));	
	*/

	// check if some device driver has installed a ISR hook function */
	if ( Hal->DPCHookFunction )
	{
		/* call the function */
		if ( Hal->DPCHookFunction ( Hal->DPCHookContext ) == FALSE )
		{
			/* Queue the DPc only if the Hook did not handle the ISR*/
			Hal->Handler(Hal->Context);
		}
	}
	else
	{
		Hal->Handler(Hal->Context);
	}

/*	DPF(0,("}HL" )); */
}


UInt32	halAccess32( 
	UInt32	HalHandle,
	UInt32 volatile Value )
{
	UInt32	SwappedValue,TempValue;
	TempValue = Value;

	/* we don't validate the object for efficiency reasons */
	if ( ((HalObject*)HalHandle)->Swapping )
	{
		((UInt8*)&SwappedValue)[3] = ((UInt8*)&TempValue)[0];
		((UInt8*)&SwappedValue)[2] = ((UInt8*)&TempValue)[1];
		((UInt8*)&SwappedValue)[1] = ((UInt8*)&TempValue)[2];
		((UInt8*)&SwappedValue)[0] = ((UInt8*)&TempValue)[3];
/*		DPF(0,("[%x->%x]",TempValue, SwappedValue )); */
		return ( SwappedValue );
	}
	else
	{
		return Value;
	}
	
}

UInt16	halAccess16 ( 
	UInt32	HalHandle,
	UInt16 volatile Value )
{
	/* we don't validate the object for efficiency reasons */
	UInt16	SwappedValue,TempValue;
	TempValue = Value;

	if ( ((HalObject*)HalHandle)->Swapping )
	{
		((UInt8*)&SwappedValue)[1] = ((UInt8*)&TempValue)[0];
		((UInt8*)&SwappedValue)[0] = ((UInt8*)&TempValue)[1];
		/* DPF(0,("[%x->%x]",TempValue, SwappedValue )); */
		return ( SwappedValue );
	}
	else
	{
		return Value;
	}
	return Value;
}

void	halCopyback( Pointer CacheBlock, UInt32 BlockCount  )
{
	/*	no implementation for this platform */
}

void	halAccessEnable ( 
	UInt32	HalHandle )
{
	/*	no implementation for this platform */
}

void	halAccessDisable ( 
	UInt32	HalHandle )
{
	/*	no implementation for this platform */
}


void	halDumpObject (
 	UInt32	HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;

    DPF(1,("\ntmman:halDumpObject\n"));
	
    DPF(1,("[SelfInterrupt:%x]\n", Hal->SelfInterrupt));
	DPF(1,("[PeerInterrupt:%x]\n", Hal->PeerInterrupt));
	DPF(1,("[Handler:%x]\n", Hal->Handler));
	DPF(1,("[Context:%x]\n", Hal->Context));
	DPF(1,("[BusNumber:%x]\n", Hal->BusNumber));
	DPF(1,("[SlotNumber|DeviceNumber:%x|FunctionNumber:%x]\n",
		Hal->SlotNumber.u.bits.DeviceNumber, Hal->SlotNumber.u.bits.FunctionNumber));

	DPF(1,("[MMIOAddrPhysical|HighPart:%x|LowPart:%x]\n", 
		Hal->MMIOAddrPhysical.u.HighPart, Hal->MMIOAddrPhysical.u.LowPart));
	DPF(1,("[MMIOLength:%x]\n", Hal->MMIOLength));
	DPF(1,("[MMIOAddrKernel:%x]\n", Hal->MMIOAddrKernel));


	DPF(1,("[SDRAMAddrPhysical|HighPart:%x|LowPart:%x]\n", 
		Hal->SDRAMAddrPhysical.u.HighPart, Hal->SDRAMAddrPhysical.u.LowPart));
	DPF(1,("[SDRAMLength:%x]\n", Hal->SDRAMLength));
	DPF(1,("[SDRAMAddrKernel:%x]\n", Hal->SDRAMAddrKernel));

	DPF(1,("[MappedInterruptVector:%x]\n", Hal->MappedInterruptVector));
	DPF(1,("[Irql:%x]\n", Hal->Irql));
	DPF(1,("[ProcessorEnableMask:%x]\n", Hal->ProcessorEnableMask));
	DPF(1,("[InterruptObject:%x]\n", Hal->InterruptObject));
	DPF(1,("[DeviceObject:%x]\n", Hal->DeviceObject));
	DPF(1,("[DriverObject:%x]\n", Hal->DriverObject));
	DPF(1,("[TMManDeviceObject:%x]\n", Hal->TMManDeviceObject));
	DPF(1,("\n"));

}    



///////////////////////////////////////////////////////////////////////////
/////				These Headers should be moved to platform.h 
///////////////////////////////////////////////////////////////////////////
/* Helper functions */
PVOID	halMapKernelAddressToUserAddress ( 
	HANDLE PhysicalMemoryHandle, 
	PVOID KernelModeVirtualAddress, 
	ULONG Length )
{
    NTSTATUS NTStatus;
    PHYSICAL_ADDRESS PhysicalAddress, PhysicalAddressBase;
    PVOID UserModeVirtualAddress = NULL;

    // need the physical address
    PhysicalAddressBase = 
		PhysicalAddress = 
		MmGetPhysicalAddress (KernelModeVirtualAddress);

	// request an additional page - avaoid problems with page boundaries
	Length += PAGE_SIZE;

     
    // get a user address for the physical address
    NTStatus = ZwMapViewOfSection (
        PhysicalMemoryHandle,      // IN HANDLE SectionHandle
        (HANDLE) -1,   // IN HANDLE ProcessHandle
        &UserModeVirtualAddress, // IN OUT PVOID *BaseAddress
        0L,            // IN ULONG ZeroBits
        Length,        // IN ULONG CommitSize
        &PhysicalAddressBase, // IN OUT PLARGE_INTEGER SectionOffset (optional)
        &Length,       // IN OUT PULONG ViewSize
        ViewShare,     // IN SECTION_INHERIT InheritDisposition
        0,             // IN ULONG AllocationType
        PAGE_READWRITE | PAGE_NOCACHE // IN ULONG Protect
    );
    
	if (!NT_SUCCESS (NTStatus)) 
	{
        DPF(0,("tmman:halMapKernelAddressToUserAddress:ZwMapViewOfSection:FAIL[%x]", NTStatus));
		return NULL;
    }

    (ULONG)UserModeVirtualAddress += 
		(ULONG)PhysicalAddress.LowPart - (ULONG)PhysicalAddressBase.LowPart;

	return UserModeVirtualAddress;
}

VOID	halUnmapUserAddress ( PVOID UserModeVirtualAddress )
{
	ZwUnmapViewOfSection( (HANDLE)-1, UserModeVirtualAddress );
}

// these functions go into hal.c
BOOLEAN	halAllocateBusMasterChannel ( 
	UInt32 HalHandle,
	Pointer Context,
	PDRIVER_CONTROL ExecutionRoutine )
{	
	HalObject*	Hal = (HalObject*)HalHandle;
	NTSTATUS NTStatus;
    KIRQL	OldIrql;

    KeRaiseIrql( DISPATCH_LEVEL, &OldIrql );

	NTStatus = IoAllocateAdapterChannel (
		Hal->AdapterObject,
		Hal->DeviceObject,
		Hal->NumberOfMapRegisters,
		ExecutionRoutine,
		Context );

    if ( ! NT_SUCCESS(NTStatus) )
    {
        DPF(0,("tmman:halAllocateBusMasterChannel:IoAllocateAdapterChannel:FAIL[%x]\n", NTStatus ));
		KeLowerIrql( OldIrql );

		return False;
			
	}


    KeLowerIrql( OldIrql );

	return True;
}

BOOLEAN	halFreeBusMasterChannel ( 
	UInt32 HalHandle, 
	Pointer MapRegisterBase, 
	UInt32 MapRegisterCount )
{
	HalObject*	Hal = (HalObject*)HalHandle;
	KIRQL		Irql;
	
	KeRaiseIrql ( DISPATCH_LEVEL, &Irql );

	IoFreeMapRegisters ( Hal->AdapterObject,
		MapRegisterBase,
		MapRegisterCount );

	KeLowerIrql ( Irql );

	return TRUE;
}

Pointer	halGetBusMasterChannel ( 
	UInt32 HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;
	return Hal->AdapterObject;
}

TMStatus	halSwapEndianess ( 
	UInt32	HalHandle,
	Bool	SwapEnable )
{
	HalObject*	Hal = (HalObject*)HalHandle;
	Hal->Swapping = SwapEnable;
	DPF(0,("tmman:halSwapEndianess:Swapping[%x]\n", SwapEnable )); 

	return statusSuccess;
}

TMStatus	halGetEndianess ( 
	UInt32	HalHandle,
	Bool*	SwapEnablePtr )
{
	HalObject*	Hal = (HalObject*)HalHandle;
	*SwapEnablePtr = Hal->Swapping;

	return statusSuccess;
}

PVOID	halMapAdapterMemory ( 
	ULONG				BusNumber,
	PHYSICAL_ADDRESS	PhysicalAddress,
	ULONG				Length )
{
	PHYSICAL_ADDRESS	TranslatedAddress;
	PVOID				MappedAddress;
	ULONG				AddressSpace;

	// Map MMIO address space
    AddressSpace = 0x0; // request memory (0x1 for io space)

	if ( ! HalTranslateBusAddress (
        PCIBus,
        BusNumber,         
        PhysicalAddress,	
        &AddressSpace,			
        &TranslatedAddress ) )
	{
        DPF(0,("tmman:halMapAdapterMemory:HalTranslateBusAddress:FAIL\n" ));
		return NULL;
	}

	if ( ( MappedAddress = MmMapIoSpace(
		TranslatedAddress, 
		Length,
		FALSE ) ) == NULL )
	{
		DPF(0,("tmman:halMapAdapterMemory:MmMapIoSpace:FAIL\n" ));
		return NULL;
	}

	return MappedAddress;
}


VOID halUnmapAdapterMemory (
	PVOID	MappedAddress,
	ULONG	Length )
{
	MmUnmapIoSpace ( MappedAddress, Length );


}


BOOLEAN	halMapSDRAM ( UInt32 HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( TMManGlobal->MapSDRAM )
	{
		return TRUE;
	}


	if ( InterlockedIncrement ( &Hal->SDRAMMapCount ) != 1 )
	{
		return TRUE;
	}

	if ( ( Hal->SDRAMAddrKernel = halMapAdapterMemory ( 
		Hal->BusNumber,
		Hal->SDRAMAddrPhysical,
		Hal->SDRAMLength ) ) == NULL )
	{
		DPF(0,("tmman:halMapSDRAM:halMapAdapterMemory:SDRAM:FAIL\n" ));
		InterlockedDecrement ( &Hal->SDRAMMapCount );
		return  FALSE;
	}

	return TRUE;

}

BOOLEAN	halUnmapSDRAM ( UInt32 HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( TMManGlobal->MapSDRAM )
	{
		return TRUE;
	}

	if ( Hal->SDRAMMapCount == 0 )
	{
		return FALSE;
	}

	if ( InterlockedDecrement  ( &Hal->SDRAMMapCount ) != 0 )
	{
		return TRUE;
	}

	halUnmapAdapterMemory ( Hal->SDRAMAddrKernel, Hal->SDRAMLength );

 	return TRUE;
}

UInt32	halTranslateTargetPhysicalAddress ( 
	UInt32 HalHandle, 
	UInt32 PhysicalAddress )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	return ( PhysicalAddress  + Hal->Offset );
}

Bool	halHookISR ( 
	UInt32 HalHandle, 
	Pointer Function, 
	Pointer Context, 
	UInt32 Flags )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( Hal->ISRHookFunction )
		return FALSE;

	Hal->ISRHookFunction = Function;
	Hal->ISRHookContext = Context;
	Hal->ISRHookFlags = Flags;
	
	return TRUE;
}

Bool	halUnhookISR ( 
	UInt32 HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( ! Hal->ISRHookFunction )
		return FALSE;

	Hal->ISRHookFunction = Null;
	Hal->ISRHookContext = Null;
	Hal->ISRHookFlags = 0;
	
	return TRUE;
}

Bool	halHookDPC ( 
	UInt32 HalHandle, 
	Pointer Function, 
	Pointer Context, 
	UInt32 Flags )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( Hal->DPCHookFunction )
		return FALSE;

	Hal->DPCHookFunction = Function;
	Hal->DPCHookContext = Context;
	Hal->DPCHookFlags = Flags;
	
	return TRUE;
}

Bool	halUnhookDPC ( 
	UInt32 HalHandle )
{
	HalObject*	Hal = (HalObject*)HalHandle;

	if ( ! Hal->DPCHookFunction )
		return FALSE;

	Hal->DPCHookFunction = Null;
	Hal->DPCHookContext = Null;
	Hal->DPCHookFlags = 0;
	
	return TRUE;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲主播在线播放| 狠狠色丁香久久婷婷综| 久久一区二区三区四区| 91免费视频网址| 国产一区二区三区免费观看| 一区二区成人在线视频 | 欧美少妇bbb| 国产成人一级电影| 老司机精品视频导航| 亚洲丝袜制服诱惑| 性做久久久久久免费观看欧美| 99re亚洲国产精品| 国产又黄又大久久| 亚洲成人av中文| 亚洲视频图片小说| 国产午夜亚洲精品理论片色戒 | 经典一区二区三区| 五月天视频一区| 一区二区三区成人| 亚洲婷婷国产精品电影人久久| 久久久久久日产精品| 欧美成人女星排名| 日韩丝袜美女视频| 欧美一区二区成人| 91精品久久久久久久99蜜桃| 欧美理论电影在线| 欧美天堂亚洲电影院在线播放| 91蝌蚪国产九色| 99re热视频精品| 99精品久久久久久| 99久久国产综合精品麻豆| 国产99精品国产| 北条麻妃一区二区三区| 成人做爰69片免费看网站| 国产91丝袜在线播放| 国产成人免费视频网站| 国产999精品久久| 成人涩涩免费视频| 白白色 亚洲乱淫| av电影一区二区| 日本高清视频一区二区| 在线亚洲精品福利网址导航| 欧美私人免费视频| 91精品免费在线| 精品盗摄一区二区三区| 国产亚洲精品bt天堂精选| 国产欧美日韩在线| 1000部国产精品成人观看| 亚洲精品水蜜桃| 日韩一区欧美二区| 久久se这里有精品| 成人精品视频一区二区三区| 91性感美女视频| 欧美视频你懂的| 精品日韩在线一区| 国产精品免费视频网站| 亚洲免费观看高清完整版在线| 亚洲一区日韩精品中文字幕| 青青草视频一区| 国产精品资源站在线| 99久久国产综合精品女不卡| 欧美日韩国产中文| 精品伦理精品一区| 中文字幕精品一区二区精品绿巨人| 亚洲欧美日韩一区二区| 视频在线观看91| 国产精品一区三区| 一本久久a久久精品亚洲| 欧美日韩不卡视频| 久久久99久久| 一二三区精品视频| 韩国av一区二区| 色94色欧美sute亚洲13| 欧美一级精品在线| 综合久久久久综合| 青草国产精品久久久久久| 国产成都精品91一区二区三| 欧日韩精品视频| 久久久久国产免费免费| 亚洲午夜免费电影| 国产91丝袜在线18| 6080日韩午夜伦伦午夜伦| 亚洲国产高清在线观看视频| 午夜电影网亚洲视频| 成人综合在线网站| 欧美不卡123| 一片黄亚洲嫩模| 成人精品免费看| 日韩西西人体444www| 日本一区二区视频在线| 蜜臀av性久久久久蜜臀aⅴ流畅| 成年人国产精品| 日韩免费电影一区| 亚洲综合在线第一页| 国产乱国产乱300精品| 欧美高清一级片在线| 中文字幕在线不卡国产视频| 看片网站欧美日韩| 欧美日免费三级在线| 亚洲欧洲av在线| 91色|porny| 久久久久国产精品麻豆| 视频在线观看国产精品| 91在线国产观看| 久久这里只有精品首页| 日韩黄色小视频| 色8久久人人97超碰香蕉987| 中文字幕精品三区| 国产乱码精品一区二区三| 日韩欧美中文字幕一区| 亚洲成人av一区二区三区| 99国产精品一区| 国产精品欧美极品| 成人一区二区视频| 久久精品人人爽人人爽| 国产一区二区三区在线观看免费视频| 欧美日韩在线综合| 亚洲一二三区在线观看| 在线观看日产精品| 亚洲精品亚洲人成人网在线播放| 成人av网站免费观看| 久久精品日产第一区二区三区高清版 | 欧美网站大全在线观看| 亚洲女同一区二区| 91丨九色丨国产丨porny| 国产精品三级久久久久三级| 粉嫩高潮美女一区二区三区| 国产丝袜美腿一区二区三区| 韩日精品视频一区| 精品毛片乱码1区2区3区| 精彩视频一区二区三区| 久久这里只精品最新地址| 韩国av一区二区三区| 久久久精品天堂| 丰满岳乱妇一区二区三区| 欧美高清在线精品一区| 成人av资源网站| 亚洲人成影院在线观看| 91成人网在线| 午夜精品福利在线| 日韩色视频在线观看| 精品综合免费视频观看| 国产欧美日韩麻豆91| a在线播放不卡| 亚洲最新视频在线观看| 欧美精品久久99久久在免费线| 日韩av成人高清| 久久亚洲影视婷婷| 国产盗摄一区二区| 亚洲品质自拍视频| 欧美精品自拍偷拍| 久久99国产精品麻豆| 国产精品久久久久影院色老大| 91色.com| 蜜臀久久99精品久久久久久9| 精品久久久久久最新网址| 成人性视频网站| 亚洲一区在线电影| 欧美xxx久久| 91碰在线视频| 免费在线观看一区二区三区| 久久蜜桃香蕉精品一区二区三区| 成人蜜臀av电影| 亚洲大片一区二区三区| 精品国产成人在线影院| 成人高清视频免费观看| 亚洲一区二区三区精品在线| 日韩欧美中文一区二区| 大尺度一区二区| 日韩中文字幕区一区有砖一区 | 石原莉奈一区二区三区在线观看| 欧美大片免费久久精品三p| 成人免费视频app| 亚洲h在线观看| 久久久久88色偷偷免费| 色天使色偷偷av一区二区| 久久精品av麻豆的观看方式| 1区2区3区欧美| 日韩精品中午字幕| 91麻豆国产自产在线观看| 麻豆极品一区二区三区| 亚洲视频电影在线| 精品久久国产老人久久综合| 日本国产一区二区| 国产成人免费视频网站高清观看视频| 亚洲午夜日本在线观看| 国产精品三级av| 欧美电视剧在线看免费| 欧美日韩中文另类| 99免费精品在线观看| 国内偷窥港台综合视频在线播放| 亚洲一区在线观看免费| 国产精品女同一区二区三区| 日韩欧美国产综合一区| 欧美在线看片a免费观看| 成人在线视频一区| 国产在线精品一区二区夜色 | 日韩欧美在线不卡| 91福利国产成人精品照片| 成人一级黄色片|