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

📄 isoch.c

📁 winddk src目录下的WDM源码压缩!
💻 C
📖 第 1 页 / 共 5 页
字号:
/*++

Copyright (c) 1998  Microsoft Corporation

Module Name:

    isoch.c

Abstract

    1394 isoch wrappers

Author:

    Peter Binder (pbinder) 5/4/98

Revision History:
Date     Who       What
-------- --------- ------------------------------------------------------------
05/04/98 pbinder   taken from old win1394
08/18/98 pbinder   changed for new dialogs
--*/

#define _ISOCH_C
#include "pch.h"
#undef _ISOCH_C

INT_PTR CALLBACK
IsochAllocateBandwidthDlgProc(
    HWND        hDlg,
    UINT        uMsg,
    WPARAM      wParam,
    LPARAM      lParam
    )
{
    static PISOCH_ALLOCATE_BANDWIDTH    pIsochAllocateBandwidth;
    static CHAR                         tmpBuff[STRING_SIZE];

    switch (uMsg) {

        case WM_INITDIALOG:

            pIsochAllocateBandwidth = (PISOCH_ALLOCATE_BANDWIDTH)lParam;

            _ultoa(pIsochAllocateBandwidth->nMaxBytesPerFrameRequested, tmpBuff, 16);
            SetDlgItemText(hDlg, IDC_ALLOC_BW_BYTES_PER_FRAME, tmpBuff);

            if (pIsochAllocateBandwidth->fulSpeed == SPEED_FLAGS_FASTEST) {

                CheckRadioButton( hDlg,
                                  IDC_ALLOC_BW_100MBPS,
                                  IDC_ALLOC_BW_FASTEST,
                                  IDC_ALLOC_BW_FASTEST
                                  );
            }
            else {

                CheckRadioButton( hDlg,
                                  IDC_ALLOC_BW_100MBPS,
                                  IDC_ALLOC_BW_FASTEST,
                                  pIsochAllocateBandwidth->fulSpeed + (IDC_ALLOC_BW_100MBPS-1)
                                  );
            }

            return(TRUE); // WM_INITDIALOG

        case WM_COMMAND:

            switch (LOWORD(wParam)) {

                case IDOK:

                    GetDlgItemText(hDlg, IDC_ALLOC_BW_BYTES_PER_FRAME, tmpBuff, STRING_SIZE);
                    pIsochAllocateBandwidth->nMaxBytesPerFrameRequested = strtoul(tmpBuff, NULL, 16);

                    pIsochAllocateBandwidth->fulSpeed = 0;
                    if (IsDlgButtonChecked(hDlg, IDC_ALLOC_BW_100MBPS))
                        pIsochAllocateBandwidth->fulSpeed = SPEED_FLAGS_100;

                    if (IsDlgButtonChecked(hDlg, IDC_ALLOC_BW_200MBPS))
                        pIsochAllocateBandwidth->fulSpeed = SPEED_FLAGS_200;

                    if (IsDlgButtonChecked(hDlg, IDC_ALLOC_BW_400MBPS))
                        pIsochAllocateBandwidth->fulSpeed = SPEED_FLAGS_400;

                    if (IsDlgButtonChecked(hDlg, IDC_ALLOC_BW_1600MBPS))
                        pIsochAllocateBandwidth->fulSpeed = SPEED_FLAGS_1600;

                    if (IsDlgButtonChecked(hDlg, IDC_ALLOC_BW_FASTEST))
                        pIsochAllocateBandwidth->fulSpeed = SPEED_FLAGS_FASTEST;

                    EndDialog(hDlg, TRUE);
                    return(TRUE); // IDOK

                case IDCANCEL:
                    EndDialog(hDlg, FALSE);
                    return(TRUE); // IDCANCEL

                default:
                    return(TRUE); // default

            } // switch

            break; // WM_COMMAND

        default:
            break; // default

    } // switch

    return(FALSE);
} // IsochAllocateBandwidthDlgProc

void
w1394_IsochAllocateBandwidth(
    HWND    hWnd,
    PSTR    szDeviceName
    )
{
    ISOCH_ALLOCATE_BANDWIDTH    isochAllocateBandwidth;
    DWORD                       dwRet;

    TRACE(TL_TRACE, (hWnd, "Enter w1394IsochAllocateBandwidth\r\n"));

    isochAllocateBandwidth.nMaxBytesPerFrameRequested = 640;
    isochAllocateBandwidth.fulSpeed = SPEED_FLAGS_200;

    if (DialogBoxParam( (HINSTANCE) GetWindowLongPtr(hWnd, GWLP_HINSTANCE),
                        "IsochAllocateBandwidth",
                        hWnd,
                        IsochAllocateBandwidthDlgProc,
                        (LPARAM)&isochAllocateBandwidth
                        )) {

        dwRet = IsochAllocateBandwidth( hWnd,
                                        szDeviceName,
                                        &isochAllocateBandwidth
                                        );
    }

    TRACE(TL_TRACE, (hWnd, "Exit w1394IsochAllocateBandwidth\r\n"));
    return;
} // w1394_IsochAllocateBandwidth

INT_PTR CALLBACK
IsochAllocateChannelDlgProc(
    HWND        hDlg,
    UINT        uMsg,
    WPARAM      wParam,
    LPARAM      lParam
    )
{
    static PISOCH_ALLOCATE_CHANNEL      pIsochAllocateChannel;
    static CHAR                         tmpBuff[STRING_SIZE];

    switch (uMsg) {

        case WM_INITDIALOG:

            pIsochAllocateChannel = (PISOCH_ALLOCATE_CHANNEL)lParam;

            _ultoa(pIsochAllocateChannel->nRequestedChannel, tmpBuff, 16);
            SetDlgItemText(hDlg, IDC_ALLOC_CHAN_REQUESTED_CHANNEL, tmpBuff);

            return(TRUE); // WM_INITDIALOG

        case WM_COMMAND:

            switch (LOWORD(wParam)) {

                case IDOK:

                    GetDlgItemText(hDlg, IDC_ALLOC_CHAN_REQUESTED_CHANNEL, tmpBuff, STRING_SIZE);
                    pIsochAllocateChannel->nRequestedChannel = strtoul(tmpBuff, NULL, 16);

                    EndDialog(hDlg, TRUE);
                    return(TRUE); // IDOK

                case IDCANCEL:
                    EndDialog(hDlg, FALSE);
                    return(TRUE); // IDCANCEL

                default:
                    return(TRUE); // default

            } // switch

            break; // WM_COMMAND

        default:
            break; // default

    } // switch

    return(FALSE);
} // IsochAllocateChannelDlgProc

void
w1394_IsochAllocateChannel(
    HWND    hWnd,
    PSTR    szDeviceName
    )
{
    ISOCH_ALLOCATE_CHANNEL      isochAllocateChannel;
    DWORD                       dwRet;

    TRACE(TL_TRACE, (hWnd, "Enter w1394_IsochAllocateChannel\r\n"));

    isochAllocateChannel.nRequestedChannel = -1;

    if (DialogBoxParam( (HINSTANCE) GetWindowLongPtr(hWnd, GWLP_HINSTANCE),
                        "IsochAllocateChannel",
                        hWnd,
                        IsochAllocateChannelDlgProc,
                        (LPARAM)&isochAllocateChannel
                        )) {

        dwRet = IsochAllocateChannel( hWnd,
                                      szDeviceName,
                                      &isochAllocateChannel
                                      );
    }

    TRACE(TL_TRACE, (hWnd, "Exit w1394_IsochAllocateChannel\r\n"));
    return;
} // w1394_IsochAllocateChannel

INT_PTR CALLBACK
IsochAllocateResourcesDlgProc(
    HWND        hDlg,
    UINT        uMsg,
    WPARAM      wParam,
    LPARAM      lParam
    )
{
    static PISOCH_ALLOCATE_RESOURCES    pIsochAllocateResources;
    static CHAR                         tmpBuff[STRING_SIZE];

    switch (uMsg) {

        case WM_INITDIALOG:

            pIsochAllocateResources = (PISOCH_ALLOCATE_RESOURCES)lParam;

            _ultoa(pIsochAllocateResources->nChannel, tmpBuff, 16);
            SetDlgItemText(hDlg, IDC_ISOCH_ALLOC_RES_CHANNEL, tmpBuff);

            _ultoa(pIsochAllocateResources->nMaxBytesPerFrame, tmpBuff, 16);
            SetDlgItemText(hDlg, IDC_ISOCH_ALLOC_RES_BYTES_PER_FRAME, tmpBuff);

            _ultoa(pIsochAllocateResources->nNumberOfBuffers, tmpBuff, 16);
            SetDlgItemText(hDlg, IDC_ISOCH_ALLOC_RES_NUM_OF_BUFFERS, tmpBuff);

            _ultoa(pIsochAllocateResources->nMaxBufferSize, tmpBuff, 16);
            SetDlgItemText(hDlg, IDC_ISOCH_ALLOC_RES_MAX_BUFFER_SIZE, tmpBuff);

            _ultoa(pIsochAllocateResources->nQuadletsToStrip, tmpBuff, 16);
            SetDlgItemText(hDlg, IDC_ISOCH_ALLOC_RES_QUADLETS_TO_STRIP, tmpBuff);

            if (pIsochAllocateResources->fulSpeed == SPEED_FLAGS_FASTEST) {

                CheckRadioButton( hDlg,
                                  IDC_ISOCH_ALLOC_RES_100MBPS,
                                  IDC_ISOCH_ALLOC_RES_FASTEST,
                                  IDC_ISOCH_ALLOC_RES_FASTEST
                                  );
            }
            else {

                CheckRadioButton( hDlg,
                                  IDC_ISOCH_ALLOC_RES_100MBPS,
                                  IDC_ISOCH_ALLOC_RES_FASTEST,
                                  pIsochAllocateResources->fulSpeed + (IDC_ISOCH_ALLOC_RES_100MBPS-1)
                                  );
            }

            if (pIsochAllocateResources->fulFlags & RESOURCE_USED_IN_LISTENING)
                CheckDlgButton( hDlg, IDC_ISOCH_ALLOC_RES_USED_IN_LISTEN, BST_CHECKED);

            if (pIsochAllocateResources->fulFlags & RESOURCE_USED_IN_TALKING)
                CheckDlgButton( hDlg, IDC_ISOCH_ALLOC_RES_USED_IN_TALK, BST_CHECKED);

            if (pIsochAllocateResources->fulFlags & RESOURCE_BUFFERS_CIRCULAR)
                CheckDlgButton( hDlg, IDC_ISOCH_ALLOC_RES_BUFFERS_CIRCULAR, BST_CHECKED);

            if (pIsochAllocateResources->fulFlags & RESOURCE_STRIP_ADDITIONAL_QUADLETS)
                CheckDlgButton( hDlg, IDC_ISOCH_ALLOC_RES_STRIP_QUADLETS, BST_CHECKED);

            if (pIsochAllocateResources->fulFlags & RESOURCE_SYNCH_ON_TIME)
                CheckDlgButton( hDlg, IDC_ISOCH_ALLOC_RES_SYNC_ON_TIME, BST_CHECKED);

            if (pIsochAllocateResources->fulFlags & RESOURCE_USE_PACKET_BASED)
                CheckDlgButton( hDlg, IDC_ISOCH_ALLOC_RES_USE_PACKET_BASED, BST_CHECKED);

            return(TRUE); // WM_INITDIALOG

        case WM_COMMAND:

            switch (LOWORD(wParam)) {

                case IDOK:

                    GetDlgItemText(hDlg, IDC_ISOCH_ALLOC_RES_CHANNEL, tmpBuff, STRING_SIZE);
                    pIsochAllocateResources->nChannel = strtoul(tmpBuff, NULL, 16);

                    GetDlgItemText(hDlg, IDC_ISOCH_ALLOC_RES_BYTES_PER_FRAME, tmpBuff, STRING_SIZE);
                    pIsochAllocateResources->nMaxBytesPerFrame = strtoul(tmpBuff, NULL, 16);

                    GetDlgItemText(hDlg, IDC_ISOCH_ALLOC_RES_NUM_OF_BUFFERS, tmpBuff, STRING_SIZE);
                    pIsochAllocateResources->nNumberOfBuffers = strtoul(tmpBuff, NULL, 16);

                    GetDlgItemText(hDlg, IDC_ISOCH_ALLOC_RES_MAX_BUFFER_SIZE, tmpBuff, STRING_SIZE);
                    pIsochAllocateResources->nMaxBufferSize = strtoul(tmpBuff, NULL, 16);

                    GetDlgItemText(hDlg, IDC_ISOCH_ALLOC_RES_QUADLETS_TO_STRIP, tmpBuff, STRING_SIZE);
                    pIsochAllocateResources->nQuadletsToStrip = strtoul(tmpBuff, NULL, 16);

                    pIsochAllocateResources->fulSpeed = 0;
                    if (IsDlgButtonChecked(hDlg, IDC_ISOCH_ALLOC_RES_100MBPS))
                        pIsochAllocateResources->fulSpeed = SPEED_FLAGS_100;

                    if (IsDlgButtonChecked(hDlg, IDC_ISOCH_ALLOC_RES_200MBPS))
                        pIsochAllocateResources->fulSpeed = SPEED_FLAGS_200;

                    if (IsDlgButtonChecked(hDlg, IDC_ISOCH_ALLOC_RES_400MBPS))
                        pIsochAllocateResources->fulSpeed = SPEED_FLAGS_400;

                    if (IsDlgButtonChecked(hDlg, IDC_ISOCH_ALLOC_RES_1600MBPS))
                        pIsochAllocateResources->fulSpeed = SPEED_FLAGS_1600;

                    if (IsDlgButtonChecked(hDlg, IDC_ISOCH_ALLOC_RES_FASTEST))
                        pIsochAllocateResources->fulSpeed = SPEED_FLAGS_FASTEST;

                    pIsochAllocateResources->fulFlags = 0;
                    if (IsDlgButtonChecked(hDlg, IDC_ISOCH_ALLOC_RES_USED_IN_LISTEN))
                        pIsochAllocateResources->fulFlags |= RESOURCE_USED_IN_LISTENING;

                    if (IsDlgButtonChecked(hDlg, IDC_ISOCH_ALLOC_RES_USED_IN_TALK))
                        pIsochAllocateResources->fulFlags |= RESOURCE_USED_IN_TALKING;

                    if (IsDlgButtonChecked(hDlg, IDC_ISOCH_ALLOC_RES_BUFFERS_CIRCULAR))
                        pIsochAllocateResources->fulFlags |= RESOURCE_BUFFERS_CIRCULAR;

                    if (IsDlgButtonChecked(hDlg, IDC_ISOCH_ALLOC_RES_STRIP_QUADLETS))
                        pIsochAllocateResources->fulFlags |= RESOURCE_STRIP_ADDITIONAL_QUADLETS;

//                    if (IsDlgButtonChecked(hDlg, IDC_ISOCH_ALLOC_RES_BUFFERS_CIRCULAR))
//                        pIsochAllocateResources->fulFlags |= RESOURCE_TIME_STAMP_ON_COMPLETION;

                    if (IsDlgButtonChecked(hDlg, IDC_ISOCH_ALLOC_RES_SYNC_ON_TIME))
                        pIsochAllocateResources->fulFlags |= RESOURCE_SYNCH_ON_TIME;

                    if (IsDlgButtonChecked(hDlg, IDC_ISOCH_ALLOC_RES_USE_PACKET_BASED))
                        pIsochAllocateResources->fulFlags |= RESOURCE_USE_PACKET_BASED;

                    EndDialog(hDlg, TRUE);
                    return(TRUE); // IDOK

⌨️ 快捷键说明

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