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

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

?? mapmem.c

?? Windows下
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
    // soon as you call IoCompleteRequest.
    //

    ntStatus = Irp->IoStatus.Status;

    IoCompleteRequest(Irp, IO_NO_INCREMENT);

    //
    // We never have pending operation so always return the status code.
    //

    return ntStatus;
}

VOID
MapMemUnload(
    IN PDRIVER_OBJECT pDriverObject
    )
/*++

Routine Description:

    Just delete the associated device & return.

Arguments:

    DriverObject - pointer to a driver object

Return Value:


--*/
{
    WCHAR                  deviceLinkBuffer[]  = L"\\DosDevices\\MAPMEM";
    UNICODE_STRING         deviceLinkUnicodeString;

    //
    // Free any resources
    //

    //
    // Delete the symbolic link
    //

    RtlInitUnicodeString (&deviceLinkUnicodeString,
                          deviceLinkBuffer
                          );

    IoDeleteSymbolicLink (&deviceLinkUnicodeString);

    //
    // Delete the device object
    //

    MapMemKdPrint (("MAPMEM.SYS: unloading\n"));

    IoDeleteDevice (pDriverObject->DeviceObject);
}

NTSTATUS
MapMemMapTheMemory(
    IN PDEVICE_OBJECT DeviceObject,
    IN OUT PVOID      IoBuffer,
    IN ULONG          InputBufferLength,
    IN ULONG          OutputBufferLength
    )
/*++

Routine Description:

    Given a physical address, maps this address into a user mode process's
    address space

Arguments:

    DeviceObject       - pointer to a device object

    IoBuffer           - pointer to the I/O buffer

    InputBufferLength  - input buffer length

    OutputBufferLength - output buffer length

Return Value:

    STATUS_SUCCESS if sucessful, otherwise
    STATUS_UNSUCCESSFUL,
    STATUS_INSUFFICIENT_RESOURCES,
    (other STATUS_* as returned by kernel APIs)

--*/
{

    PPHYSICAL_MEMORY_INFO ppmi = (PPHYSICAL_MEMORY_INFO) IoBuffer;

    INTERFACE_TYPE     interfaceType;
    ULONG              busNumber;
    PHYSICAL_ADDRESS   physicalAddress;
    ULONG              length;
    UNICODE_STRING     physicalMemoryUnicodeString;
    OBJECT_ATTRIBUTES  objectAttributes;
    HANDLE             physicalMemoryHandle  = NULL;
    PVOID              PhysicalMemorySection = NULL;
    ULONG              inIoSpace, inIoSpace2;
    NTSTATUS           ntStatus;
    PHYSICAL_ADDRESS   physicalAddressBase;
    PHYSICAL_ADDRESS   physicalAddressEnd;
    PHYSICAL_ADDRESS   viewBase;
    PHYSICAL_ADDRESS   mappedLength;
    BOOLEAN            translateBaseAddress;
    BOOLEAN            translateEndAddress;
    PVOID              virtualAddress;

    if ( ( InputBufferLength  < sizeof (PHYSICAL_MEMORY_INFO) ) ||
         ( OutputBufferLength < sizeof (PVOID) ) )
    {
       MapMemKdPrint (("MAPMEM.SYS: Insufficient input or output buffer\n"));

       ntStatus = STATUS_INSUFFICIENT_RESOURCES;

       goto done;
    }

    interfaceType          = ppmi->InterfaceType;
    busNumber              = ppmi->BusNumber;
    physicalAddress        = ppmi->BusAddress;
    inIoSpace = inIoSpace2 = ppmi->AddressSpace;
    length                 = ppmi->Length;


    //
    // Get a pointer to physical memory...
    //
    // - Create the name
    // - Initialize the data to find the object
    // - Open a handle to the oject and check the status
    // - Get a pointer to the object
    // - Free the handle
    //

    RtlInitUnicodeString (&physicalMemoryUnicodeString,
                          L"\\Device\\PhysicalMemory");

    InitializeObjectAttributes (&objectAttributes,
                                &physicalMemoryUnicodeString,
                                OBJ_CASE_INSENSITIVE,
                                (HANDLE) NULL,
                                (PSECURITY_DESCRIPTOR) NULL);

    ntStatus = ZwOpenSection (&physicalMemoryHandle,
                              SECTION_ALL_ACCESS,
                              &objectAttributes);

    if (!NT_SUCCESS(ntStatus))
    {
        MapMemKdPrint (("MAPMEM.SYS: ZwOpenSection failed\n"));

        goto done;
    }

    ntStatus = ObReferenceObjectByHandle (physicalMemoryHandle,
                                          SECTION_ALL_ACCESS,
                                          (POBJECT_TYPE) NULL,
                                          KernelMode,
                                          &PhysicalMemorySection,
                                          (POBJECT_HANDLE_INFORMATION) NULL);

    if (!NT_SUCCESS(ntStatus))
    {
        MapMemKdPrint (("MAPMEM.SYS: ObReferenceObjectByHandle failed\n"));

        goto close_handle;
    }

    //
    // Initialize the physical addresses that will be translated
    //

    physicalAddressEnd = RtlLargeIntegerAdd (physicalAddress,
                                             RtlConvertUlongToLargeInteger(
                                             length));

    //
    // Translate the physical addresses.
    //

    translateBaseAddress =
        HalTranslateBusAddress (interfaceType,
                                busNumber,
                                physicalAddress,
                                &inIoSpace,
                                &physicalAddressBase);

    translateEndAddress =
        HalTranslateBusAddress (interfaceType,
                                busNumber,
                                physicalAddressEnd,
                                &inIoSpace2,
                                &physicalAddressEnd);

    if ( !(translateBaseAddress && translateEndAddress) ) {
        MapMemKdPrint (("MAPMEM.SYS: HalTranslatephysicalAddress failed\n"));

        ntStatus = STATUS_UNSUCCESSFUL;

        goto close_handle;
    }

    //
    // Calculate the length of the memory to be mapped
    //

    mappedLength = RtlLargeIntegerSubtract (physicalAddressEnd,
                                            physicalAddressBase);
    //
    // If the mappedlength is zero, somthing very weird happened in the HAL
    // since the Length was checked against zero.
    //

    if (mappedLength.LowPart == 0) {
        MapMemKdPrint (("MAPMEM.SYS: mappedLength.LowPart == 0\n"));

        ntStatus = STATUS_UNSUCCESSFUL;

        goto close_handle;
    }

    length = mappedLength.LowPart;

    //
    // If the address is in io space, just return the address, otherwise
    // go through the mapping mechanism
    //

    if (inIoSpace) {
        *((PVOID *) IoBuffer) = (PVOID) physicalAddressBase.LowPart;
    } else {
        //
        // initialize view base that will receive the physical mapped
        // address after the MapViewOfSection call.
        //

        viewBase = physicalAddressBase;

        //
        // Let ZwMapViewOfSection pick an address
        //

        virtualAddress = NULL;

        //
        // Map the section
        //

        ntStatus = ZwMapViewOfSection (physicalMemoryHandle,
                                       (HANDLE) -1,
                                       &virtualAddress,
                                       0L,
                                       length,
                                       &viewBase,
                                       &length,
                                       ViewShare,
                                       0,
                                       PAGE_READWRITE | PAGE_NOCACHE);

        if (!NT_SUCCESS(ntStatus))
        {
            MapMemKdPrint (("MAPMEM.SYS: ZwMapViewOfSection failed\n"));

            goto close_handle;
        }

        //
        // Mapping the section above rounded the physical address down to the
        // nearest 64 K boundary. Now return a virtual address that sits where
        // we want by adding in the offset from the beginning of the section.
        //

        (ULONG) virtualAddress += (ULONG)physicalAddressBase.LowPart -
                                  (ULONG)viewBase.LowPart;

        *((PVOID *) IoBuffer) = virtualAddress;

    }

    ntStatus = STATUS_SUCCESS;

close_handle:
    ZwClose (physicalMemoryHandle);

done:
    return ntStatus;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩三级一区二区| 欧美三级乱人伦电影| 蜜桃精品视频在线| 日韩亚洲欧美在线观看| 麻豆91小视频| 亚洲成av人影院在线观看网| 天天免费综合色| 美女一区二区视频| 国产资源精品在线观看| 麻豆一区二区在线| 成人免费高清在线观看| 欧日韩精品视频| 日韩欧美国产午夜精品| 久久久精品天堂| 国产精品成人在线观看| 亚洲毛片av在线| 欧美视频在线观看一区二区| 欧美亚洲免费在线一区| 777午夜精品视频在线播放| 国产亚洲1区2区3区| 亚洲免费av高清| 午夜精品成人在线| 国产成人综合视频| 欧美理论电影在线| 亚洲三级免费电影| 国产一区久久久| 欧美丝袜丝nylons| 国产精品欧美综合在线| 蜜桃av一区二区三区电影| 国产不卡视频在线观看| 欧美福利一区二区| 亚洲情趣在线观看| 婷婷夜色潮精品综合在线| 樱花影视一区二区| 国产揄拍国内精品对白| 成人av片在线观看| 久久―日本道色综合久久| 日韩精品五月天| 91久久精品一区二区三区| 国产日韩影视精品| 精品一区二区国语对白| 91麻豆精品国产自产在线观看一区| 亚洲久本草在线中文字幕| 国产精品1区二区.| 2019国产精品| 奇米777欧美一区二区| 欧美制服丝袜第一页| 一区二区在线观看不卡| 99麻豆久久久国产精品免费| 91国偷自产一区二区开放时间| 国产精品日日摸夜夜摸av| 国产麻豆午夜三级精品| 久久嫩草精品久久久精品| 国产一区二区三区黄视频 | 麻豆精品久久久| xnxx国产精品| 国产精品一二三区| 国产精品久久久久一区| 色综合天天性综合| 亚洲国产视频一区| 欧美xxx久久| 日韩精品色哟哟| 日韩一区二区三| 激情五月激情综合网| 亚洲精品一区二区三区影院| 国产一区二区导航在线播放| 久久综合久久鬼色| 一本大道久久a久久综合| 婷婷夜色潮精品综合在线| 欧美精品一区二区三区四区| 国产福利一区在线观看| 亚洲精品成人在线| 日韩欧美一级二级三级久久久| 成人ar影院免费观看视频| 亚洲二区在线观看| 久久亚区不卡日本| 欧美三级在线视频| 日韩欧美久久一区| 久久精品二区亚洲w码| 国产精品白丝在线| 91精品国产入口在线| 国内精品伊人久久久久影院对白| 国产精品久久毛片| 这里只有精品免费| 国产成人精品影视| 亚洲精品免费在线播放| 精品国产91洋老外米糕| 色久综合一二码| 成人免费视频视频| 国产一区二三区| 久久精品理论片| 亚洲gay无套男同| 亚洲人成亚洲人成在线观看图片 | 欧美电影精品一区二区| av在线这里只有精品| 99re亚洲国产精品| 91在线播放网址| 91免费视频观看| 91国偷自产一区二区使用方法| 91免费观看视频在线| 色噜噜狠狠色综合中国| 在线一区二区三区四区| 制服丝袜日韩国产| 久久综合给合久久狠狠狠97色69| 日韩一区二区在线观看| 久久久99久久| 综合欧美亚洲日本| 午夜视频一区二区| 国产激情精品久久久第一区二区 | 5566中文字幕一区二区电影| 欧美变态tickle挠乳网站| 久久久久九九视频| 亚洲欧美日韩综合aⅴ视频| 免费高清在线视频一区·| 色狠狠综合天天综合综合| 欧美精品一区二区三区很污很色的| 26uuu欧美| 中文字幕日韩一区二区| 337p粉嫩大胆噜噜噜噜噜91av| 337p亚洲精品色噜噜噜| 国产三级欧美三级| 亚洲第一av色| 国产福利一区二区| 欧美日韩国产大片| 久久久久久久久久久久电影| 国产精品国产成人国产三级| 免费观看久久久4p| 97se亚洲国产综合自在线观| 日韩精品一区二区三区三区免费| 亚洲天堂a在线| 国产精品一区二区久久不卡| 538prom精品视频线放| 亚洲品质自拍视频| 成人伦理片在线| 欧美亚日韩国产aⅴ精品中极品| 精品久久久久久久久久久院品网 | 精品一区二区在线观看| 欧美日韩一区三区| 亚洲欧美aⅴ...| 不卡的av电影在线观看| 国产亚洲一区二区三区四区| 精品在线你懂的| 精品国产自在久精品国产| 美女视频黄 久久| 欧美一区二区黄色| 久久 天天综合| 久久先锋影音av鲁色资源| 免费精品视频最新在线| 制服丝袜亚洲播放| 久久99久久99| 欧美精品一区二区久久婷婷| 久久99久久久久久久久久久| 在线不卡a资源高清| 日日夜夜免费精品| 欧美tk丨vk视频| 成人午夜精品在线| 亚洲欧美在线视频| 欧美最新大片在线看| 青青草97国产精品免费观看无弹窗版| 欧美精品日日鲁夜夜添| 久久超碰97人人做人人爱| 日韩激情在线观看| 国产欧美日韩精品a在线观看| www.亚洲人| 免费观看在线综合色| 亚洲国产精品av| 在线观看免费视频综合| 美腿丝袜亚洲色图| ㊣最新国产の精品bt伙计久久| 99精品一区二区三区| 日韩av中文字幕一区二区| 国产日韩欧美麻豆| 欧美日韩中文字幕一区| 国模无码大尺度一区二区三区| 亚洲欧美福利一区二区| 欧美一区二区三区啪啪| 99久久er热在这里只有精品15| 午夜a成v人精品| 综合激情成人伊人| 日韩欧美黄色影院| 91福利在线免费观看| 国产传媒日韩欧美成人| 日韩电影在线观看网站| 亚洲欧美怡红院| 国产欧美日韩激情| 欧美日韩高清一区| 久久精品国产99国产精品| 亚洲欧美乱综合| 国产日韩欧美一区二区三区乱码 | 国产在线视频不卡二| 亚洲午夜视频在线| 国产精品日韩精品欧美在线| 日韩免费成人网| 在线综合+亚洲+欧美中文字幕| 91蜜桃在线免费视频| 国产精品自产自拍| 精品一区二区三区在线观看国产| 亚洲成人综合视频| 亚洲国产精品天堂| 亚洲最新在线观看|