📄 win1394.c
字号:
SetTimer(hWnd, APP_TIMER_ID, 1000, NULL);
SelectedDevice = NULL;
RegisterClient(hWnd);
break; // WM_CREATE
case WM_DESTROY:
DeRegisterClient(hWnd);
PostQuitMessage(0);
break; // WM_DESTROY
case WM_SIZE:
MoveWindow(g_hWndEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
break; // WM_SIZE
case WM_TIMER:
// if async loopback test is running, print results
if (asyncLoopbackStarted && !asyncLoopbackParams.bKill) {
TRACE(TL_TRACE, (g_hWndEdit, "Async - Iterations = 0x%x\t\tPass = 0x%x\t\tFail = 0x%x\r\n", asyncLoopbackParams.ulIterations, asyncLoopbackParams.ulPass, asyncLoopbackParams.ulFail));
}
// if isoch loopback test is running, print results
if (isochLoopbackStarted && !isochLoopbackParams.bKill) {
TRACE(TL_TRACE, (g_hWndEdit, "Isoch - Iterations = 0x%x\t\tPass = 0x%x\t\tFail = 0x%x\r\n", isochLoopbackParams.ulIterations, isochLoopbackParams.ulPass, isochLoopbackParams.ulFail));
}
// if async stream loopback test is running, print results
if (streamLoopbackStarted && !streamLoopbackParams.bKill) {
TRACE(TL_TRACE, (g_hWndEdit, "Async Stream - Iterations = 0x%x\t\tPass = 0x%x\t\tFail = 0x%x\r\n", streamLoopbackParams.ulIterations, streamLoopbackParams.ulPass, streamLoopbackParams.ulFail));
}
break; // WM_TIMER
case WM_COMMAND:
switch(LOWORD(wParam)) {
case EDIT_ID:
switch (HIWORD(wParam)) {
// check fot text overflow in edit control
case EN_ERRSPACE:
case EN_MAXTEXT:
// just clear out the buffer
SetWindowText(g_hWndEdit, "\0");
break;
default:
break;
}
break;
case IDM_CLEAR_BUFFER:
SetWindowText(g_hWndEdit, "\0");
break; // IDM_CLEAR_BUFFER
case IDM_ABOUT:
DialogBox(g_hInstance, "IDD_ABOUTBOX", hWnd, w1394_AboutDlgProc);
break; // IDM_ABOUT
case IDM_EXIT:
SendMessage(hWnd, WM_DESTROY, 0, 0L);
break; // IDM_EXIT
case IDM_SELECT_TEST_DEVICE:
if (DeviceData.numDevices) {
w1394_SelectTestDevice(g_hWndEdit);
}
else {
TRACE(TL_TRACE, (g_hWndEdit, "No available test device.\r\n"));
}
break; // IDM_SELECT_TEST_DEVICE
case IDM_ADD_VIRTUAL_DRIVER:
w1394_AddVirtualDriver (g_hWndEdit);
break; // IDM_ADD_VIRTUAL_DRIVER
case IDM_REMOVE_VIRTUAL_DRIVER:
w1394_RemoveVirtualDriver (g_hWndEdit);
break; // IDM_ADD_VIRTUAL_DRIVER
case IDM_SELECT_VIRTUAL_TEST_DEVICE:
if (VirtDeviceData.numDevices) {
w1394_SelectVirtualTestDevice(g_hWndEdit);
}
else {
TRACE(TL_TRACE, (g_hWndEdit, "No available virtual test devices.\r\n"));
}
break; // IDM_SELECT_VIRT_TEST_DEVICE
case IDM_ENABLE_DIAGNOSTIC_MODE:
DiagnosticMode(g_hWndEdit, szBusName, TRUE, TRUE);
break; // IDM_ENABLE_DIAGNOSTIC_MODE
case IDM_DISABLE_DIAGNOSTIC_MODE:
DiagnosticMode(g_hWndEdit, szBusName, FALSE, TRUE);
break; // IDM_DISABLE_DIAGNOSTIC_MODE
case IDM_ALLOCATE_ADDRESS_RANGE:
w1394_AllocateAddressRange(g_hWndEdit, SelectedDevice);
break; // IDM_ALLOCATE_ADDRESS_RANGE
case IDM_FREE_ADDRESS_RANGE:
w1394_FreeAddressRange(g_hWndEdit, SelectedDevice);
break; // IDM_FREE_ADDRESS_RANGE
case IDM_ASYNC_READ:
w1394_AsyncRead(g_hWndEdit, SelectedDevice);
break; // IDM_ASYNC_READ
case IDM_ASYNC_WRITE:
w1394_AsyncWrite(g_hWndEdit, SelectedDevice);
break; // IDM_ASYNC_WRITE
case IDM_ASYNC_LOCK:
w1394_AsyncLock(g_hWndEdit, SelectedDevice);
break; // IDM_ASYNC_LOCK
case IDM_ASYNC_STREAM:
w1394_AsyncStream(g_hWndEdit, SelectedDevice);
break; // IDM_ASYNC_STREAM
case IDM_ASYNC_START_LOOPBACK:
w1394_AsyncStartLoopback(g_hWndEdit, SelectedDevice, &asyncLoopbackParams);
break; // IDM_ASYNC_LOOPBACK
case IDM_ASYNC_STOP_LOOPBACK:
w1394_AsyncStopLoopback(g_hWndEdit, &asyncLoopbackParams);
break; // IDM_ASYNC_LOOPBACK
case IDM_ASYNC_STREAM_START_LOOPBACK:
w1394_AsyncStreamStartLoopback(g_hWndEdit, SelectedDevice, &streamLoopbackParams);
break; // IDM_ASYNC_STREAM_START_LOOPBACK
case IDM_ASYNC_STREAM_STOP_LOOPBACK:
w1394_AsyncStreamStopLoopback(g_hWndEdit, &streamLoopbackParams);
break; // IDM_ASYNC_STREAM_STOP_LOOPBACK
case IDM_ISOCH_ALLOCATE_BANDWIDTH:
w1394_IsochAllocateBandwidth(g_hWndEdit, SelectedDevice);
break; // IDM_ISOCH_ALLOCATE_BANDWIDTH
case IDM_ISOCH_ALLOCATE_CHANNEL:
w1394_IsochAllocateChannel(g_hWndEdit, SelectedDevice);
break; // IDM_ISOCH_ALLOCATE_CHANNEL
case IDM_ISOCH_ALLOCATE_RESOURCES:
w1394_IsochAllocateResources(g_hWndEdit, SelectedDevice);
break; // IDM_ISOCH_ALLOCATE_RESOURCES
case IDM_ISOCH_ATTACH_BUFFERS:
w1394_IsochAttachBuffers(g_hWndEdit, SelectedDevice);
break; // IDM_ISOCH_ATTACH_BUFFERS
case IDM_ISOCH_DETACH_BUFFERS:
w1394_IsochDetachBuffers(g_hWndEdit, SelectedDevice);
break; // IDM_ISOCH_DETACH_BUFFERS
case IDM_ISOCH_FREE_BANDWIDTH:
w1394_IsochFreeBandwidth(g_hWndEdit, SelectedDevice);
break; // IDM_ISOCH_FREE_BANDWIDTH
case IDM_ISOCH_FREE_CHANNEL:
w1394_IsochFreeChannel(g_hWndEdit, SelectedDevice);
break; // IDM_ISOCH_FREE_CHANNEL
case IDM_ISOCH_FREE_RESOURCES:
w1394_IsochFreeResources(g_hWndEdit, SelectedDevice);
break; // IDM_ISOCH_FREE_RESOURCES
case IDM_ISOCH_LISTEN:
w1394_IsochListen(g_hWndEdit, SelectedDevice);
break; // IDM_ISOCH_LISTEN
case IDM_ISOCH_QUERY_CURRENT_CYCLE_TIME:
w1394_IsochQueryCurrentCycleTime(g_hWndEdit, SelectedDevice);
break; // IDM_ISOCH_QUERY_CURRENT_CYCLE_TIME
case IDM_ISOCH_QUERY_RESOURCES:
w1394_IsochQueryResources(g_hWndEdit, SelectedDevice);
break; // IDM_ISOCH_QUERY_RESOURCES
case IDM_ISOCH_SET_CHANNEL_BANDWIDTH:
w1394_IsochSetChannelBandwidth(g_hWndEdit, SelectedDevice);
break; // IDM_ISOCH_SET_CHANNEL_BANDWIDTH
case IDM_ISOCH_STOP:
w1394_IsochStop(g_hWndEdit, SelectedDevice);
break; // IDM_ISOCH_STOP
case IDM_ISOCH_TALK:
w1394_IsochTalk(g_hWndEdit, SelectedDevice);
break; // IDM_ISOCH_TALK
case IDM_ISOCH_START_LOOPBACK:
w1394_IsochStartLoopback(g_hWndEdit, SelectedDevice, &isochLoopbackParams);
break; // IDM_ISOCH_START_LOOPBACK
case IDM_ISOCH_STOP_LOOPBACK:
w1394_IsochStopLoopback(g_hWndEdit, &isochLoopbackParams);
break; // IDM_ISOCH_STOP_LOOPBACK
case IDM_BUS_RESET:
w1394_BusReset(g_hWndEdit, SelectedDevice);
break; // IDM_BUS_RESET
case IDM_GET_GENERATION_COUNT:
w1394_GetGenerationCount(g_hWndEdit, SelectedDevice);
break; // IDM_GET_GENERATION_COUNT
case IDM_GET_LOCAL_HOST_INFORMATION:
w1394_GetLocalHostInfo(g_hWndEdit, SelectedDevice);
break; // IDM_GET_LOCAL_HOST_INFORMATION
case IDM_GET_ADDRESS_FROM_DEVICE_OBJECT:
w1394_Get1394AddressFromDeviceObject(g_hWndEdit, SelectedDevice);
break; // IDM_GET_ADDRESS_FROM_DEVICE_OBJECT
case IDM_CONTROL:
w1394_Control(g_hWndEdit, SelectedDevice);
break; // IDM_CONTROL
case IDM_GET_MAX_SPEED_BETWEEN_DEVICES:
w1394_GetMaxSpeedBetweenDevices(g_hWndEdit, SelectedDevice);
break; // IDM_GET_MAX_SPEED_BETWEEN_DEVICES
case IDM_GET_CONFIGURATION_INFORMATION:
w1394_GetConfigurationInfo(g_hWndEdit, SelectedDevice);
break; // IDM_GET_CONFIGURATION_INFORMATION
case IDM_SET_DEVICE_XMIT_PROPERTIES:
w1394_SetDeviceXmitProperties(g_hWndEdit, SelectedDevice);
break; // IDM_SET_DEVICE_XMIT_PROPERTIES
case IDM_SEND_PHY_CONFIG_PACKET:
w1394_SendPhyConfigPacket(g_hWndEdit, SelectedDevice);
break; // IDM_SEND_PHY_CONFIG_PACKET
case IDM_BUS_RESET_NOTIFICATION:
w1394_BusResetNotification(g_hWndEdit, SelectedDevice);
break; // IDM_BUS_RESET_NOTIFICATION
case IDM_SET_LOCAL_HOST_PROPERTIES:
w1394_SetLocalHostInfo(g_hWndEdit, SelectedDevice);
break; // IDM_SET_LOCAL_HOST_PROPERTIES
default:
break; // default
}
break; // WM_COMMAND
case NOTIFY_DEVICE_CHANGE:
TRACE(TL_TRACE, (g_hWndEdit, "NOTIFY_DEVICE_CHANGE\r\n"));
GetDeviceList(&DeviceData);
GetVirtualDeviceList(&VirtDeviceData);
TRACE(TL_TRACE, (g_hWndEdit, "number Diagnostic Devices = 0x%x\r\n", DeviceData.numDevices));
TRACE(TL_TRACE, (g_hWndEdit, "number Virtual Devices = 0x%x\r\n", VirtDeviceData.numDevices));
for (i=0;i<DeviceData.numDevices;i++) {
TRACE(TL_TRACE, (g_hWndEdit, "DeviceName[0x%x] = %s\r\n", i, DeviceData.deviceList[i].DeviceName));
}
for (i=0;i<VirtDeviceData.numDevices;i++) {
TRACE(TL_TRACE, (g_hWndEdit, "DeviceName[0x%x] = %s\r\n", i, VirtDeviceData.deviceList[i].DeviceName));
}
if (!SelectedDevice && DeviceData.numDevices) {
SelectedDevice = DeviceData.deviceList[0].DeviceName;
TRACE(TL_TRACE, (g_hWndEdit, "Selected Device = %s\r\n", SelectedDevice));
}
if (!SelectedDevice && VirtDeviceData.numDevices) {
SelectedDevice = VirtDeviceData.deviceList[0].DeviceName;
TRACE(TL_TRACE, (g_hWndEdit, "Selected Device = %s\r\n", SelectedDevice));
}
break; // NOTIFY_DEVICE_CHANGE
case NOTIFY_BUS_RESET:
TRACE(TL_TRACE, (g_hWndEdit, "BUS RESET!!!\r\n"));
break; // NOTIFY_BUS_RESET
default:
break;
} // switch iMsg
return DefWindowProc(hWnd, iMsg, wParam, lParam);
} // w1394_AppWndProc
int WINAPI
WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
PSTR szCmdLine,
int iCmdShow
)
/*++
Routine Description:
Entry point for app. Registers class, creates window.
--*/
{
CHAR szAppClassName[] = "w1394_AppClass";
CHAR szTitleBar[] = "Win1394 Application";
MSG Msg;
WNDCLASSEX WndClassEx;
HWND hWnd;
g_hInstance = hInstance;
// main window app...
WndClassEx.cbSize = sizeof(WNDCLASSEX);
WndClassEx.style = CS_DBLCLKS | CS_BYTEALIGNWINDOW | CS_GLOBALCLASS;
WndClassEx.lpfnWndProc = w1394_AppWndProc;
WndClassEx.cbClsExtra = 0;
WndClassEx.cbWndExtra = 0;
WndClassEx.hInstance = g_hInstance;
WndClassEx.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APP_ICON));
WndClassEx.hIconSm = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APP_ICON));
WndClassEx.hCursor = NULL;
WndClassEx.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
WndClassEx.lpszMenuName = "AppMenu";
WndClassEx.lpszClassName = szAppClassName;
RegisterClassEx( &WndClassEx );
hWnd = CreateWindowEx( WS_EX_WINDOWEDGE | WS_EX_ACCEPTFILES,
szAppClassName,
szTitleBar,
WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
g_hInstance,
NULL
);
ShowWindow(hWnd, iCmdShow);
while (GetMessage(&Msg, NULL, 0, 0)) {
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return (int)(Msg.wParam);
} // WinMain
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -