예제 #1
0
 LONG QueryKey(LPCWSTR lpSubKey, LPWSTR lpData, PLONG lpSize)
   const
 {
   if (!IsValidHandle())
     return ERROR_INVALID_HANDLE;
   return RegQueryValueW(hKey(), lpSubKey, lpData, lpSize);
 }
예제 #2
0
 LONG SetKey(LPCWSTR lpSubKey, LPCWSTR lpData, DWORD dwSize)
   const
 {
   if (!IsValidHandle())
     return ERROR_INVALID_HANDLE;
   return RegSetValueW(hKey(), lpSubKey, REG_SZ, lpData, dwSize);
 }
예제 #3
0
ST_ErrorCode_t STEXTVIN_SelectVipOutput(
    const STEXTVIN_Handle_t Handle,
    const STEXTVIN_VipOutputSelection_t Selection
)
{
    ST_ErrorCode_t  ErrorCode = ST_NO_ERROR;

    stextvin_Unit_t *Unit_p;

    if (!IsValidHandle(Handle))
    {
        return(ST_ERROR_INVALID_HANDLE);
    }
    else
    {
        Unit_p = (stextvin_Unit_t *) Handle;

        switch (Unit_p->Device_p->DeviceType)
        {
            case STEXTVIN_SAA7114 :
            ErrorCode = EXTVIN_SelectVipOutput(I2cHandle_SAA7114,Selection);
                break;

            default :
            ErrorCode = STEXTVIN_ERROR_FUNCTION_NOT_IMPLEMENTED;
                break;
        }
    }
    return(ErrorCode);
}
예제 #4
0
ST_ErrorCode_t STEXTVIN_GetVipStatus(STEXTVIN_Handle_t Handle,U8* Status_p)
{
    ST_ErrorCode_t  ErrorCode = ST_NO_ERROR;

    stextvin_Unit_t *Unit_p;

    if (!IsValidHandle(Handle))
    {
        return(ST_ERROR_INVALID_HANDLE);
    }
    else
    {
        Unit_p = (stextvin_Unit_t *) Handle;

        switch (Unit_p->Device_p->DeviceType)
        {
            case STEXTVIN_SAA7114 :
            ErrorCode = EXTVIN_GetSAA7114Status(I2cHandle_SAA7114,Status_p);
                break;
            case STEXTVIN_DB331 :
            ErrorCode = EXTVIN_GetSAA7111Status(I2cHandle_SAA7111,Status_p);
                break;
            case STEXTVIN_STV2310 :
            ErrorCode = EXTVIN_GetSTV2310Status(I2cHandle_STV2310,Status_p);
                break;

            default :
            ErrorCode = STEXTVIN_ERROR_INVALID_INPUT_TYPE;
                break;
        }
    }
    return(ErrorCode);
}
예제 #5
0
/*******************************************************************************
Name        : STEXTVIN_WriteI2C
Description : Write I2C register.
Parameters  :  I2C Handle, Adress and Value
Assumptions :
Limitations :
Returns     : ST_ErrorCode_t
*******************************************************************************/
ST_ErrorCode_t STEXTVIN_WriteI2C(const STEXTVIN_Handle_t Handle, const U8 Adress, const U8 Value)
{
    ST_ErrorCode_t  ErrorCode = ST_NO_ERROR;

    stextvin_Unit_t *Unit_p;

    if (!IsValidHandle(Handle))
    {
        return(ST_ERROR_INVALID_HANDLE);
    }
    else
    {
        Unit_p = (stextvin_Unit_t *) Handle;

        switch (Unit_p->Device_p->DeviceType)
        {
            case STEXTVIN_SAA7114 :
                ErrorCode = EXTVIN_WriteI2C(I2cHandle_SAA7114, Adress, Value);
                break;

            case STEXTVIN_TDA8752 :
                ErrorCode = EXTVIN_WriteI2C(I2cHandle_TDA8752, Adress, Value);
                break;

            case STEXTVIN_STV2310 :
                ErrorCode = EXTVIN_WriteI2C(I2cHandle_STV2310, Adress, Value);
                break;

            default :
            ErrorCode = STEXTVIN_ERROR_FUNCTION_NOT_IMPLEMENTED;
                break;
        }
    }
    return(ErrorCode);
}
예제 #6
0
파일: dllentry.c 프로젝트: cjapes/core
static DWORD GetParentProcessId()
{
    DWORD   dwParentProcessId = 0;
    HANDLE  hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 );

    if ( IsValidHandle( hSnapshot ) )
    {
        PROCESSENTRY32  pe;
        BOOL            fSuccess;

        ZeroMemory( &pe, sizeof(pe) );
        pe.dwSize = sizeof(pe);
        fSuccess = Process32First( hSnapshot, &pe );

        while( fSuccess )
        {
            if ( GetCurrentProcessId() == pe.th32ProcessID )
            {
                dwParentProcessId = pe.th32ParentProcessID;
                break;
            }

            fSuccess = Process32Next( hSnapshot, &pe );
        }

        CloseHandle( hSnapshot );
    }

    return dwParentProcessId;
}
예제 #7
0
ST_ErrorCode_t STEXTVIN_SetAdcInputFormat(
    const STEXTVIN_Handle_t Handle,
    const STEXTVIN_AdcInputFormat_t Format
)
{
    ST_ErrorCode_t  ErrorCode = ST_NO_ERROR;

    stextvin_Unit_t *Unit_p;

    if (!IsValidHandle(Handle))
    {
        return(ST_ERROR_INVALID_HANDLE);
    }
    else
    {
        Unit_p = (stextvin_Unit_t *) Handle;

        switch (Unit_p->Device_p->DeviceType)
        {
            case STEXTVIN_TDA8752 :
            ErrorCode = EXTVIN_SetAdcInputFormat(I2cHandle_TDA8752,Format);
                break;

            default :
            ErrorCode = STEXTVIN_ERROR_INVALID_STANDARD_TYPE;
                break;
        }
    }
    return(ErrorCode);
 }
예제 #8
0
BOOL
CNdasEventSubscriber::
RemoveCallback(HNDASEVENTCALLBACK hCallback)
{
	if (!IsValidHandle(hCallback)) {
		::SetLastError(NDASUSER_ERROR_INVALID_EVENT_CALLBACK_HANDLE);
		return FALSE;
	}

	::EnterCriticalSection(&m_cs);

	size_t i = (size_t)hCallback - (size_t)HNDASEVTCB_BASE;
	m_CallbackData[i].EventProc = NULL;
	m_CallbackData[i].lpContext = NULL;

	--m_cRef;
	::LeaveCriticalSection(&m_cs);

	if (0 == m_cRef) {
		::SetEvent(m_hThreadStopEvent);
		::WaitForSingleObject(m_hThread, 10*1000);
		::CloseHandle(m_hThread);
		m_hThread = INVALID_HANDLE_VALUE;
	}

	return TRUE;
}
예제 #9
0
/*****************************************************************************
 * CKsFilter::Instantiate()
 *****************************************************************************
 *//*!
 * @brief
 * Instantiates the filter.
 */
HRESULT 
CKsFilter::
Instantiate
(	void
)
{
    HRESULT hr = S_OK;

    m_Handle = CreateFile
				(
					m_SymbolicLink,
					GENERIC_READ | GENERIC_WRITE,
					0,
					NULL,
					OPEN_EXISTING,
					FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
					NULL
				);

    if (!IsValidHandle(m_Handle))
    {
        hr = E_FAIL;
    }
    
    if (FAILED(hr))
    {
        DWORD w32Error = GetLastError();

        _DbgPrintF(DEBUGLVL_ERROR,("[CKsFilter::Instantiate] - CreateFile failed for device %s.  ErrorCode = 0x%08x", m_SymbolicLink, w32Error));
    }
    
    return hr;
}
예제 #10
0
 LONG DeleteValue(LPCWSTR lpValueName)
   const
 {
   if (!IsValidHandle())
     return ERROR_INVALID_HANDLE;
   return RegDeleteValueW(hKey(), lpValueName);
 }
예제 #11
0
  LONG SetValue(LPCWSTR lpValueName = NULL, const LPVOID lpData = NULL,
		DWORD dwSize = 0, DWORD dwType = REG_BINARY)
    const
  {
    if (!IsValidHandle())
      return ERROR_INVALID_HANDLE;
    return RegSetValueExW(hKey(), lpValueName, NULL, dwType,
			  (CONST LPBYTE)lpData, dwSize);
  }
예제 #12
0
  LONG QueryValue(LPCWSTR lpValueName = NULL, LPVOID lpData = NULL,
		  LPDWORD lpSize = 0, LPDWORD lpType = NULL)
    const
  {
    if (!IsValidHandle())
      return ERROR_INVALID_HANDLE;
    return RegQueryValueExW(hKey(), lpValueName, NULL, lpType, (LPBYTE)lpData,
			    lpSize);
  }
예제 #13
0
  bool ReCreate(LPWSAPROTOCOL_INFO lpProtocolInfo = NULL,
		GROUP g = 0,
		DWORD dwFlags = 0)
  {
    Close();
    hObject = (HANDLE)WSASocket(AF_INET, SOCK_DGRAM, IPPROTO_UDP,
			lpProtocolInfo, g, dwFlags);
    return IsValidHandle();
  }
예제 #14
0
	void * BSScriptObject::Resolve(UInt32 typeID) const
	{
		void *result = nullptr;
		
		VMHandle handle = GetHandle();
		auto policy = ms_handlePolicy;
		if (policy->IsType(typeID, handle) && policy->IsValidHandle(handle))
			result = policy->Resolve(typeID, handle);

		return result;
	}
예제 #15
0
	Mutex::Mutex(LPCWSTR lpName, BOOL bInheritanceHandle, DWORD dwDesiredAccess)
	{
		m_hHandle = ::OpenMutex(dwDesiredAccess, bInheritanceHandle, lpName);
		if (IsValidHandle(m_hHandle))
		{
			m_dwStatus = NO_ERROR;
		}
		else
		{
			m_dwStatus = GetLastError();
		}
	}
예제 #16
0
파일: pin.cpp 프로젝트: borgestrand/winuac2
/*****************************************************************************
 * CKsPin::ClosePin()
 *****************************************************************************
 *//*!
 * @brief
 *  Closes the pin.
 */
VOID
CKsPin::
ClosePin
(	void
)
{
    if (IsValidHandle(m_Handle))
    {
        SetState(KSSTATE_STOP);

        SafeCloseHandle(m_Handle);
    }
}
예제 #17
0
파일: dllentry.c 프로젝트: cjapes/core
static DWORD WINAPI ParentMonitorThreadProc( LPVOID lpParam )
{
    DWORD_PTR dwParentProcessId = (DWORD_PTR)lpParam;

    HANDLE  hParentProcess = OpenProcess( SYNCHRONIZE, FALSE, dwParentProcessId );
    if ( IsValidHandle( hParentProcess ) )
    {
        if ( WAIT_OBJECT_0 == WaitForSingleObject( hParentProcess, INFINITE ) )
        {
            TerminateProcess( GetCurrentProcess(), 0 );
        }
        CloseHandle( hParentProcess );
    }
    return 0;
}
예제 #18
0
  bool Close()
  {
    if (!IsValidHandle())
      return true;

    if (shutdown(Socket(), 0x01) == 0)
      {
	shutdown(Socket(), 0x00);
	closesocket(Socket());
	hObject = INVALID_HANDLE_VALUE;
	return true;
      }
    else
      return WKernelObject::Close();
  }
예제 #19
0
BOOL CKsIrpTarget::SafeCloseHandle(HANDLE &handle)
{
    TRACE_ENTER();
    BOOL bRet;
    bRet = TRUE;

    if (IsValidHandle(handle))
    {
        bRet = CloseHandle(handle);
        handle = INVALID_HANDLE_VALUE;
    }

    TRACE_LEAVE();
    return bRet;
}
예제 #20
0
int CTwain::LoadSourceManager(void)
{
	USES_CONVERSION;
	
	OFSTRUCT	of;

	if (nState >= SOURCE_MANAGER_LOADED) {
		return TRUE;			// SM already loaded
	}

	TCHAR szSM[MAX_PATH];
	GetWindowsDirectory(szSM, MAX_PATH);

	if (szSM[_tcsclen(szSM)-1] != '\\') 
	{
		_tcscat_s(szSM, MAX_PATH, _T("\\"));
	}

	_tcscat_s(szSM, MAX_PATH, _T(DSM_FILENAME));			// could crash!

	if (OpenFile(CT2CA(szSM), &of, OF_EXIST) != -1) 
	{
		hSMLib = LoadLibrary(szSM);
	} 
	else 
	{
		if (bTrace) ATLTRACE(_T("TWAIN:LoadLibrary(%s) failed\n"), szSM);
		hSMLib = NULL;
	}

	if (IsValidHandle(hSMLib)) {
		pSM_Entry = (DSMENTRYPROC) GetProcAddress(hSMLib, DSM_ENTRYPOINT);
		if (pSM_Entry) {
			iAvailable = 1;
			SetState(SOURCE_MANAGER_LOADED);
		} else {
			if (bTrace) ATLTRACE(_T("TWAIN:GetProcAddress() failed!!\n"));
			FreeLibrary(hSMLib);
			hSMLib = NULL;
		}
	} else {
		pSM_Entry = NULL;
	}

	if (nState != SOURCE_MANAGER_LOADED && bTrace) ATLTRACE(_T("TWAIN:LoadSourceManager() failed.\n"));
	return (nState >= SOURCE_MANAGER_LOADED);
} // LoadSourceManager
예제 #21
0
  /// Closes the embedded handle if it is valid.
  bool Close()
  {
    if (!IsValidHandle())
      return false;
    
    LONG lRegError = RegCloseKey(hKey());
    if (lRegError == ERROR_SUCCESS)
      {
	hObject = INVALID_HANDLE_VALUE;
	return true;
      }
    else
      {
	SetLastError(lRegError);
	return false;
      }
  }
예제 #22
0
/*****************************************************************************
 * CKsIrpTarget::SafeCloseHandle()
 *****************************************************************************
 *//*!
 * @brief
 * Safely closes a file handle.
 */
BOOL 
CKsIrpTarget::
SafeCloseHandle
(
	IN OUT	HANDLE&	Handle
)
{
    BOOL Success = TRUE;

    if (IsValidHandle(Handle))
    {
        Success = CloseHandle(Handle);

        Handle = INVALID_HANDLE_VALUE;
    }

    return Success;
}
예제 #23
0
  bool Connect(u_long ulAddress, u_short usPort)
    const
  {
    // Is socket handle ok?
    if (!IsValidHandle())
      return false;

    sockaddr_in addr = { 0 };
    addr.sin_family = AF_INET;
    addr.sin_port = usPort;
    addr.sin_addr.s_addr = ulAddress;

    if (connect((SOCKET)hObject, (sockaddr*)&addr, sizeof addr)
	== SOCKET_ERROR)
      return false;

    return true;
  }
예제 #24
0
	Event::Event(BOOL bManualReset, BOOL bInitialState, LPCTSTR lpName, LPSECURITY_ATTRIBUTES lpEventAttributes)
	{
		m_hHandle = ::CreateEvent(lpEventAttributes, bManualReset, bInitialState, lpName);
		if (IsValidHandle(m_hHandle))
		{
			if (lpName)
			{
				m_dwStatus = GetLastError();
			}
			else
			{
				m_dwStatus = NO_ERROR;
			}
		}
		else
		{
			m_dwStatus = GetLastError();
		}
	}
예제 #25
0
	Mutex::Mutex(BOOL bInitialOwner, LPCWSTR lpName, LPSECURITY_ATTRIBUTES lpMutexAttributes)
	{
		m_hHandle = ::CreateMutex(lpMutexAttributes, bInitialOwner, lpName);
		if (IsValidHandle(m_hHandle))
		{
			if (lpName)
			{
				m_dwStatus = GetLastError();
			}
			else
			{
				m_dwStatus = NO_ERROR;
			}
		}
		else
		{
			m_dwStatus = GetLastError();
		}
	}
예제 #26
0
	Event::Event( LPCTSTR lpName, BOOL bInheritHandle, DWORD dwDesiredAccess)
	{
		m_hHandle = ::OpenEvent(dwDesiredAccess, bInheritHandle, lpName);
		if (IsValidHandle(m_hHandle))
		{
			if (lpName)
			{
				m_dwStatus = GetLastError();
			}
			else
			{
				m_dwStatus = NO_ERROR;
			}
		}
		else
		{
			m_dwStatus = GetLastError();
		}
	}
예제 #27
0
/*
--------------------------------------------------------------------------------
Close ...
(Standard instances management. Driver specific implementations should be put in Close() function.)
--------------------------------------------------------------------------------
*/
ST_ErrorCode_t STCC_Close(const STCC_Handle_t Handle)
{
    stcc_Unit_t *Unit_p;
    ST_ErrorCode_t ErrorCode = ST_NO_ERROR;

    EnterCriticalSection();

    if (!(FirstInitDone))
    {
        ErrorCode = ST_ERROR_INVALID_HANDLE;
    }
    else
    {
        if (!IsValidHandle(Handle))
        {
            ErrorCode = ST_ERROR_INVALID_HANDLE;
        }
        else
        {
            Unit_p = (stcc_Unit_t *) Handle;

            /* API specific actions before closing */
            ErrorCode = Close(Unit_p);

            /* Close only if no errors */
            if (ErrorCode == ST_NO_ERROR)
            {
                /* Un-register opened handle */
                Unit_p->UnitValidity = 0;
                CC_Trace(("Handle closed on device CC"));
            }
        } /* End handle valid */
    } /* End FirstInitDone */

    LeaveCriticalSection();
    if(ErrorCode != ST_NO_ERROR)
    {
        CC_Defense(ErrorCode);
    }

    return(ErrorCode);
}
예제 #28
0
  bool Listen(u_long ulAddress = INADDR_ANY, u_short usPort = 0,
	      int backlog = 0)
    const
  {
    // Is socket handle ok?
    if (!IsValidHandle())
      return false;

    sockaddr_in addr = { 0 };
    addr.sin_family = AF_INET;
    addr.sin_port = usPort;
    addr.sin_addr.s_addr = ulAddress;

    if (bind((SOCKET)hObject, (sockaddr*)&addr, sizeof addr) == SOCKET_ERROR)
      return false;

    if (listen((SOCKET)hObject, backlog) == SOCKET_ERROR)
      return false;

    return true;
  }
예제 #29
0
파일: file.cpp 프로젝트: nsweb/bigball
size_t File::GetFileSize()
{
	if( !IsValidHandle() )
		return 0;

	size_t Size = 0;
#if _WIN32 || _WIN64
	LARGE_INTEGER LInt;
	Memory::Memzero( &LInt, sizeof(LInt) );
	GetFileSizeEx( m_file_handle, &LInt );
	Size = (size_t) LInt.QuadPart;
	//DWORD dwSize = GetFileSize( m_hFile, NULL );
#else
	size_t Pos = ftell(m_file_handle);
	fseek( m_file_handle, 0, SEEK_END );
	Size = ftell(m_file_handle);
	fseek( m_file_handle, Pos, SEEK_SET );
#endif

	return Size;
}
예제 #30
0
ST_ErrorCode_t STEXTVIN_SelectVipInput(
    const STEXTVIN_Handle_t Handle,
    const STEXTVIN_VipInputSelection_t Selection
)
{
    ST_ErrorCode_t  ErrorCode = ST_NO_ERROR;

    stextvin_Unit_t *Unit_p;

    if (!IsValidHandle(Handle))
    {
        return(ST_ERROR_INVALID_HANDLE);
    }
    else
    {
        Unit_p = (stextvin_Unit_t *) Handle;


        switch (Unit_p->Device_p->DeviceType)
        {
            case STEXTVIN_SAA7114 :
            ErrorCode = EXTVIN_SelectSAA7114Input(I2cHandle_SAA7114,Selection);
                break;

            case STEXTVIN_DB331 :
            ErrorCode = EXTVIN_SelectSAA7111Input(I2cHandle_SAA7111,Selection);
                break;

            case STEXTVIN_STV2310 :
            ErrorCode = EXTVIN_SelectSTV2310Input(I2cHandle_STV2310,Selection);
                break;

            default :
            ErrorCode = STEXTVIN_ERROR_INVALID_INPUT_TYPE;
                break;
        }
    }
    return(ErrorCode);
}