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

📄 1394.c

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

                    GetDlgItemText(hDlg, IDC_SEND_PHY_GAP_COUNT, tmpBuff, STRING_SIZE);
                    pPhyConfigPacket->PCP_Gap_Count = strtoul(tmpBuff, NULL, 16);

                    GetDlgItemText(hDlg, IDC_SEND_PHY_SET_GAP_COUNT, tmpBuff, STRING_SIZE);
                    pPhyConfigPacket->PCP_Set_Gap_Count = strtoul(tmpBuff, NULL, 16);

                    GetDlgItemText(hDlg, IDC_SEND_PHY_FORCE_ROOT, tmpBuff, STRING_SIZE);
                    pPhyConfigPacket->PCP_Force_Root = strtoul(tmpBuff, NULL, 16);

                    GetDlgItemText(hDlg, IDC_SEND_PHY_RESERVED1, tmpBuff, STRING_SIZE);
                    pPhyConfigPacket->PCP_Reserved1 = strtoul(tmpBuff, NULL, 16);

                    GetDlgItemText(hDlg, IDC_SEND_PHY_RESERVED2, tmpBuff, STRING_SIZE);
                    pPhyConfigPacket->PCP_Reserved2 = strtoul(tmpBuff, NULL, 16);

                    GetDlgItemText(hDlg, IDC_SEND_PHY_INVERSE, tmpBuff, STRING_SIZE);
                    pPhyConfigPacket->PCP_Inverse = 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);
} // SendPhyConfigDlgProc

void
w1394_SendPhyConfigPacket(
    HWND    hWnd,
    PSTR    szDeviceName
    )
{
    PHY_CONFIGURATION_PACKET    phyConfigPacket;
    DWORD                       dwRet;

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

    phyConfigPacket.PCP_Phys_ID = 0;
    phyConfigPacket.PCP_Packet_ID = 0;
    phyConfigPacket.PCP_Gap_Count = 0;
    phyConfigPacket.PCP_Set_Gap_Count = 0;
    phyConfigPacket.PCP_Force_Root = 0;
    phyConfigPacket.PCP_Reserved1 = 0;
    phyConfigPacket.PCP_Reserved2 = 0;
    phyConfigPacket.PCP_Inverse = 0;

    if (DialogBoxParam( (HINSTANCE) GetWindowLongPtr(hWnd, GWLP_HINSTANCE),
                        "SendPhyConfigPacket",
                        hWnd,
                        SendPhyConfigDlgProc,
                        (LPARAM)&phyConfigPacket
                        )) {

        dwRet = SendPhyConfigurationPacket( hWnd,
                                            szDeviceName,
                                            &phyConfigPacket
                                            );
    }

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

INT_PTR CALLBACK
BusResetNotificationDlgProc(
    HWND        hDlg,
    UINT        uMsg,
    WPARAM      wParam,
    LPARAM      lParam
    )
{
    static PULONG   pFlags;
    static CHAR     tmpBuff[STRING_SIZE];

    switch (uMsg) {

        case WM_INITDIALOG:

            pFlags = (PULONG)lParam;

            CheckRadioButton( hDlg,
                              IDC_BUS_RESET_NOTIFY_REGISTER,
                              IDC_BUS_RESET_NOTIFY_DEREGISTER,
                              *pFlags + (IDC_BUS_RESET_NOTIFY_REGISTER-1)
                              );

            return(TRUE); // WM_INITDIALOG

        case WM_COMMAND:

            switch (LOWORD(wParam)) {

                case IDOK:

                    if (IsDlgButtonChecked(hDlg, IDC_BUS_RESET_NOTIFY_REGISTER))
                        *pFlags = REGISTER_NOTIFICATION_ROUTINE;

                    if (IsDlgButtonChecked(hDlg, IDC_BUS_RESET_NOTIFY_DEREGISTER))
                        *pFlags = DEREGISTER_NOTIFICATION_ROUTINE;

                    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);
} // BusResetNotificationDlgProc

void
w1394_BusResetNotification(
    HWND    hWnd,
    PSTR    szDeviceName
    )
{
    ULONG   fulFlags;
    DWORD   dwRet;

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

    fulFlags = REGISTER_NOTIFICATION_ROUTINE;

    if (DialogBoxParam( (HINSTANCE) GetWindowLongPtr(hWnd, GWLP_HINSTANCE),
                        "BusResetNotification",
                        hWnd,
                        BusResetNotificationDlgProc,
                        (LPARAM)&fulFlags
                        )) {

        dwRet = BusResetNotification( hWnd,
                                      szDeviceName,
                                      fulFlags
                                      );
    }

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

INT_PTR CALLBACK
SetLocalHostInfoDlgProc(
    HWND        hDlg,
    UINT        uMsg,
    WPARAM      wParam,
    LPARAM      lParam
    )
{
    static PSET_LOCAL_HOST_INFORMATION      pSetLocalHostInfo;
    static PSET_LOCAL_HOST_PROPS2           pSetLocalHostProps2;
    static PSET_LOCAL_HOST_PROPS3           pSetLocalHostProps3;
    static CHAR                             tmpBuff[STRING_SIZE];

    switch (uMsg) {

        case WM_INITDIALOG:

            pSetLocalHostInfo = (PSET_LOCAL_HOST_INFORMATION)lParam;

            CheckRadioButton( hDlg,
                              IDC_SET_LOCAL_HOST_LEVEL_GAP_COUNT,
                              IDC_SET_LOCAL_HOST_LEVEL_CROM,
                              pSetLocalHostInfo->nLevel + (IDC_SET_LOCAL_HOST_LEVEL_GAP_COUNT-2)
                              );

            CheckRadioButton( hDlg,
                              IDC_SET_LOCAL_HOST_CROM_ADD,
                              IDC_SET_LOCAL_HOST_CROM_REMOVE,
                              IDC_SET_LOCAL_HOST_CROM_ADD
                              );

            if (pSetLocalHostInfo->nLevel == SET_LOCAL_HOST_PROPERTIES_GAP_COUNT) {

                pSetLocalHostProps2 = (PSET_LOCAL_HOST_PROPS2)pSetLocalHostInfo->Information;

                _ultoa(pSetLocalHostProps2->GapCountLowerBound, tmpBuff, 16);
                SetDlgItemText(hDlg, IDC_SET_LOCAL_HOST_GAP_COUNT, tmpBuff);
            }

            if (pSetLocalHostInfo->nLevel == SET_LOCAL_HOST_PROPERTIES_MODIFY_CROM) {

                pSetLocalHostProps3 = (PSET_LOCAL_HOST_PROPS3)pSetLocalHostInfo->Information;

                CheckRadioButton( hDlg,
                                  IDC_SET_LOCAL_HOST_CROM_ADD,
                                  IDC_SET_LOCAL_HOST_CROM_REMOVE,
                                  pSetLocalHostProps3->fulFlags + (IDC_SET_LOCAL_HOST_CROM_ADD-1)
                                  );

                //_ultoa((ULONG)((ULONG_PTR)pSetLocalHostProps3->hCromData), tmpBuff, 16);
                sprintf (tmpBuff, "%p", pSetLocalHostProps3->hCromData);
                SetDlgItemText(hDlg, IDC_SET_LOCAL_HOST_CROM_HCROMDATA, tmpBuff);

                _ultoa(pSetLocalHostProps3->nLength, tmpBuff, 16);
                SetDlgItemText(hDlg, IDC_SET_LOCAL_HOST_CROM_NLENGTH, tmpBuff);
            }

            return(TRUE); // WM_INITDIALOG

        case WM_COMMAND:

            switch (LOWORD(wParam)) {

                case IDOK:

                    if (IsDlgButtonChecked(hDlg, IDC_SET_LOCAL_HOST_LEVEL_GAP_COUNT)) {

                        pSetLocalHostInfo->nLevel = SET_LOCAL_HOST_PROPERTIES_GAP_COUNT;

                        GetDlgItemText(hDlg, IDC_SET_LOCAL_HOST_GAP_COUNT, tmpBuff, STRING_SIZE);
                        pSetLocalHostProps2->GapCountLowerBound = strtoul(tmpBuff, NULL, 16);

                    }

                    if (IsDlgButtonChecked(hDlg, IDC_SET_LOCAL_HOST_LEVEL_CROM)) {

                        pSetLocalHostInfo->nLevel = SET_LOCAL_HOST_PROPERTIES_MODIFY_CROM;

                        if (IsDlgButtonChecked(hDlg, IDC_SET_LOCAL_HOST_CROM_ADD))
                            pSetLocalHostProps3->fulFlags = SLHP_FLAG_ADD_CROM_DATA;

                        if (IsDlgButtonChecked(hDlg, IDC_SET_LOCAL_HOST_CROM_REMOVE))
                            pSetLocalHostProps3->fulFlags = SLHP_FLAG_REMOVE_CROM_DATA;

                        GetDlgItemText(hDlg, IDC_SET_LOCAL_HOST_CROM_HCROMDATA, tmpBuff, STRING_SIZE);
                        if (!sscanf (tmpBuff, "%p", &(pSetLocalHostProps3->hCromData)))
                        {
                            // failed to get the handle, just return here
                            EndDialog(hDlg, TRUE);
                            return FALSE;
                        }

                        GetDlgItemText(hDlg, IDC_SET_LOCAL_HOST_CROM_NLENGTH, tmpBuff, STRING_SIZE);
                        pSetLocalHostProps3->nLength = strtoul(tmpBuff, NULL, 16);

                        // let's set the correct buffer size...
                        pSetLocalHostInfo->ulBufferSize = sizeof(SET_LOCAL_HOST_INFORMATION)+sizeof(SET_LOCAL_HOST_PROPS3)+pSetLocalHostProps3->nLength;
                    }

                    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);
} // SetLocalHostInfoDlgProc

void
w1394_SetLocalHostInfo(
    HWND    hWnd,
    PSTR    szDeviceName
    )
{
    PSET_LOCAL_HOST_INFORMATION     SetLocalHostInfo;
    PSET_LOCAL_HOST_PROPS2          SetLocalHostProps2;
    PSET_LOCAL_HOST_PROPS3          SetLocalHostProps3;
    DWORD                           dwRet;
    ULONG                           ulBufferSize;
    PULONG                          UnitDir;

    TRACE(TL_TRACE, (hWnd, "Enter w1394_SetLocalHostInfo\r\n"));
/*
    ulBufferSize = sizeof(SET_LOCAL_HOST_INFORMATION)+sizeof(SET_LOCAL_HOST_PROPS2);

    SetLocalHostInfo = (PSET_LOCAL_HOST_INFORMATION)LocalAlloc(LPTR, ulBufferSize);

    SetLocalHostInfo->nLevel = SET_LOCAL_HOST_PROPERTIES_GAP_COUNT;
    SetLocalHostInfo->ulBufferSize = ulBufferSize;

    SetLocalHostProps2 = (PSET_LOCAL_HOST_PROPS2)SetLocalHostInfo->Information;

    SetLocalHostProps2->GapCountLowerBound = 0;
*/
    ulBufferSize = sizeof(SET_LOCAL_HOST_INFORMATION)+sizeof(SET_LOCAL_HOST_PROPS3)+8;//4096;

    SetLocalHostInfo = (PSET_LOCAL_HOST_INFORMATION)LocalAlloc(LPTR, ulBufferSize);
    if (!SetLocalHostInfo) {

        dwRet = GetLastError();
        TRACE(TL_ERROR, (hWnd, "Unable to allocate SetLocalHostInfo!\r\n"));
        goto Exit_SetLocalHostInfo;
    }

    SetLocalHostInfo->nLevel = SET_LOCAL_HOST_PROPERTIES_MODIFY_CROM;
    SetLocalHostInfo->ulBufferSize = ulBufferSize;

    SetLocalHostProps3 = (PSET_LOCAL_HOST_PROPS3)SetLocalHostInfo->Information;

    SetLocalHostProps3->fulFlags = SLHP_FLAG_ADD_CROM_DATA;
    SetLocalHostProps3->hCromData = 0;
    SetLocalHostProps3->nLength = 12;

    UnitDir = (PULONG)&SetLocalHostProps3->Buffer;

    *UnitDir = 0xEFBE0200;
    UnitDir++;
    *UnitDir = 0x0A000012;
    UnitDir++;
    *UnitDir = 0x0B000013;

    if (DialogBoxParam( (HINSTANCE) GetWindowLongPtr(hWnd, GWLP_HINSTANCE),
                        "SetLocalHostInfo",
                        hWnd,
                        SetLocalHostInfoDlgProc,
                        (LPARAM)SetLocalHostInfo
                        )) {

        dwRet = SetLocalHostInformation( hWnd,
                                         szDeviceName,
                                         SetLocalHostInfo
                                         );
    }

Exit_SetLocalHostInfo:

    if (SetLocalHostInfo)
        LocalFree(SetLocalHostInfo);

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


⌨️ 快捷键说明

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