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

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

?? pnp.c

?? 這個例程源碼演示了在WINDOWS 2000下
?? C
?? 第 1 頁 / 共 2 頁
字號:

    default: {
        IoSkipCurrentIrpStackLocation( Irp );
        status = IoCallDriver( devExt->LowerDeviceObject, Irp );
        break;
    } // default

    } // switch

    //
    // Device Extenion is gone if the current IRP is IRP_MN_REMOVE_DEVICE
    //
    if ( lockHeld == TRUE ) {
        IoReleaseRemoveLock(&devExt->RemoveLock, Irp);
        DBGPRINT( DBG_COMP_PNP, DBG_LEVEL_INFO, ("DispatchPnP - OUT. Device State=%s\n",
              StateTable[devExt->DevState] ) );
    }

    return status;
}  // End of RamDiskDispatchPnp()

NTSTATUS
RamDiskDispatchPower(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp
    )
/*++ 
Routine Description:

    Dispatch routine for Power management IRPs
    
Arguments:

    DeviceObject    - Supplies the device object.
    
    Irp             - Supplies the I/O request packet. 

Return Value:

    NTSTATUS
    
--*/    
{
    PDEVICE_EXTENSION   devExt;
    NTSTATUS            status = STATUS_SUCCESS;

    PAGED_CODE();

    DBGPRINT( DBG_COMP_POWER, DBG_LEVEL_VERBOSE, ("DispatchPower - IN. Fdo=(%p) Irp=(%p)\n",
                                                        DeviceObject, Irp ) );
    devExt = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;

    //
    // If the device has been removed, the driver should not pass
    // the IRP down to the next lower driver.
    //

    if ( devExt->DevState == REMOVED) {
        PoStartNextPowerIrp( Irp );
        status = STATUS_DELETE_PENDING;
        COMPLETE_REQUEST( Irp, status, 0 );
        return status;
    }

    PoStartNextPowerIrp( Irp );
    IoSkipCurrentIrpStackLocation( Irp );

    DBGPRINT( DBG_COMP_POWER, DBG_LEVEL_VERBOSE, ("DispatchPower - OUT.\n" ) );

    return PoCallDriver( devExt->LowerDeviceObject, Irp );

}  // End of RamDiskDispatchPower()

NTSTATUS
RamDiskDispatchSystemControl(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp
    )
/*++ 
Routine Description:

    Dispatch routine for WMI IRPs. It just forwards the 
    IRPs to the lower driver.
    
Arguments:

    DeviceObject    - Supplies the device object.
    
    Irp             - Supplies the I/O request packet. 

Return Value:

    NTSTATUS
    
--*/    
{
    PDEVICE_EXTENSION   devExt;

    PAGED_CODE();

    DBGPRINT( DBG_COMP_WMI, DBG_LEVEL_VERBOSE, ("DispatchSystemControl - IN. Fdo=(%p) Irp=(%p)\n",
        DeviceObject, Irp ) );

    devExt = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
    IoSkipCurrentIrpStackLocation( Irp );
    DBGPRINT( DBG_COMP_WMI, DBG_LEVEL_VERBOSE, ("DispatchSystemControl - OUT.\n" ) );
    return IoCallDriver( devExt->LowerDeviceObject, Irp );

}  // End of RamDiskDispatchSystemControl()


NTSTATUS
RamDiskIoCompletionRoutine(
    IN PDEVICE_OBJECT  DeviceObject,
    IN PIRP            Irp,
    IN PKEVENT         Event
    )
/*++ 
Routine Description:

    Io completion routine
    
Arguments:

    DeviceObject    - Supplies the device object.
    
    Irp             - Supplies the I/O request packet. 

    Event           - Supplies the Event to be set.

Return Value:

    NTSTATUS
    
--*/    
{

    KeSetEvent( Event, 0, FALSE );
    return STATUS_MORE_PROCESSING_REQUIRED;

}  // End of RamDiskIoCompletionRoutine()


VOID
RamDiskCleanUp( 
    IN PDEVICE_OBJECT DeviceObject
    )
/*++

Routine Description:

    This routine does the required cleaning like deleting the symbolic link
    releasjing the memory etc.

Arguments:

    DeviceObject - Supplies a pointer to the device object that represents
        the device whose capacity is to be read.

Return Value:

    None.

--*/
{
      
    PDEVICE_EXTENSION   devExt = DeviceObject->DeviceExtension;

    PAGED_CODE();
    DBGPRINT( DBG_COMP_PNP, DBG_LEVEL_VERBOSE, ("RamDiskCleanUp\n" ) );
    
    if ( devExt->Flags & FLAG_LINK_CREATED ) {
        IoDeleteSymbolicLink( &devExt->SymbolicLink );
    }
    if ( devExt->SymbolicLink.Buffer ) {
        ExFreePool( devExt->SymbolicLink.Buffer );
    }
    if ( devExt->DiskRegInfo.DriveLetter.Buffer ) {
        ExFreePool( devExt->DiskRegInfo.DriveLetter.Buffer );
    }
    if ( devExt->DiskImage ) {
        ExFreePool( devExt->DiskImage );
    }
    if ( devExt->LowerDeviceObject ) {
        IoDetachDevice( devExt->LowerDeviceObject );
    }
    IoDeleteDevice( DeviceObject );

    return;
}

VOID
RamDiskRemoveDevice(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP Irp
    )

/*++

Routine Description:

    This routine releases the remove lock and calls RamDiskCleanUp
    to do the cleaning

Arguments:

    DeviceObject - Supplies a pointer to the device object that represents
        the device whose capacity is to be read.

Return Value:

    None.

--*/
{
    PDEVICE_EXTENSION           devExt = DeviceObject->DeviceExtension;
    PRAMDISK_DRIVER_EXTENSION   driverExtension;
    NTSTATUS                    status;

    PAGED_CODE();
    DBGPRINT( DBG_COMP_PNP, DBG_LEVEL_VERBOSE, ("RemoveDevice\n" ) );

    Irp->IoStatus.Status = STATUS_SUCCESS;
    IoSkipCurrentIrpStackLocation( Irp );
    status = IoCallDriver( devExt->LowerDeviceObject, Irp );

    //
    // Set the device status to REMOVED and wait for other drivers 
    // to release the lock, then delete the device object
    //
    devExt->DevState = REMOVED;
    IoReleaseRemoveLockAndWait(&devExt->RemoveLock, Irp);

    driverExtension = IoGetDriverObjectExtension(DeviceObject->DriverObject,
                                             RAMDISK_DRIVER_EXTENSION_KEY);
    ASSERT ( driverExtension != NULL );
	driverExtension->DeviceInitialized = FALSE;

    RamDiskCleanUp( DeviceObject );

    DBGPRINT( DBG_COMP_PNP, DBG_LEVEL_NOTIFY, ("Device Removed succesfully\n" ) );

    return;
} // end RamDiskRemoveDevice()


PSTR
GetPnpIrpName(
    IN UCHAR    PnpMinorFunction
    )
/*++ 
Routine Description:

    This function returns the minor function string for
    the given id.
    
Arguments:

    PnpMinorFunction    - Supplies the Minor function Irp id.
    
Return Value:

    PSTR    - Function name string
    
--*/    
{
    static char    functionName[80];

    PAGED_CODE();

    switch ( PnpMinorFunction ) {

        case IRP_MN_START_DEVICE:                 // 0x00
            return "IRP_MN_START_DEVICE";
            break;

        case IRP_MN_QUERY_REMOVE_DEVICE:          // 0x01
            return "IRP_MN_QUERY_REMOVE_DEVICE";
            break;

        case IRP_MN_REMOVE_DEVICE:                // 0x02
            return "IRP_MN_REMOVE_DEVICE";
            break;

        case IRP_MN_CANCEL_REMOVE_DEVICE:         // 0x03
            return "IRP_MN_CANCEL_REMOVE_DEVICE";
            break;

        case IRP_MN_STOP_DEVICE:                  // 0x04
            return "IRP_MN_STOP_DEVICE";
            break;

        case IRP_MN_QUERY_STOP_DEVICE:            // 0x05
            return "IRP_MN_QUERY_STOP_DEVICE";
            break;

        case IRP_MN_CANCEL_STOP_DEVICE:           // 0x06
            return "IRP_MN_CANCEL_STOP_DEVICE";
            break;

        case IRP_MN_QUERY_DEVICE_RELATIONS:       // 0x07
            return "IRP_MN_QUERY_DEVICE_RELATIONS";
            break;

        case IRP_MN_QUERY_INTERFACE:              // 0x08
            return "IRP_MN_QUERY_INTERFACE";
            break;

        case IRP_MN_QUERY_CAPABILITIES:           // 0x09
            return "IRP_MN_QUERY_CAPABILITIES";
            break;

        case IRP_MN_QUERY_RESOURCES:              // 0x0A
            return "IRP_MN_QUERY_RESOURCES";
            break;

        case IRP_MN_QUERY_RESOURCE_REQUIREMENTS:  // 0x0B
            return "IRP_MN_QUERY_RESOURCE_REQUIREMENTS";
            break;

        case IRP_MN_QUERY_DEVICE_TEXT:            // 0x0C
            return "IRP_MN_QUERY_DEVICE_TEXT";
            break;

        case IRP_MN_FILTER_RESOURCE_REQUIREMENTS: // 0x0D
            return "IRP_MN_FILTER_RESOURCE_REQUIREMENTS";
            break;

        case IRP_MN_READ_CONFIG:                  // 0x0F
            return "IRP_MN_READ_CONFIG";
            break;

        case IRP_MN_WRITE_CONFIG:                 // 0x10
            return "IRP_MN_WRITE_CONFIG";
            break;

        case IRP_MN_EJECT:                        // 0x11
            return "IRP_MN_EJECT";
            break;

        case IRP_MN_SET_LOCK:                     // 0x12
            return "IRP_MN_SET_LOCK";
            break;

        case IRP_MN_QUERY_ID:                     // 0x13
            return "IRP_MN_QUERY_ID";
            break;

        case IRP_MN_QUERY_PNP_DEVICE_STATE:       // 0x14
            return "IRP_MN_QUERY_PNP_DEVICE_STATE";
            break;

        case IRP_MN_QUERY_BUS_INFORMATION:        // 0x15
            return "IRP_MN_QUERY_BUS_INFORMATION";
            break;

        case IRP_MN_DEVICE_USAGE_NOTIFICATION:    // 0x16
            return "IRP_MN_DEVICE_USAGE_NOTIFICATION";
            break;

        case IRP_MN_SURPRISE_REMOVAL:             // 0x17
            return "IRP_MN_SURPRISE_REMOVAL";
            break;

        case IRP_MN_QUERY_LEGACY_BUS_INFORMATION: // 0x18
            return "IRP_MN_QUERY_LEGACY_BUS_INFORMATION";
            break;

        default:
            sprintf( functionName, "Unknown IRP(0x%x)", PnpMinorFunction );
            return functionName;
            break;

    }    // switch
}  // End of GetPnpIrpName()





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美在线不卡| 在线观看国产日韩| 2021久久国产精品不只是精品| 丝袜美腿亚洲色图| 91精品国产综合久久久久久久| 天堂在线亚洲视频| 欧美mv日韩mv亚洲| 高清不卡一区二区在线| ...中文天堂在线一区| 99久久国产综合色|国产精品| 亚洲精品乱码久久久久久 | 一区二区日韩电影| 欧美三级日本三级少妇99| 日韩二区三区在线观看| 久久久综合精品| 97久久人人超碰| 视频在线观看一区| 久久九九久久九九| 日本高清无吗v一区| 日本特黄久久久高潮| 欧美激情一区在线观看| 在线精品视频一区二区三四 | 精品福利一二区| av在线综合网| 蜜臀精品久久久久久蜜臀 | 国产原创一区二区三区| 国产精品欧美久久久久一区二区| 91在线视频免费91| 免费高清视频精品| 国产精品国产三级国产三级人妇 | 黑人巨大精品欧美黑白配亚洲| 国产精品久久毛片a| 欧美日韩精品一区二区三区蜜桃| 国产综合久久久久久鬼色| 亚洲免费观看高清完整版在线| 日韩一区和二区| fc2成人免费人成在线观看播放 | 亚洲色图一区二区| 日韩欧美aaaaaa| 91美女片黄在线观看91美女| 久久成人羞羞网站| 亚洲狠狠爱一区二区三区| 国产日韩欧美综合一区| 9191成人精品久久| 色欧美乱欧美15图片| 国产精品资源站在线| 午夜亚洲福利老司机| 国产精品乱码一区二区三区软件| 91精品国产综合久久久久久久久久 | 成人av资源在线| 蜜桃视频在线观看一区| 亚洲综合成人在线视频| 中文在线免费一区三区高中清不卡| 91精品在线麻豆| 在线观看视频91| aaa国产一区| 国产成人在线视频网址| 久久国产精品第一页| 天天综合天天做天天综合| 1000部国产精品成人观看| 欧美v国产在线一区二区三区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 中文字幕一区二区三区四区不卡| 日韩三级电影网址| 8v天堂国产在线一区二区| 在线免费观看日本欧美| 91视频一区二区三区| 粉嫩13p一区二区三区| 国产伦精品一区二区三区视频青涩 | 欧美精品久久久久久久多人混战| 北条麻妃国产九九精品视频| 国产精品 日产精品 欧美精品| 久久99国产精品尤物| 欧美aⅴ一区二区三区视频| 丝袜亚洲另类丝袜在线| 日韩av电影一区| 久久精品国产99国产精品| 蜜桃视频免费观看一区| 激情另类小说区图片区视频区| 捆绑调教美女网站视频一区| 理论片日本一区| 国内精品国产成人| 国产suv精品一区二区6| 成人91在线观看| 色哟哟日韩精品| 欧美色视频在线| 91超碰这里只有精品国产| 欧美精品一级二级| 欧美一级生活片| 2020国产精品| 国产精品久久三| 亚洲国产日韩a在线播放| 亚洲高清一区二区三区| 另类成人小视频在线| 国产91精品一区二区麻豆网站| 大桥未久av一区二区三区中文| proumb性欧美在线观看| 欧美在线视频全部完| 在线播放中文字幕一区| 久久久亚洲国产美女国产盗摄| 欧美国产日韩在线观看| 亚洲午夜私人影院| 六月丁香综合在线视频| av激情综合网| 欧美欧美欧美欧美首页| 久久综合色天天久久综合图片| 中文字幕av在线一区二区三区| 亚洲制服丝袜av| 看片的网站亚洲| 99精品在线免费| 欧美一区二区三区四区在线观看| 精品国产91乱码一区二区三区| 国产精品国产精品国产专区不蜜| 丝袜亚洲精品中文字幕一区| 丁香婷婷综合网| 欧美酷刑日本凌虐凌虐| 日本一二三不卡| 日本麻豆一区二区三区视频| 成人亚洲一区二区一| 在线成人免费观看| 中文字幕 久热精品 视频在线| 日韩精品三区四区| jlzzjlzz亚洲女人18| 精品国产凹凸成av人导航| 夜夜嗨av一区二区三区四季av| 久久国产精品99精品国产| 欧美在线观看视频一区二区三区| 欧美草草影院在线视频| 玉足女爽爽91| 国产成人夜色高潮福利影视| 欧美电影一区二区| 亚洲猫色日本管| 福利一区福利二区| 日韩精品一区二区三区三区免费| 一区二区三区四区av| 狠狠色伊人亚洲综合成人| 欧美日韩在线播放| 亚洲欧美电影院| 国产成人在线网站| 日韩欧美电影一区| 午夜免费欧美电影| 91美女在线观看| 国产精品女主播在线观看| 九九精品一区二区| 欧美精品少妇一区二区三区| 综合欧美一区二区三区| 国产精品一区二区91| 欧美大片拔萝卜| 日韩激情视频网站| 欧美婷婷六月丁香综合色| 亚洲欧洲另类国产综合| 国产成人精品亚洲午夜麻豆| 欧美一级理论性理论a| 亚洲最快最全在线视频| 91欧美激情一区二区三区成人| 国产色产综合色产在线视频| 精品亚洲免费视频| 精品国产一区二区三区忘忧草| 无吗不卡中文字幕| 欧美喷潮久久久xxxxx| 五月天欧美精品| 欧美一区二区三区四区在线观看| 日韩二区三区在线观看| 91精品一区二区三区久久久久久| 婷婷中文字幕综合| 777欧美精品| 欧美aaa在线| 久久综合av免费| 国产成人免费av在线| 国产日产精品1区| 成人av电影在线播放| 亚洲人xxxx| 欧美三级一区二区| 日韩高清不卡在线| 久久综合久色欧美综合狠狠| 国产一区二区三区免费在线观看 | 国产成+人+日韩+欧美+亚洲| 久久精品夜色噜噜亚洲aⅴ| 丁香天五香天堂综合| 亚洲色图在线看| 欧美日韩国产首页| 男人的天堂亚洲一区| 国产亚洲一区二区三区在线观看| 国产精华液一区二区三区| 国产精品卡一卡二| 欧美四级电影网| 蜜桃av一区二区| 国产农村妇女精品| 色婷婷综合久久| 日韩va欧美va亚洲va久久| 精品国产一区久久| 99久久精品免费看| 亚洲成人免费看| 久久噜噜亚洲综合| 91豆麻精品91久久久久久| 日韩精品1区2区3区| 中文字幕免费不卡| 欧美丝袜丝交足nylons| 久久精品久久99精品久久| 国产精品丝袜91|