?? 1394.c
字號:
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
1394.c
Abstract
1394 api wrappers
Author:
Peter Binder (pbinder) 5/13/98
Revision History:
Date Who What
-------- --------- ------------------------------------------------------------
05/13/98 pbinder birth
08/18/98 pbinder changed for new dialogs
--*/
#define _1394_C
#include "pch.h"
#undef _1394_C
INT_PTR CALLBACK
BusResetDlgProc(
HWND hDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
static PULONG pFlags;
static CHAR tmpBuff[STRING_SIZE];
switch (uMsg) {
case WM_INITDIALOG:
pFlags = (PULONG)lParam;
if (*pFlags == BUS_RESET_FLAGS_FORCE_ROOT)
CheckDlgButton( hDlg, IDC_BUS_RESET_FORCE_ROOT, BST_CHECKED);
return(TRUE); // WM_INITDIALOG
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK:
*pFlags = 0;
if (IsDlgButtonChecked(hDlg, IDC_BUS_RESET_FORCE_ROOT))
*pFlags = BUS_RESET_FLAGS_FORCE_ROOT;
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);
} // BusResetDlgProc
void
w1394_BusReset(
HWND hWnd,
PSTR szDeviceName
)
{
ULONG fulFlags;
DWORD dwRet;
TRACE(TL_TRACE, (hWnd, "Enter w1394_BusReset\r\n"));
fulFlags = 0;
if (DialogBoxParam( (HINSTANCE) GetWindowLongPtr(hWnd, GWLP_HINSTANCE),
"BusReset",
hWnd,
BusResetDlgProc,
(LPARAM)&fulFlags
)) {
dwRet = BusReset( hWnd,
szDeviceName,
fulFlags
);
}
TRACE(TL_TRACE, (hWnd, "Exit w1394_BusReset\r\n"));
return;
} // w1394_BusReset
void
w1394_GetGenerationCount(
HWND hWnd,
PSTR szDeviceName
)
{
ULONG generationCount;
DWORD dwRet;
TRACE(TL_TRACE, (hWnd, "Enter w1394_GetGenerationCount\r\n"));
dwRet = GetGenerationCount( hWnd,
szDeviceName,
&generationCount
);
TRACE(TL_TRACE, (hWnd, "Exit w1394_GetGenerationCount\r\n"));
return;
} // w1394_GetGenerationCount
INT_PTR CALLBACK
GetLocalHostInfoDlgProc(
HWND hDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
static PGET_LOCAL_HOST_INFORMATION pGetLocalHostInfo;
static CHAR tmpBuff[STRING_SIZE];
switch (uMsg) {
case WM_INITDIALOG:
pGetLocalHostInfo = (PGET_LOCAL_HOST_INFORMATION)lParam;
CheckRadioButton( hDlg,
IDC_GET_HOST_UNIQUE_ID,
IDC_GET_TOPOLOGY_MAP,
pGetLocalHostInfo->nLevel + (IDC_GET_HOST_UNIQUE_ID-1)
);
return(TRUE); // WM_INITDIALOG
case WM_COMMAND:
switch (LOWORD(wParam)) {
case IDOK:
if (IsDlgButtonChecked(hDlg, IDC_GET_HOST_UNIQUE_ID))
pGetLocalHostInfo->nLevel = GET_HOST_UNIQUE_ID;
if (IsDlgButtonChecked(hDlg, IDC_GET_HOST_HOST_CAPABILITIES))
pGetLocalHostInfo->nLevel = GET_HOST_CAPABILITIES;
if (IsDlgButtonChecked(hDlg, IDC_GET_HOST_POWER_SUPPLIED))
pGetLocalHostInfo->nLevel = GET_POWER_SUPPLIED;
if (IsDlgButtonChecked(hDlg, IDC_GET_HOST_PHYS_ADDR_ROUTINE))
pGetLocalHostInfo->nLevel = GET_PHYS_ADDR_ROUTINE;
if (IsDlgButtonChecked(hDlg, IDC_GET_HOST_CONFIG_ROM))
pGetLocalHostInfo->nLevel = GET_HOST_CONFIG_ROM;
// i'm going to piggyback on Status...
if (IsDlgButtonChecked(hDlg, IDC_GET_SPEED_MAP)) {
pGetLocalHostInfo->nLevel = GET_HOST_CSR_CONTENTS;
pGetLocalHostInfo->Status = SPEED_MAP_LOCATION;
}
if (IsDlgButtonChecked(hDlg, IDC_GET_TOPOLOGY_MAP)) {
pGetLocalHostInfo->nLevel = GET_HOST_CSR_CONTENTS;
pGetLocalHostInfo->Status = TOPOLOGY_MAP_LOCATION;
}
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);
} // GetLocalHostInfoDlgProc
void
w1394_GetLocalHostInfo(
HWND hWnd,
PSTR szDeviceName
)
{
GET_LOCAL_HOST_INFORMATION getLocalHostInfo;
DWORD dwRet;
TRACE(TL_TRACE, (hWnd, "Enter w1394_GetLocalHostInformation\r\n"));
getLocalHostInfo.nLevel = GET_HOST_UNIQUE_ID;
getLocalHostInfo.ulBufferSize = 0;
if (DialogBoxParam( (HINSTANCE) GetWindowLongPtr(hWnd, GWLP_HINSTANCE),
"GetLocalHostInfo",
hWnd,
GetLocalHostInfoDlgProc,
(LPARAM)&getLocalHostInfo
)) {
if (getLocalHostInfo.nLevel == 6) {
PGET_LOCAL_HOST_INFORMATION GetLocalHostInfo;
PGET_LOCAL_HOST_INFO6 LocalHostInfo6;
ULONG ulBufferSize;
ULONG CsrDataLength;
ULONG CsrDataAddress;
// let's get the CsrDataAddress from Status. (from the dialog)
CsrDataAddress = getLocalHostInfo.Status;
// first thing is to get the buffer size we need...
ulBufferSize = sizeof(GET_LOCAL_HOST_INFORMATION) + sizeof(GET_LOCAL_HOST_INFO6);
GetLocalHostInfo = (PGET_LOCAL_HOST_INFORMATION)LocalAlloc(LPTR, ulBufferSize);
LocalHostInfo6 = (PGET_LOCAL_HOST_INFO6)&GetLocalHostInfo->Information;
GetLocalHostInfo->nLevel = 6;
GetLocalHostInfo->ulBufferSize = ulBufferSize;
LocalHostInfo6->CsrBaseAddress.Off_High = INITIAL_REGISTER_SPACE_HI;
LocalHostInfo6->CsrBaseAddress.Off_Low = CsrDataAddress;
dwRet = GetLocalHostInformation( hWnd,
szDeviceName,
GetLocalHostInfo,
FALSE
);
if (dwRet == ERROR_INSUFFICIENT_BUFFER) {
// we should have our buffer info.
TRACE(TL_TRACE, (hWnd, "Insufficient Buffer\r\n"));
TRACE(TL_TRACE, (hWnd, "CsrDataLength = 0x%x\r\n", LocalHostInfo6->CsrDataLength));
CsrDataLength = LocalHostInfo6->CsrDataLength;
LocalFree(GetLocalHostInfo);
// start over with a big enough buffer
ulBufferSize = sizeof(GET_LOCAL_HOST_INFORMATION) + sizeof(GET_LOCAL_HOST_INFO6) + CsrDataLength;
GetLocalHostInfo = (PGET_LOCAL_HOST_INFORMATION)LocalAlloc(LPTR, ulBufferSize);
LocalHostInfo6 = (PGET_LOCAL_HOST_INFO6)&GetLocalHostInfo->Information;
GetLocalHostInfo->nLevel = 6;
GetLocalHostInfo->ulBufferSize = ulBufferSize;
LocalHostInfo6->CsrBaseAddress.Off_High = INITIAL_REGISTER_SPACE_HI;
LocalHostInfo6->CsrBaseAddress.Off_Low = CsrDataAddress;
LocalHostInfo6->CsrDataLength = CsrDataLength;
dwRet = GetLocalHostInformation( hWnd,
szDeviceName,
GetLocalHostInfo,
FALSE
);
if (LocalHostInfo6->CsrBaseAddress.Off_Low == SPEED_MAP_LOCATION) {
PSPEED_MAP SpeedMap;
PGET_LOCAL_HOST_INFORMATION pGetTopologyMap;
PGET_LOCAL_HOST_INFO6 pTopologyInfo;
PTOPOLOGY_MAP TopologyMap;
ULONG NodeCount, i, j;
SpeedMap = (PSPEED_MAP)&LocalHostInfo6->CsrDataBuffer;
// get the node count from the topology map
pGetTopologyMap = LocalAlloc(LPTR, sizeof(GET_LOCAL_HOST_INFO6) + 4096);
pGetTopologyMap->ulBufferSize = sizeof(GET_LOCAL_HOST_INFO6) + 4096;
pGetTopologyMap->nLevel = 6;
pTopologyInfo = (PGET_LOCAL_HOST_INFO6)&pGetTopologyMap->Information;
pTopologyInfo->CsrDataLength = 4096; //0x400;
pTopologyInfo->CsrBaseAddress.Off_High = INITIAL_REGISTER_SPACE_HI;
pTopologyInfo->CsrBaseAddress.Off_Low = TOPOLOGY_MAP_LOCATION;
dwRet = GetLocalHostInformation( NULL,
szDeviceName,
pGetTopologyMap,
FALSE
);
TopologyMap = (PTOPOLOGY_MAP)&pTopologyInfo->CsrDataBuffer;
NodeCount = TopologyMap->TOP_Node_Count;
LocalFree(TopologyMap);
if (!dwRet) {
TRACE(TL_TRACE, (hWnd, "SpeedCodes = \t"));
for (i=0; i < NodeCount; i++) {
for (j=0; j < NodeCount; j++) {
TRACE(TL_TRACE, (hWnd, "%d\t", SpeedMap->SPD_Speed_Code[i*64+j]));
}
TRACE(TL_TRACE, (hWnd, "\r\n\t\t"));
}
}
else {
TRACE(TL_ERROR, (hWnd, "Error getting NodeCount\r\n"));
}
TRACE(TL_TRACE, (hWnd, "\r\n"));
}
LocalFree(GetLocalHostInfo);
}
else
LocalFree(GetLocalHostInfo);
}
else {
dwRet = GetLocalHostInformation( hWnd,
szDeviceName,
&getLocalHostInfo,
TRUE
);
}
}
TRACE(TL_TRACE, (hWnd, "Exit w1394_GetLocalHostInformation\r\n"));
return;
} // w1394_GetLocalHostInfo
INT_PTR CALLBACK
Get1394AddressFromDeviceObjectDlgProc(
HWND hDlg,
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -