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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ul_wdent.c

?? linux下的RS485的驅動 值得一看
?? C
字號:
/*******************************************************************  uLan Communication - uL_DRV - multiplatform uLan driver  ul_wdent.c	- Windows WDM entry and unload code  (C) Copyright 1996-2004 by Pavel Pisa - project originator        http://cmp.felk.cvut.cz/~pisa  (C) Copyright 1996-2004 PiKRON Ltd.        http://www.pikron.com  (C) Copyright 2002-2004 Petr Smolik    The uLan driver project can be used and distributed   in compliance with any of next licenses   - GPL - GNU Public License     See file COPYING for details.   - LGPL - Lesser GNU Public License   - MPL - Mozilla Public License   - and other licenses added by project originator  Code can be modified and re-distributed under any combination  of the above listed licenses. If contributor does not agree with  some of the licenses, he/she can delete appropriate line.  WARNING: if you delete all lines, you are not allowed to  distribute code or sources in any form. *******************************************************************/// Unicode String Manipulation routinesNTSTATUSMyAllocUnicodeString(PUNICODE_STRING UStr, PUNICODE_STRING InUStr, int Len){  NTSTATUS Status;  ULONG Size;  if(!Len&&InUStr){    Len=InUStr->Length;  }  RtlInitUnicodeString(UStr, NULL);  if(Len){    Size=Len+2;    UStr->Buffer = ExAllocatePool(PagedPool,Size);	if(!UStr->Buffer) return STATUS_UNSUCCESSFUL;    RtlZeroMemory(UStr->Buffer,Size);    UStr->MaximumLength = Len;    if(InUStr)      RtlCopyUnicodeString(UStr,InUStr);  }  return STATUS_SUCCESS;}///////////////////////////////////////////////////////////////////////////////////  MyGetRegistryKeyValue////    Reads a registry key value from an already opened registry key////  INPUTS://	Handle		- handle to the opened registry key//	KeyNameString	- WCHAR string to the desired key//  OUTPUTS://	KeyNameStringLength	- length of above//	Data		- buffer for the data//	DataLength	- length of the buffer////  RETURNS://	NT Status code////  IRQL://	IRQL PASSIVE_LEVEL/////////////////////////////////////////////////////////////////////////////////NTSTATUS MyGetRegistryKeyValue (    IN HANDLE	Handle,    IN PWCHAR	KeyNameString,    IN PVOID	Data,    IN ULONG	DataLength    ){    UNICODE_STRING   keyName;    ULONG            length;    PKEY_VALUE_FULL_INFORMATION fullInfo;    NTSTATUS         status = STATUS_INSUFFICIENT_RESOURCES;    RtlInitUnicodeString (&keyName, KeyNameString);	    length = sizeof(KEY_VALUE_FULL_INFORMATION)+keyName.Length+4+DataLength;    fullInfo = ExAllocatePool(PagedPool, length);     if (fullInfo) {      status = ZwQueryValueKey (Handle,&keyName,KeyValueFullInformation,	  			fullInfo,length,&length);		      if (NT_SUCCESS(status)) {	// If there is enough room in the data buffer, copy the output	if (DataLength >= fullInfo->DataLength) 	{	  RtlCopyMemory (Data,((PUCHAR) fullInfo) + fullInfo->DataOffset, 			 fullInfo->DataLength);	}      }      ExFreePool(fullInfo);    }    return status;}//// The following pragma allows the DriverEntry code to be discarded once// initialization is completed////#pragma alloc_text(INIT,DriverEntry)///////////////////////////////////////////////////////////////////////////////////  DriverEntry////      This routine is called by NT when the driver is first loaded.  It is the//    responsibility of this routine to find it's device and create whatever//    device objects it needs.////  INPUTS:////      DriverObj - Address of the DRIVER_OBJECT created by NT for this driver.////      RegistryPath - UNICODE_STRING which represents this drivers KEY in the//                   Registry.  ////  OUTPUTS:////      None.////  RETURNS:////      STATUS_SUCCESS. Otherwise an error indicating why the driver could not//                    Load.////  IRQL:////    This routine is called at IRQL_PASSIVE_LEVEL.////  NOTES:///////////////////////////////////////////////////////////////////////////////////NTSTATUSDriverEntry(PDRIVER_OBJECT DriverObj, PUNICODE_STRING RegistryPath){    ULD_LARGE_INTEGER_0=RtlConvertLongToLargeInteger(0);        uLan_DbgPrint("uLan v" UL_DRV_VERSION " Enter the driver!\n");    uLan_DbgPrint("uLan: " __DATE__ " " __TIME__ "\n");    //    // Establish dispatch entry points for the functions we support    //    DriverObj->MajorFunction[IRP_MJ_CREATE] = DispatchRoutine;    DriverObj->MajorFunction[IRP_MJ_CLOSE] = DispatchRoutine;    DriverObj->MajorFunction[IRP_MJ_READ] = DispatchRoutine;    DriverObj->MajorFunction[IRP_MJ_WRITE] = DispatchRoutine;    DriverObj->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DispatchRoutine;    DriverObj->MajorFunction[IRP_MJ_CLEANUP] = DispatchRoutine;    //    // PnP and Power entry points    //    DriverObj->MajorFunction[IRP_MJ_PNP]            =  DispatchPnp;#ifdef UL_WITH_WIN_PWR    DriverObj->MajorFunction[IRP_MJ_POWER]          =  DispatchPower;#endif /* UL_WITH_WIN_PWR */    //    // WMI entry point    //    DriverObj->MajorFunction[IRP_MJ_SYSTEM_CONTROL] =  DispatchSystemControl;    //    // AddDevice Function    //    DriverObj->DriverExtension->AddDevice = AddDevice;    //    // Unload function    //    DriverObj->DriverUnload = DriverUnload;    //    // Save the registry path for later use.    //    MyAllocUnicodeString(&uL_WDM_RegistryPath,RegistryPath,0);    //    // Initial reasonable value for driver spinlock    //    uL_SpinLock_Irql=DISPATCH_LEVEL+1;    uLan_DbgPrint("uLan: All initialized!\n");        return(STATUS_SUCCESS);    }///////////////////////////////////////////////////////////////////////////////////  DriverUnload////      This routine is our dynamic unload entry point.  We are called here when//    the OS wants to unload our driver.  It is our responsibility to release any//    resources we allocated.////  INPUTS:////      DriverObj - Address of our DRIVER_OBJECT.////  OUTPUTS:////      None.////  RETURNS:////      None.////  IRQL:////    This routine is called at IRQL_PASSIVE_LEVEL.////  NOTES:////    No doubt we pool leak at this entry point by not properly returning everything./////////////////////////////////////////////////////////////////////////////////VOID DriverUnload(PDRIVER_OBJECT DriverObject){    PULAN_DEVICE_EXTENSION devExt;    PDEVICE_OBJECT devObj,nextDevObj;    IO_RESOURCE_REQUIREMENTS_LIST reqList;    NTSTATUS code;    UNICODE_STRING linkName;    CM_RESOURCE_LIST returnResources;    BOOLEAN conflictDetected;                uLan_DbgPrint("uLan: DriverUnload\n");    //    // For THIS driver, there will only ever be a single device object.    // Because of this, we just get it from the DriverObj.  If this were    // a multiple device driver, we would do this in a while loop...    //    nextDevObj = DriverObject->DeviceObject;    while(nextDevObj){      devObj=nextDevObj;      nextDevObj=devObj->NextDevice;      // Find uLan Device Extension      devExt=(PULAN_DEVICE_EXTENSION)devObj->DeviceExtension;      // Set State      devExt->State = STATE_REMOVED;      // Return uLan system resources      ReturnResources(devExt);      // Destroy DeviceObject      RemoveDevice(devObj);    }    if(uL_WDM_RegistryPath.Buffer)   	  ExFreePool(uL_WDM_RegistryPath.Buffer);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品伦理在线| 国产精品久久久久久久浪潮网站| 亚洲丶国产丶欧美一区二区三区| 99re成人在线| 亚洲午夜羞羞片| 欧美日韩中字一区| 日韩成人av影视| 久久久一区二区| 99精品一区二区三区| 伊人色综合久久天天人手人婷| 97精品久久久午夜一区二区三区 | 9191国产精品| 奇米精品一区二区三区在线观看| 日韩欧美视频在线| 国产91精品入口| 亚洲综合色在线| 日韩精品一区在线| 不卡的看片网站| 三级欧美在线一区| 欧美国产1区2区| 欧美日本一道本| 国产在线播放一区二区三区| 中文字幕一区二区三区在线播放| 欧美性欧美巨大黑白大战| 美国av一区二区| 综合久久久久久| 欧美一级二级三级蜜桃| 成人一道本在线| 午夜av电影一区| 亚洲国产精品成人综合| 欧美日韩视频不卡| 国产美女一区二区| 亚洲狠狠爱一区二区三区| 久久中文字幕电影| 一本久道久久综合中文字幕| 免费美女久久99| 最新不卡av在线| 欧美精品一区二区在线观看| 欧美自拍偷拍午夜视频| 国产一区二区三区免费播放| 亚洲自拍另类综合| 欧美精彩视频一区二区三区| 欧美一区二区精品久久911| 成人手机电影网| 日本人妖一区二区| 亚洲婷婷综合久久一本伊一区| 69堂精品视频| 欧洲一区二区av| 不卡一二三区首页| 国产麻豆一精品一av一免费 | 一区二区欧美国产| 国产亚洲精品福利| 日韩欧美三级在线| 欧美日韩精品一区二区三区| 成人福利视频在线| 国产精品538一区二区在线| 婷婷久久综合九色综合伊人色| 国产精品国产三级国产三级人妇| 日韩精品一区二区三区视频| 精品1区2区3区| 色欧美88888久久久久久影院| 国产91在线|亚洲| 精品一区二区三区久久| 日韩和欧美的一区| 亚洲成人在线观看视频| 亚洲欧美日韩国产成人精品影院| 国产人伦精品一区二区| 久久综合色8888| 日韩精品一区二区三区三区免费 | 不卡的av中国片| 国产精品综合网| 韩国av一区二区三区四区| 麻豆91精品视频| 天天影视网天天综合色在线播放| 亚洲国产综合在线| 亚洲成av人片一区二区梦乃| 亚洲成人在线网站| 亚洲制服丝袜一区| 亚洲已满18点击进入久久| 亚洲欧美偷拍三级| 一区二区在线观看免费视频播放 | 精品美女一区二区| 精品国内二区三区| 久久欧美一区二区| 久久久av毛片精品| 国产亚洲欧美日韩日本| 亚洲国产精品国自产拍av| 中文字幕日韩av资源站| 国产精品色在线观看| 国产精品久线观看视频| 亚洲人成人一区二区在线观看| 日韩一区日韩二区| 亚洲精品一卡二卡| 亚洲第一激情av| 日韩国产在线一| 另类小说综合欧美亚洲| 久久91精品久久久久久秒播| 国内精品在线播放| 岛国av在线一区| 日本高清不卡一区| 91麻豆精品91久久久久同性| 精品捆绑美女sm三区| 久久精品欧美一区二区三区不卡 | 91国偷自产一区二区三区观看 | 7777精品伊人久久久大香线蕉最新版| 这里只有精品视频在线观看| 久久久久久麻豆| 亚洲女与黑人做爰| 美国三级日本三级久久99| 国产精品资源在线观看| 色综合久久六月婷婷中文字幕| 欧美色欧美亚洲另类二区| 久久综合色一综合色88| 亚洲欧美色图小说| 亚洲电影中文字幕在线观看| 免费成人在线网站| 北条麻妃国产九九精品视频| 在线看日本不卡| 久久在线免费观看| 亚洲影视在线观看| 国产成人亚洲综合a∨婷婷图片 | 欧美久久一区二区| 日本一区二区三区在线观看| 亚洲成人自拍一区| 国产剧情在线观看一区二区 | 91精品国产欧美一区二区成人| 久久久久高清精品| 亚洲国产成人av网| 国产成人免费视频一区| 欧美乱熟臀69xxxxxx| 国产精品久久久久影院色老大| 日本亚洲一区二区| 91偷拍与自偷拍精品| 精品国产一区二区在线观看| 亚洲一区二区av电影| 国产91精品免费| 日韩三级视频在线看| 一卡二卡三卡日韩欧美| 成人av在线资源| 精品国产亚洲一区二区三区在线观看| 一区二区三区在线免费观看| 国产福利一区二区| 欧美一级片在线观看| 亚洲一区二区三区视频在线播放| 国产精品一二三四五| 欧美一区二区视频免费观看| 亚洲欧美日韩国产综合在线| 成人在线一区二区三区| 精品久久久久久无| 视频一区二区国产| 欧美性生活影院| 亚洲欧美激情插 | 91蜜桃网址入口| 日本一区二区三区免费乱视频| 激情偷乱视频一区二区三区| 日韩视频国产视频| 日本中文字幕一区| 欧美精品自拍偷拍| 午夜一区二区三区视频| 在线视频你懂得一区二区三区| 国产精品色婷婷| 成人天堂资源www在线| 中文字幕成人网| 高清免费成人av| 亚洲国产精品av| 成人精品视频一区二区三区 | 欧美丰满美乳xxx高潮www| 亚洲综合偷拍欧美一区色| 色哟哟一区二区在线观看| 国产精品成人在线观看| av动漫一区二区| 亚洲九九爱视频| 欧美三级电影精品| 午夜精品福利一区二区蜜股av | 日韩av一二三| 欧美丰满嫩嫩电影| 捆绑调教一区二区三区| 欧美日本韩国一区二区三区视频| 亚洲国产日韩精品| 欧美精品视频www在线观看| 午夜精品福利久久久| 日韩欧美卡一卡二| 国产最新精品精品你懂的| 久久久久久久久97黄色工厂| 国产精品正在播放| 亚洲欧洲精品天堂一级| 色国产综合视频| 偷窥国产亚洲免费视频| 欧美肥妇bbw| 九九精品视频在线看| 国产欧美精品一区| 一本到三区不卡视频| 午夜精品福利一区二区蜜股av| 6080亚洲精品一区二区| 激情久久久久久久久久久久久久久久| 欧美国产成人在线| 欧美色大人视频| 欧洲精品视频在线观看| 蜜臀av亚洲一区中文字幕| 国产欧美在线观看一区|