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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tdiclient.cpp.bak

?? tdi sys file ,tdi is the network driver
?? BAK
字號:
extern "C" { 
    #include <ntddk.h> 
    #include "tdikrnl.h" 



} 


NTSTATUS 
CreateConnection(PHANDLE Handle, PFILE_OBJECT *FileObject) 
{ 
    UNICODE_STRING Name; RtlInitUnicodeString(&Name, L"\\Device\\Tcp"); 

    OBJECT_ATTRIBUTES Attr; InitializeObjectAttributes(&Attr, &Name, 
OBJ_CASE_INSENSITIVE, 0, 0); 


    CHAR Buffer[sizeof (FILE_FULL_EA_INFORMATION) + 
TDI_CONNECTION_CONTEXT_LENGTH]; 


    PFILE_FULL_EA_INFORMATION Ea = PFILE_FULL_EA_INFORMATION(Buffer); 


    Ea->NextEntryOffset = 0; 
    Ea->Flags = 0; 
    Ea->EaNameLength = TDI_CONNECTION_CONTEXT_LENGTH; 
    Ea->EaValueLength = 0; 
    RtlCopyMemory(Ea->EaName, TdiConnectionContext, Ea->EaNameLength + 1); 


    IO_STATUS_BLOCK IoStatus; 


    NTSTATUS Status = ZwCreateFile(Handle, 0, &Attr, &IoStatus, 0, 
                                   FILE_ATTRIBUTE_NORMAL, 0, FILE_OPEN, 0, Ea, sizeof Buffer); 


    if (!NT_SUCCESS(Status)) return Status; 


    return ObReferenceObjectByHandle(*Handle, GENERIC_READ | GENERIC_WRITE, 0, 
KernelMode, 
                                     (PVOID *)FileObject, 0); 



} 


NTSTATUS 
CreateAddress(PHANDLE Handle, PFILE_OBJECT *FileObject) 
{ 
    UNICODE_STRING Name; RtlInitUnicodeString(&Name, L"\\Device\\Tcp"); 

    OBJECT_ATTRIBUTES Attr; InitializeObjectAttributes(&Attr, &Name, 
OBJ_CASE_INSENSITIVE, 0, 0); 


    CHAR Buffer[sizeof (FILE_FULL_EA_INFORMATION) + 
TDI_TRANSPORT_ADDRESS_LENGTH + 
                sizeof (TA_IP_ADDRESS)]; 


    PFILE_FULL_EA_INFORMATION Ea = PFILE_FULL_EA_INFORMATION(Buffer); 


    Ea->NextEntryOffset = 0; 
    Ea->Flags = 0; 
    Ea->EaNameLength = TDI_TRANSPORT_ADDRESS_LENGTH; 
    Ea->EaValueLength = sizeof (TA_IP_ADDRESS); 
    RtlCopyMemory(Ea->EaName, TdiTransportAddress, Ea->EaNameLength + 1); 


    PTA_IP_ADDRESS Sin = PTA_IP_ADDRESS(Ea->EaName + Ea->EaNameLength + 1); 
    Sin->TAAddressCount = 1; 
    Sin->Address[0].AddressLength = TDI_ADDRESS_LENGTH_IP; 
    Sin->Address[0].AddressType = TDI_ADDRESS_TYPE_IP; 
    Sin->Address[0].Address[0].sin_port = 0; 
    Sin->Address[0].Address[0].in_addr = 0; 
    RtlZeroMemory(Sin->Address[0].Address[0].sin_zero, sizeof 
Sin->Address[0].Address[0].sin_zero); 


    IO_STATUS_BLOCK IoStatus; 


    NTSTATUS Status = ZwCreateFile(Handle, 0, &Attr, &IoStatus, 0, 
                                   FILE_ATTRIBUTE_NORMAL, 0, FILE_OPEN, 0, Ea, sizeof Buffer); 


    if (!NT_SUCCESS(Status)) return Status; 


    return ObReferenceObjectByHandle(*Handle, GENERIC_READ | GENERIC_WRITE, 0, 
KernelMode, 
                                     (PVOID *)FileObject, 0); 



} 


NTSTATUS 
SetEventHandler(PFILE_OBJECT FileObject, LONG EventType, PVOID EventHandler, 
PVOID EventContext) 
{ 
    KEVENT Event; KeInitializeEvent(&Event, NotificationEvent, FALSE); 

    PDEVICE_OBJECT DeviceObject = IoGetRelatedDeviceObject(FileObject); 


    IO_STATUS_BLOCK IoStatus; 


    PIRP Irp = TdiBuildInternalDeviceControlIrp(TDI_SET_EVENT_HANDLER, 
DeviceObject, FileObject, 
                                                &Event, &IoStatus); 


    if (Irp == 0) return STATUS_INSUFFICIENT_RESOURCES; 


    TdiBuildSetEventHandler(Irp, DeviceObject, FileObject, 0, 0, 
                            EventType, EventHandler, EventContext); 


    NTSTATUS Status = IoCallDriver(DeviceObject, Irp); 


    if (Status == STATUS_PENDING) 


        Status = KeWaitForSingleObject(&Event, UserRequest, KernelMode, FALSE, 0); 


    return Status == STATUS_SUCCESS ? IoStatus.Status : Status; 



} 


NTSTATUS 
Bind(PFILE_OBJECT FileObject, HANDLE Address) 
{ 
    KEVENT Event; KeInitializeEvent(&Event, NotificationEvent, FALSE); 

    PDEVICE_OBJECT DeviceObject = IoGetRelatedDeviceObject(FileObject); 


    IO_STATUS_BLOCK IoStatus; 


    PIRP Irp = TdiBuildInternalDeviceControlIrp(TDI_ASSOCIATE_ADDRESS, 
DeviceObject, FileObject, 
                                                &Event, &IoStatus); 


    if (Irp == 0) return STATUS_INSUFFICIENT_RESOURCES; 


    TdiBuildAssociateAddress(Irp, DeviceObject, FileObject, 0, 0, Address); 


    NTSTATUS Status = IoCallDriver(DeviceObject, Irp); 


    if (Status == STATUS_PENDING) 


        Status = KeWaitForSingleObject(&Event, UserRequest, KernelMode, FALSE, 0); 


    return Status == STATUS_SUCCESS ? IoStatus.Status : Status; 



} 


NTSTATUS 
Connect(PFILE_OBJECT FileObject, ULONG Addr, USHORT Port) 
{ 
    KEVENT Event; KeInitializeEvent(&Event, NotificationEvent, FALSE); 

    PDEVICE_OBJECT DeviceObject = IoGetRelatedDeviceObject(FileObject); 


    IO_STATUS_BLOCK IoStatus; 


    PIRP Irp = TdiBuildInternalDeviceControlIrp(TDI_CONNECT, DeviceObject, 
FileObject, 
                                                &Event, &IoStatus); 


    if (Irp == 0) return STATUS_INSUFFICIENT_RESOURCES; 


    TA_IP_ADDRESS DstAddr = {1, {TDI_ADDRESS_LENGTH_IP, TDI_ADDRESS_TYPE_IP, 
{Port, Addr}}}; 


    TDI_CONNECTION_INFORMATION Dst = {0, 0, 0, 0, sizeof DstAddr, &DstAddr}; 


    TdiBuildConnect(Irp, DeviceObject, FileObject, 0, 0, 0, &Dst, 0); 


    NTSTATUS Status = IoCallDriver(DeviceObject, Irp); 


    if (Status == STATUS_PENDING) 


        Status = KeWaitForSingleObject(&Event, UserRequest, KernelMode, FALSE, 0); 


    return Status == STATUS_SUCCESS ? IoStatus.Status : Status; 



} 


NTSTATUS 
Disconnect(PFILE_OBJECT FileObject) 
{ 
    KEVENT Event; KeInitializeEvent(&Event, NotificationEvent, FALSE); 

    PDEVICE_OBJECT DeviceObject = IoGetRelatedDeviceObject(FileObject); 


    IO_STATUS_BLOCK IoStatus; 


    PIRP Irp = TdiBuildInternalDeviceControlIrp(TDI_DISCONNECT, DeviceObject, 
FileObject, 
                                                &Event, &IoStatus); 


    if (Irp == 0) return STATUS_INSUFFICIENT_RESOURCES; 


    TdiBuildDisconnect(Irp, DeviceObject, FileObject, 0, 0, 0, 
TDI_DISCONNECT_RELEASE, 0, 0); 


    NTSTATUS Status = IoCallDriver(DeviceObject, Irp); 


    if (Status == STATUS_PENDING) 


        Status = KeWaitForSingleObject(&Event, UserRequest, KernelMode, FALSE, 0); 


    return Status == STATUS_SUCCESS ? IoStatus.Status : Status; 



} 


NTSTATUS 
Send(PFILE_OBJECT FileObject, PVOID Data, ULONG Length) 
{ 
    KEVENT Event; KeInitializeEvent(&Event, NotificationEvent, FALSE); 

    PDEVICE_OBJECT DeviceObject = IoGetRelatedDeviceObject(FileObject); 


    IO_STATUS_BLOCK IoStatus; 


    PIRP Irp = TdiBuildInternalDeviceControlIrp(TDI_SEND, DeviceObject, 
FileObject, 
                                                &Event, &IoStatus); 


    if (Irp == 0) return STATUS_INSUFFICIENT_RESOURCES; 


    PMDL Mdl = IoAllocateMdl(Data, Length, FALSE, FALSE, Irp); 


    if (Mdl == 0) return STATUS_INSUFFICIENT_RESOURCES; 


    MmProbeAndLockPages(Mdl, KernelMode, IoModifyAccess); 


    TdiBuildSend(Irp, DeviceObject, FileObject, 0, 0, Mdl, 0, Length); 


    NTSTATUS Status = IoCallDriver(DeviceObject, Irp); 


    if (Status == STATUS_PENDING) 


        Status = KeWaitForSingleObject(&Event, UserRequest, KernelMode, FALSE, 0); 


    return Status == STATUS_SUCCESS ? IoStatus.Status : Status; 



} 


NTSTATUS 
Recv(PFILE_OBJECT FileObject, PVOID Data, ULONG Length, PKEVENT Event, 
PIO_STATUS_BLOCK IoStatus) 
{ 
    PDEVICE_OBJECT DeviceObject = IoGetRelatedDeviceObject(FileObject); 

    PIRP Irp = TdiBuildInternalDeviceControlIrp(TDI_RECEIVE, DeviceObject, 
FileObject, 
                                                Event, IoStatus); 


    if (Irp == 0) return STATUS_INSUFFICIENT_RESOURCES; 


    PMDL Mdl = IoAllocateMdl(Data, Length, FALSE, FALSE, Irp); 


    MmProbeAndLockPages(Mdl, KernelMode, IoModifyAccess); 


    TdiBuildReceive(Irp, DeviceObject, FileObject, 0, 0, Mdl, 
TDI_RECEIVE_NORMAL, Length); 


    return IoCallDriver(DeviceObject, Irp); 



} 


NTSTATUS 
EventDisconnect(PVOID EventContext, CONNECTION_CONTEXT, LONG, PVOID, LONG, 
PVOID, ULONG Flags) 
{ 
    DbgPrint("Flags = %lx\n", Flags); 

    KeSetEvent(PKEVENT(EventContext), 0, FALSE); 


    return STATUS_SUCCESS; 



} 


NTSTATUS 
EventError(PVOID, NTSTATUS Status) 
{ 
    DbgPrint("Error = %lx\n", Status); 

    return STATUS_SUCCESS; 



} 


NTSTATUS 
EventReceive(PVOID, CONNECTION_CONTEXT, ULONG Flags, ULONG Indicated, ULONG 
Available, 
             PULONG Taken, PVOID, PIRP *Irp) 
{ 
    DbgPrint("Receive Flags = %lx, Ind = %ld, Avl = %ld\n", Flags, Indicated, 
Available); 

    *Taken = Available; *Irp = 0; 


    return STATUS_SUCCESS; 



} 


NTSTATUS 
Test() 
{ 
    PFILE_OBJECT ConnectionFileObject, AddressFileObject; 
    HANDLE AddressHandle, ConnectionHandle; 
    CHAR Buffer[80], Data[] = "Hello from Gary"; 
    NTSTATUS Status; 

    KEVENT Done; KeInitializeEvent(&Done, NotificationEvent, FALSE); 


    Status = CreateConnection(&ConnectionHandle, &ConnectionFileObject); 
    if (!NT_SUCCESS(Status)) return Status; 


    Status = CreateAddress(&AddressHandle, &AddressFileObject); 
    if (!NT_SUCCESS(Status)) return Status; 


    do { 
        Status = SetEventHandler(AddressFileObject, TDI_EVENT_DISCONNECT, 
EventDisconnect, &Done); 
        if (!NT_SUCCESS(Status)) break; 


        Status = SetEventHandler(AddressFileObject, TDI_EVENT_ERROR, EventError, 0); 
        if (!NT_SUCCESS(Status)) break; 


        Status = SetEventHandler(AddressFileObject, TDI_EVENT_RECEIVE, EventReceive, 
0); 
        if (!NT_SUCCESS(Status)) break; 


        Status = Bind(ConnectionFileObject, AddressHandle); 
        if (!NT_SUCCESS(Status)) break; 


        Status = Connect(ConnectionFileObject, 0x41A1F6A8, 0x700); 
        if (!NT_SUCCESS(Status)) break; 


        IO_STATUS_BLOCK IoStatus; 
        KEVENT Event; KeInitializeEvent(&Event, NotificationEvent, FALSE); 


        Status = Recv(ConnectionFileObject, Buffer, sizeof Buffer, &Event, &IoStatus); 
        if (!NT_SUCCESS(Status)) break; 


        Status = Send(ConnectionFileObject, Data, sizeof Data); 
        if (!NT_SUCCESS(Status)) break; 


        Status = Send(ConnectionFileObject, Data, sizeof Data); 
        if (!NT_SUCCESS(Status)) break; 


        Status = Send(ConnectionFileObject, Data, sizeof Data); 
        if (!NT_SUCCESS(Status)) break; 


        Status = Disconnect(ConnectionFileObject); 
        if (!NT_SUCCESS(Status)) break; 


        Status = KeWaitForSingleObject(&Event, UserRequest, KernelMode, FALSE, 0); 
        if (Status == STATUS_SUCCESS) Status = IoStatus.Status; 


        DbgPrint("Status = %lx, IoStatus.Status = %lx, IoStatus.Information = %ld\n", 
                 Status, IoStatus.Status, IoStatus.Information); 


        KeWaitForSingleObject(&Done, UserRequest, KernelMode, FALSE, 0); 


    } while (0); 


    ObDereferenceObject(ConnectionFileObject); 


    ObDereferenceObject(AddressFileObject); 


    ZwClose(ConnectionHandle); 


    ZwClose(AddressHandle); 


    return Status; 



} 


NTSTATUS 
DriverOpenClose(PDEVICE_OBJECT, PIRP Irp) 
{ 
    Irp->IoStatus.Status = STATUS_SUCCESS; 
    Irp->IoStatus.Information = 0; 

    IoCompleteRequest(Irp, IO_NO_INCREMENT); 


    return STATUS_SUCCESS; 



} 


VOID 
DriverUnload(PDRIVER_OBJECT DriverObject) 
{ 
    IoDeleteDevice(DriverObject->DeviceObject); 


} 


extern "C" NTSTATUS 
DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) 
{ 
    NTSTATUS Status = Test(); 

    if (!NT_SUCCESS(Status)) return Status; 


    DriverObject->MajorFunction[IRP_MJ_CREATE] = DriverOpenClose; 
    DriverObject->MajorFunction[IRP_MJ_CLOSE]  = DriverOpenClose; 
    DriverObject->DriverUnload                 = DriverUnload; 


    UNICODE_STRING Name; RtlInitUnicodeString(&Name, L"\\Device\\TdiTest"); 


    PDEVICE_OBJECT DeviceObject; 


    return IoCreateDevice(DriverObject, 0, &Name, FILE_DEVICE_UNKNOWN, 0, TRUE, 
&DeviceObject); 


} 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩成人免费在线| 国精产品一区一区三区mba桃花 | 99久久99久久免费精品蜜臀| 依依成人综合视频| 久久精品一区二区| 欧美日韩视频在线一区二区| 国产精品一区二区黑丝| 亚洲mv在线观看| 中文字幕亚洲不卡| 精品日产卡一卡二卡麻豆| 97se亚洲国产综合自在线| 免费人成精品欧美精品| 一区二区三区四区不卡在线| 久久一夜天堂av一区二区三区 | 欧美一区二区三区在线视频 | 在线成人小视频| 9l国产精品久久久久麻豆| 九一九一国产精品| 亚洲成人www| 亚洲人成在线观看一区二区| 久久精品人人做人人综合| 91精品国产综合久久婷婷香蕉| 91蜜桃婷婷狠狠久久综合9色| 国产精品1区二区.| 狠狠色丁香久久婷婷综合_中| 亚洲成在线观看| 一区二区三区日本| 中文字幕在线不卡| 国产在线精品免费| 久久午夜色播影院免费高清| 婷婷综合在线观看| 国产精品高潮呻吟| 欧美三级中文字幕| 国产一区激情在线| 欧美bbbbb| 日韩电影一二三区| 午夜视频在线观看一区二区| 国产99久久精品| 国产麻豆午夜三级精品| 精品一区中文字幕| 久久国产精品一区二区| 久久99精品久久只有精品| 琪琪久久久久日韩精品| 蜜桃视频在线观看一区| 日本欧美在线看| 久久精品国产一区二区三| 日本va欧美va瓶| 久久狠狠亚洲综合| 久久精品国产精品青草| 国产麻豆成人传媒免费观看| 国产馆精品极品| 成人av在线影院| 99视频在线精品| 色婷婷国产精品综合在线观看| 91视频免费播放| 欧美日韩免费电影| 在线播放日韩导航| 日韩亚洲国产中文字幕欧美| 日韩一区二区免费电影| 久久一夜天堂av一区二区三区| 国产午夜精品美女毛片视频| 亚洲三级免费观看| 亚洲成人久久影院| 国内精品写真在线观看| 国产成都精品91一区二区三 | 懂色中文一区二区在线播放| aaa国产一区| 精品视频在线免费| 日韩区在线观看| 日本一区免费视频| 亚洲在线视频免费观看| 精品一区二区三区的国产在线播放| 国产一区亚洲一区| 色成人在线视频| 欧美sm极限捆绑bd| 日韩理论在线观看| 美女网站一区二区| 成人毛片视频在线观看| 欧美日韩第一区日日骚| 亚洲精品一区二区三区四区高清| 国产亚洲污的网站| 亚洲第一精品在线| 国产白丝精品91爽爽久久| 欧美亚洲综合在线| 久久久久高清精品| 亚洲综合精品久久| 亚洲三级在线看| 国产精品国产三级国产普通话99| 亚洲人妖av一区二区| 亚洲bt欧美bt精品| 国产精品综合二区| 91色婷婷久久久久合中文| 日韩欧美一级二级三级久久久 | 欧美一区欧美二区| 中文字幕五月欧美| 亚洲国产精品一区二区久久恐怖片 | 青草国产精品久久久久久| 成人免费视频网站在线观看| 8x8x8国产精品| www.日韩大片| 欧美一区二区黄色| 亚洲免费资源在线播放| 亚洲观看高清完整版在线观看| 免费高清不卡av| 欧美午夜精品久久久| 蜜臀a∨国产成人精品| 日韩免费性生活视频播放| 成人在线综合网| 日韩国产在线观看一区| 久久麻豆一区二区| 色婷婷久久久综合中文字幕| 成人性生交大片免费看在线播放| 国产精品免费av| 中文字幕亚洲精品在线观看| 亚洲免费观看高清完整版在线观看熊| 不卡高清视频专区| 国产综合色在线视频区| 天堂av在线一区| 日产精品久久久久久久性色| 国产精品99久久久久久久女警| 免费观看日韩电影| 欧美精选午夜久久久乱码6080| 欧美剧在线免费观看网站| 色综合激情五月| 久久影院午夜片一区| 99免费精品视频| 精品污污网站免费看| 精品国产乱码久久久久久影片| 首页综合国产亚洲丝袜| 九九精品一区二区| 亚洲综合区在线| 亚洲第一成人在线| 99精品国产热久久91蜜凸| 91精品国产综合久久久久久漫画 | 日韩午夜电影av| 亚洲成人激情自拍| 一本色道亚洲精品aⅴ| 亚洲免费观看在线观看| 福利一区福利二区| 亚洲国产精品视频| 色先锋aa成人| 全国精品久久少妇| 2020国产精品| 精品欧美一区二区三区精品久久 | 国产精品久久久久9999吃药| 欧美日韩亚洲综合| av动漫一区二区| 国产乱码精品一区二区三区忘忧草 | 欧美日本一区二区| 色综合av在线| 99久久国产综合精品麻豆| 成人免费观看视频| av中文字幕不卡| 97精品久久久久中文字幕| 成人综合婷婷国产精品久久蜜臀| 免费精品视频在线| 麻豆精品久久久| 国产真实乱子伦精品视频| 美国av一区二区| 国产福利精品导航| 国产在线精品免费| 国产精品乡下勾搭老头1| 国产精品白丝av| 一本到三区不卡视频| 欧美日韩aaaaa| 91理论电影在线观看| 日本免费新一区视频| 亚洲愉拍自拍另类高清精品| 欧美视频完全免费看| 不卡av电影在线播放| 国精产品一区一区三区mba桃花| 亚洲一线二线三线久久久| 久久亚洲一级片| 欧美日韩综合不卡| 99re在线精品| 成人激情av网| 欧美午夜一区二区三区免费大片| 精一区二区三区| 日本视频一区二区三区| 日产国产欧美视频一区精品| 一区二区三区在线视频免费| 欧美激情中文不卡| 久久综合九色综合97婷婷女人 | 国产成人午夜片在线观看高清观看| 国产美女视频91| 色婷婷av一区二区三区之一色屋| 91浏览器入口在线观看| 日韩欧美区一区二| 91精品国产综合久久精品app| 91国偷自产一区二区开放时间| 丁香天五香天堂综合| 日韩电影在线免费观看| 亚洲视频在线观看三级| 亚洲欧美日韩成人高清在线一区| 国产精品看片你懂得| 亚洲三级久久久| 日韩av中文在线观看| 亚洲图片有声小说| 国产一区二区在线看| 国产精品99久久久久久久女警 |