mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
2.0 KiB
91 lines
2.0 KiB
/*
|
|
* install.c
|
|
*
|
|
* 32-bit Video Capture driver
|
|
* driver install and board configuration
|
|
*
|
|
* Geraint Davies, March 1993
|
|
*/
|
|
|
|
#include <windows.h>
|
|
#include <mmsystem.h>
|
|
#include <msvideo.h>
|
|
#include <msviddrv.h>
|
|
|
|
#include "spigotu.h"
|
|
|
|
/*
|
|
* we need to pass both the PVC_PROFILE_INFO and the PCONFIG_LOCATION
|
|
* to the configuration callback - so we use one of these structures
|
|
* to hold both
|
|
*/
|
|
typedef struct _vid_profile_loc {
|
|
PVC_PROFILE_INFO pProfile;
|
|
PCONFIG_LOCATION pLoc;
|
|
} vid_profile_loc, *pvid_profile_loc;
|
|
|
|
|
|
/*
|
|
* callback from DrvConfigure, to write hardware configuration
|
|
* data to the registry in between unloading the kernel driver and
|
|
* re-loading the new driver.
|
|
*
|
|
* pLoc is passed through as a context parameter from the original
|
|
* call to DrvConfigure
|
|
*/
|
|
BOOL
|
|
vidWriteConfig(PVOID pGeneric)
|
|
{
|
|
pvid_profile_loc pboth = (pvid_profile_loc) pGeneric;
|
|
|
|
// VC_WriteProfile(pboth->pProfile, PARAM_PORT, pboth->pLoc->Port);
|
|
VC_WriteProfile(pboth->pProfile, PARAM_INTERRUPT, pboth->pLoc->Interrupt);
|
|
VC_WriteProfile(pboth->pProfile, PARAM_FIFO, pboth->pLoc->FifoWindow);
|
|
|
|
return(TRUE);
|
|
}
|
|
|
|
|
|
/*
|
|
* install the kernel-mode driver, with the given hardware parameters.
|
|
*
|
|
* Use DrvConfigure to unload and reload the kernel driver in case
|
|
* the kernel driver is already loaded. In between, it will call back to
|
|
* our callback vidWriteConfig, when it is safe to write the new configuration
|
|
* to the registry.
|
|
*
|
|
* After loading the driver, we read back an install-success code
|
|
* from the registry which indicates whether or not the load was
|
|
* ok.
|
|
*/
|
|
LRESULT
|
|
vidInstall(HWND hDlg, PCONFIG_LOCATION pLoc, PVC_PROFILE_INFO pProf)
|
|
{
|
|
LRESULT lres;
|
|
vid_profile_loc both;
|
|
|
|
both.pProfile = pProf;
|
|
both.pLoc = pLoc;
|
|
|
|
/*
|
|
* load the driver, with the new parameters
|
|
*/
|
|
lres = VC_InstallDriver(
|
|
pProf, // registry access info/handles etc
|
|
vidWriteConfig, // callback function to write config to registry
|
|
(PVOID)&both // both the pProfile and the pLoc
|
|
);
|
|
|
|
return(lres);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|