• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            小默

            [zz]DispatchPnP

            DispatchPnP

            The DispatchPnP routine services IRPs containing the IRP_MJ_PNP I/O function code.

            DRIVER_DISPATCH DispatchPnP;

            NTSTATUS
              DispatchPnP(
                __in struct _DEVICE_OBJECT  *DeviceObject,
                __in struct _IRP  *Irp
                )
              {...}

            Parameters

            DeviceObject
            Caller-supplied pointer to a DEVICE_OBJECT structure. This is the device object for the target device, previously created by the driver's AddDevice routine.
            Irp
            Caller-supplied pointer to an IRP structure that describes the requested I/O operation.

            Return Value

            If the routine succeeds, it must return STATUS_SUCCESS. Otherwise, it must return one of the error status values defined in Ntstatus.h.

            Comments

            A driver's DispatchPnP routine should be named XxxDispatchPnP, where Xxx is a driver-specific prefix. The driver's DriverEntry routine must store the DispatchPnP routine's address in DriverObject->MajorFunction[IRP_MJ_PNP].

            Input parameters for all Dispatch routines are supplied in the IRP structure pointed to by Irp. Additional parameters are supplied in the driver's associated I/O stack location, which is described by the IO_STACK_LOCATION structure and can be obtained by calling IoGetCurrentIrpStackLocation.

            Generally, all Dispatch routines execute in an arbitrary thread context at IRQL = PASSIVE_LEVEL, but there are exceptions. For more information, see Dispatch Routines and IRQLs.

            For more information about DispatchPnP routines, see Writing Dispatch Routines. For more information about IRPs, see Handling IRPs.

            Example

            To define a DispatchPnP callback function that is named MyDispatchPnP, you must first provide a function declaration that Static Driver Verifier (SDV) and other verification tools require, as follows:

            DRIVER_DISPATCH MyDispatchPnP;

             

            Then, implement your callback function as follows:

            NTSTATUS
              MyDispatchPnP(
                __in struct _DEVICE_OBJECT  *DeviceObject,
                __in struct _IRP  *Irp
                )
              {
                  // Function body
              }

             

            The DRIVER_DISPATCH function type is defined in the Wdm.h header file. For more information about SDV requirements for function declarations, see Declaring Functions Using Function Role Types for WDM Drivers.

            Requirements

            IRQL: PASSIVE_LEVEL (see Comments section)

            Headers: Declared in Wdm.h. Include Wdm.h, Ntddk.h, or Ntifs.h.

            posted on 2009-12-29 11:20 小默 閱讀(277) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Windows

            導(dǎo)航

            統(tǒng)計(jì)

            留言簿(13)

            隨筆分類(287)

            隨筆檔案(289)

            漏洞

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            久久久久国产一区二区三区| 人妻无码久久精品| 久久精品中文字幕久久| 久久久久亚洲爆乳少妇无 | 久久夜色精品国产噜噜麻豆| 国产精品美女久久久久| 性做久久久久久免费观看| 久久99国产综合精品免费| 色天使久久综合网天天 | 99久久无码一区人妻a黑| 精品久久久久国产免费| 久久久老熟女一区二区三区| 亚洲国产成人精品女人久久久 | 国产精品亚洲综合久久| 国产精久久一区二区三区| 久久综合狠狠综合久久| 亚洲天堂久久久| 久久人人爽人人爽人人片AV麻豆| 99久久婷婷免费国产综合精品| 欧美精品乱码99久久蜜桃| 久久久久一本毛久久久| 久久se精品一区精品二区国产| 久久国产乱子精品免费女| 久久精品国产亚洲AV无码娇色| 久久久无码精品亚洲日韩京东传媒 | 久久影院亚洲一区| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 久久国产精品一区二区| 久久国产精品一国产精品金尊| 久久人人爽人人爽人人片AV麻烦| 亚洲AV伊人久久青青草原| 久久精品夜色噜噜亚洲A∨| 国产女人aaa级久久久级| 久久91精品国产91久久小草| 国产美女久久久| 日韩亚洲欧美久久久www综合网 | 中文字幕无码久久精品青草 | 国产高潮国产高潮久久久| 久久精品国产亚洲AV麻豆网站| 久久久久久亚洲精品成人 | 久久久久国产一区二区|