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

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

?? pnp.c

?? 利用系統(tǒng)內(nèi)存建立虛擬磁盤
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
    } // 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" ) );

    #ifdef DBG
    status =
    #endif
    IoSetDeviceInterfaceState (  &devExt->SymbolicLink , FALSE ) ;
    #ifdef DBG
    if ( status != STATUS_SUCCESS )
    {
        DBGPRINT( DBG_COMP_PNP, DBG_LEVEL_VERBOSE, ("IoSetDeviceInterfaceState : reports %d\n" , status ) );
    }
    #endif

    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()





?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电影免费观看高清完整版在线 | 亚洲大片精品永久免费| 91欧美一区二区| 亚洲另类色综合网站| 99久久综合精品| 一区二区视频在线| 欧美日韩精品一区视频| 视频一区二区不卡| 日韩免费看的电影| 国产福利不卡视频| 国产精品视频免费| 91福利精品第一导航| 亚洲成人动漫一区| 日韩美女视频在线| 成人激情综合网站| 亚洲精品欧美专区| 91精品国产高清一区二区三区蜜臀| 美女视频免费一区| 欧美国产一区二区在线观看| 色94色欧美sute亚洲13| 亚洲v中文字幕| 久久精品这里都是精品| 日本高清无吗v一区| 午夜久久电影网| 久久综合色之久久综合| a4yy欧美一区二区三区| 日韩极品在线观看| 日本一区二区免费在线观看视频 | 色天使色偷偷av一区二区| 亚洲成在人线在线播放| 久久一区二区视频| 色综合久久六月婷婷中文字幕| 五月天视频一区| 国产欧美日韩久久| 欧美老人xxxx18| 春色校园综合激情亚洲| 天天综合天天综合色| 国产免费久久精品| 69av一区二区三区| voyeur盗摄精品| 欧美a级理论片| 亚洲欧美日本韩国| 精品三级在线看| 91福利在线免费观看| 国产乱码精品1区2区3区| 亚洲午夜免费电影| 国产精品沙发午睡系列990531| 欧美亚洲国产一区二区三区va | 自拍偷自拍亚洲精品播放| 91精品视频网| 欧美影视一区二区三区| 播五月开心婷婷综合| 久久国产精品99精品国产| 亚洲第一二三四区| 亚洲精品一二三四区| 欧美国产综合一区二区| 久久中文字幕电影| 91精品国产免费| 欧美中文字幕一区| 91视频观看视频| 成人一级黄色片| 国产主播一区二区| 久久精品国产免费| 热久久久久久久| 一区二区三区日本| 亚洲精品视频免费观看| 综合色中文字幕| 国产精品网站一区| 久久精品视频在线看| 精品少妇一区二区三区| 欧美一区二区三区思思人| 欧美在线观看视频在线| 欧美在线你懂的| 色婷婷综合久久久中文字幕| 波多野结衣91| 成av人片一区二区| 成人aaaa免费全部观看| 暴力调教一区二区三区| 成人精品国产福利| av爱爱亚洲一区| 99久久精品免费看国产| 91在线播放网址| 色噜噜狠狠成人网p站| 一本色道久久综合亚洲aⅴ蜜桃| 97se亚洲国产综合在线| 一本久久a久久精品亚洲| 91国偷自产一区二区三区成为亚洲经典 | 日韩欧美一卡二卡| 日韩欧美123| 亚洲精品在线一区二区| 久久久久久影视| 久久久.com| 国产精品国产三级国产专播品爱网| 国产精品久久久久一区| 亚洲天堂2016| 亚洲国产精品影院| 免费久久精品视频| 国产乱码一区二区三区| eeuss鲁片一区二区三区在线看| 91玉足脚交白嫩脚丫在线播放| 色噜噜狠狠色综合欧洲selulu| 精品视频一区 二区 三区| 欧美一区二区三区男人的天堂| 日韩情涩欧美日韩视频| 国产日韩精品一区二区三区在线| 国产精品美女视频| 亚洲国产乱码最新视频 | 成人免费视频app| 97se亚洲国产综合自在线不卡| 欧美性xxxxxxxx| 精品国产91洋老外米糕| 国产精品国产三级国产专播品爱网 | 欧美日韩不卡在线| 久久免费美女视频| 亚洲毛片av在线| 喷水一区二区三区| 北岛玲一区二区三区四区 | 欧美电影免费观看高清完整版在| 国产日韩在线不卡| 午夜久久久影院| 风间由美一区二区三区在线观看| 91久久国产最好的精华液| 日韩欧美一区二区不卡| 自拍视频在线观看一区二区| 免费在线观看不卡| 91免费观看视频| 精品乱码亚洲一区二区不卡| 亚洲欧美日韩系列| 国产精品自在在线| 欧美日韩在线观看一区二区| 国产三级欧美三级日产三级99| 午夜精品爽啪视频| av午夜一区麻豆| 精品国产电影一区二区| 亚洲国产欧美在线| www.成人在线| 欧美电影免费观看完整版| 亚洲综合久久久久| 国产麻豆精品视频| 91麻豆精品国产91久久久更新时间| 欧美国产日产图区| 国产一区中文字幕| 欧美日韩国产精品自在自线| 国产精品久久久久久一区二区三区 | 欧美日韩精品欧美日韩精品| 中文字幕的久久| 国产精品自在在线| 日韩一区二区精品| 亚洲国产精品麻豆| 97se狠狠狠综合亚洲狠狠| 国产欧美精品区一区二区三区| 蜜臀国产一区二区三区在线播放| 色欧美88888久久久久久影院| 亚洲国产精品av| 国产综合色产在线精品| 91精品久久久久久久91蜜桃| 亚洲一区二区三区国产| 99精品在线观看视频| 国产精品私房写真福利视频| 激情综合网最新| 日韩亚洲电影在线| 视频在线在亚洲| 欧美人妖巨大在线| 亚洲成人精品在线观看| 色婷婷精品大在线视频| 一区二区三区四区视频精品免费| 成人影视亚洲图片在线| 国产目拍亚洲精品99久久精品| 国产精品99久久久久久似苏梦涵| 26uuu久久综合| 国产一区二区在线观看视频| 日韩欧美的一区二区| 久久精品99国产精品日本| 欧美一区二区三区啪啪| 蜜臀av性久久久久蜜臀aⅴ四虎| 91精品国产91久久久久久最新毛片| 日韩中文字幕亚洲一区二区va在线 | 色综合久久天天| 亚洲综合图片区| 欧美日韩一本到| 蜜臀精品一区二区三区在线观看| 欧美第一区第二区| 国产专区欧美精品| 国产精品久久久久久久久免费樱桃| 成人av资源站| 亚洲午夜电影在线观看| 欧美日本视频在线| 精彩视频一区二区| 国产亚洲人成网站| 91网址在线看| 日韩精品每日更新| 精品美女一区二区| av在线不卡网| 亚洲乱码中文字幕| 欧美精品在线一区二区| 精品一区二区三区在线播放视频| 欧美国产国产综合| 在线观看一区日韩| 久久99国产精品久久99 | 欧美日韩国产天堂|