/*++ Copyright (c) 1997 Microsoft Corporation Module Name: stistub.c Abstract: Routines which use RPC to pass arguments to/from server while enclosed in SEH frame Environment: User Mode -Win32 Author: Vlad Sadovsky (vlads) 26-Jan-1997 Revision History: 26-Jan-1997 VladS created --*/ /* #include "wia.h" #include #include #include #include #include #include "stipriv.h" #include "debug.h" */ #include "sticomm.h" #include #include #include DWORD WINAPI RpcStiApiGetVersion( IN LPCWSTR pszServer, IN DWORD dwReserved, OUT LPDWORD lpdwVersion ) { DWORD status; RpcTryExcept { status = R_StiApiGetVersion(NULL, dwReserved, lpdwVersion); } RpcExcept (1) { status = RpcExceptionCode(); } RpcEndExcept return status; } DWORD WINAPI RpcStiApiOpenDevice( IN LPCWSTR pszServer, IN LPCWSTR pdeviceName, IN DWORD dwMode, IN DWORD dwAccessRequired, IN DWORD dwProcessId, OUT HANDLE *pHandle ) { DWORD status; RpcTryExcept { status = R_StiApiOpenDevice(NULL, pdeviceName, dwMode, dwAccessRequired, dwProcessId, pHandle ); } RpcExcept (1) { status = RpcExceptionCode(); } RpcEndExcept return status; } DWORD WINAPI RpcStiApiCloseDevice( IN LPCWSTR pszServer, IN HANDLE hDevice ) { DWORD status; RpcTryExcept { status = R_StiApiCloseDevice(NULL,hDevice ); } RpcExcept (1) { status = RpcExceptionCode(); } RpcEndExcept return status; } DWORD WINAPI RpcStiApiSubscribe( IN STI_DEVICE_HANDLE hDevice, IN LPSTISUBSCRIBE lpSubScribe ) { DWORD status; LOCAL_SUBSCRIBE_CONTAINER sLocalContainer; ZeroMemory(&sLocalContainer,sizeof(LOCAL_SUBSCRIBE_CONTAINER)); RpcTryExcept { sLocalContainer.dwSize = sizeof(LOCAL_SUBSCRIBE_CONTAINER); sLocalContainer.dwFlags = lpSubScribe->dwFlags; if (lpSubScribe->dwFlags & STI_SUBSCRIBE_FLAG_WINDOW) { sLocalContainer.upLocalWindowHandle = (UINT_PTR)lpSubScribe->hWndNotify; sLocalContainer.uiNotificationMessage = lpSubScribe->uiNotificationMessage; } else { sLocalContainer.upLocalEventHandle = (UINT_PTR)lpSubScribe->hEvent; } status = R_StiApiSubscribe(hDevice,&sLocalContainer); } RpcExcept (1) { status = RpcExceptionCode(); } RpcEndExcept return status; } DWORD WINAPI RpcStiApiGetLastNotificationData( IN STI_DEVICE_HANDLE hDevice, OUT LPSTINOTIFY lpNotify ) { DWORD status; DWORD cbNeeded; RpcTryExcept { status = R_StiApiGetLastNotificationData(hDevice, (LPBYTE)lpNotify, lpNotify->dwSize, &cbNeeded ); } RpcExcept (1) { status = RpcExceptionCode(); } RpcEndExcept return status; } DWORD WINAPI RpcStiApiUnSubscribe( IN STI_DEVICE_HANDLE hDevice ) { DWORD status; RpcTryExcept { status = R_StiApiUnSubscribe(hDevice); } RpcExcept (1) { status = RpcExceptionCode(); } RpcEndExcept return status; } DWORD WINAPI RpcStiApiEnableHwNotifications( IN LPCWSTR pszServer, IN LPCWSTR pdeviceName, IN BOOL bNewState ) { DWORD status; RpcTryExcept { status = R_StiApiEnableHwNotifications(NULL, pdeviceName, bNewState ); } RpcExcept (1) { status = RpcExceptionCode(); } RpcEndExcept return status; } DWORD WINAPI RpcStiApiGetHwNotificationState( IN LPCWSTR pszServer, IN LPCWSTR pdeviceName, OUT LPDWORD pState ) { DWORD status; RpcTryExcept { status = R_StiApiGetHwNotificationState(NULL, pdeviceName, pState ); } RpcExcept (1) { status = RpcExceptionCode(); } RpcEndExcept return status; } DWORD WINAPI RpcStiApiLaunchApplication( IN LPCWSTR pszServer, IN LPCWSTR pdeviceName, IN LPCWSTR pAppName, IN LPSTINOTIFY pStiNotify ) { DWORD status; RpcTryExcept { status = R_StiApiLaunchApplication(NULL, pdeviceName, pAppName, pStiNotify ); } RpcExcept (1) { status = RpcExceptionCode(); } RpcEndExcept return status; } DWORD WINAPI RpcStiApiLockDevice( IN LPCWSTR pdeviceName, IN DWORD dwWait, IN BOOL bInServerProcess ) { DWORD status; RpcTryExcept { status = R_StiApiLockDevice(NULL, pdeviceName, dwWait, FALSE, GetCurrentThreadId()); } RpcExcept (1) { status = RpcExceptionCode(); } RpcEndExcept return status; } DWORD WINAPI RpcStiApiUnlockDevice( IN LPCWSTR pdeviceName, IN BOOL bInServerProcess ) { DWORD status; RpcTryExcept { status = R_StiApiUnlockDevice(NULL, pdeviceName, FALSE, GetCurrentThreadId()); } RpcExcept (1) { status = RpcExceptionCode(); } RpcEndExcept return status; }