ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

KSDDKAPI HRESULT WINAPI KsOpenDefaultDevice ( REFGUID  Category,
ACCESS_MASK  Access,
PHANDLE  DeviceHandle 
)

Definition at line 108 of file ksproxy.cpp.

Referenced by CKsClockForwarder_Constructor(), and CKsQualityForwarder_Constructor().

{
    HDEVINFO hList;
    SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
    PSP_DEVICE_INTERFACE_DETAIL_DATA_W DeviceInterfaceDetailData;
    WCHAR Path[MAX_PATH+sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W)];

    /* open device list */
    hList = SetupDiGetClassDevsW(&Category, NULL, NULL, DIGCF_DEVICEINTERFACE  | DIGCF_PRESENT);

    if (hList == INVALID_HANDLE_VALUE)
    {
        /* failed */
        return MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, GetLastError());
    }

    /* setup parameters */
    DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);

    if (SetupDiEnumDeviceInterfaces(hList, NULL, &Category, 0, &DeviceInterfaceData))
    {
        /* setup interface data struct */
        DeviceInterfaceDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA_W)Path;
        DeviceInterfaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA_W);

        /* get device interface details */
        if (SetupDiGetDeviceInterfaceDetailW(hList, &DeviceInterfaceData, DeviceInterfaceDetailData, sizeof(Path), NULL, NULL))
        {
            /* open device */
            *DeviceHandle = CreateFileW(DeviceInterfaceDetailData->DevicePath, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED | FILE_ATTRIBUTE_NORMAL, NULL);

            if (*DeviceHandle != INVALID_HANDLE_VALUE)
            {
                /* operation succeeded */
                SetupDiDestroyDeviceInfoList(hList);
                return NOERROR;
            }
        }
    }

    /* free device list */
    SetupDiDestroyDeviceInfoList(hList);

    /* failed */
    return MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, GetLastError());
}

Generated on Thu May 24 2012 05:02:46 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.