⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hpna_2k.h

📁 HomePNA的Usb网卡驱动
💻 H
字号:
/*++

Copyright (c) 1999  Microsoft Corporation

Module Name:

   HPNA_2K.h

Abstract:
        Header for function prototypes and struct defs pertaining to USB.
        This header can only be used in modules that DO include Wdm.h, Usbdi.h, and usbdlib.h
        but do NOT include ndis.h and ntddndis.h

Environment:

    kernel mode only

Notes:

  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
  PURPOSE.

  Copyright (c) 1999 Microsoft Corporation.  All Rights Reserved.


Revision History:


--*/

#ifndef USB_H
#define USB_H



// used to track driver-generated write irps 
typedef struct _USB_CONTEXT {

    PUSB_DEVICE DeviceObject;
    PVOID            Packet;
    PURB            Urb;
    PIRP            Irp;
    PUCHAR            Buffer;
    UINT            BufLen;
    CONTEXT_TYPE    Type;
    ULONG            fInUse; // Declared as ULONG so can use with InterlockedExchange()

} USB_CONTEXT, *PUSB_CONTEXT,**PPUSB_CONTEXT;


typedef struct _USB_INFO
{

    // USB configuration handle and ptr for the configuration the
    // device is currently in
    USBD_CONFIGURATION_HANDLE UsbConfigurationHandle;
    PUSB_CONFIGURATION_DESCRIPTOR UsbConfigurationDescriptor;

    PIRP            IrpSubmitUrb;
    PIRP            IrpSubmitIoCtl;


    // ptr to the USB device descriptor
    // for this device
    PUSB_DEVICE_DESCRIPTOR UsbDeviceDescriptor;

    // we support one interface
    // this is a copy of the info structure
    // returned from select_configuration or
    // select_interface
    PUSBD_INTERFACE_INFORMATION UsbInterface;

    // urb for control diescriptor request
    struct _URB_CONTROL_DESCRIPTOR_REQUEST DescriptorUrb;

    // urb to use for control/status  requests to USBD
	//这个是商家自定义的,等清楚后加,有GET/SET_Register
    //struct _URB_CONTROL_VENDOR_OR_CLASS_REQUEST ClassUrb;

} USB_INFO, *PUSB_INFO;


NTSTATUS UsbIoCompleteWrite(
            IN PDEVICE_OBJECT pUsbDevObj,
            IN PIRP           pIrp,
            IN PVOID          Context
            );


NTSTATUS
CallUSBD(
    IN PUSB_DEVICE DeviceExt,
    IN PURB Urb
    );


NTSTATUS
UsbIoCompleteControl(
            IN PDEVICE_OBJECT pUsbDevObj,
            IN PIRP           pIrp,
            IN PVOID          Context
            );

BOOLEAN
CancelPendingControlIo(
    IN PUSB_DEVICE DeviceExt,
    IN PIRP  IrpToCancel,
    IN PKEVENT EventToClear
    );

NTSTATUS MyKeWaitForSingleObject( 
    IN  PUSB_DEVICE     Device,
    IN  PVOID          EventWaitingFor,
    IN  OUT PIRP       IrpWaitingFor,
    LONGLONG           timeout100ns
);

NTSTATUS
SelectInterface(
    IN PUSB_DEVICE DeviceExt,
    IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor
    );

NTSTATUS
UsbIoCompleteRead(
            IN PDEVICE_OBJECT pUsbDevObj,
            IN PIRP           pIrp,
            IN PVOID          Context
            );
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -