/wiener_pcicc32/SOURCE/pcicc32_i.c |
---|
0,0 → 1,275 |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32 interface from ARW Elektronik, Germany -------- |
// all around irq handling |
// |
// (c) 1999-2002 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started AR 01.08.1999 |
// first release 1.0 AR 17.10.1999 |
// IoConnectInterrupt, share vector now true AR 04.03.2000 |
// globalInterruptEnabledStatus() added AR 24.02.2001 |
// added IRQ handling AR 24.02.2001 |
// added WITH_IRQS switch to switsch off irqs AR 04.10.2001 |
// changed making procedure (only VCC > 6.0) AR 30.05.2002 |
// |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
#define WITH_IRQS // comment out for interrupt handling excludes |
// ACHTUNG TEST |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
#include <ntddk.h> |
#include <pcicc32_drv.h> |
#include <pcicc32_i.h> |
#include <pcicc32.h> |
#include <pcicc32_local.h> |
//------------------------------------------------------------------------ |
// DEFINES |
// |
#ifndef DWORD |
#define DWORD ULONG |
#endif |
#ifndef WORD |
#define WORD USHORT |
#endif |
//------------------------------------------------------------------------ |
// GLOBALS |
// |
//------------------------------------------------------------------------ |
// FUNCTIONS |
// |
//------------------------------------------------------------------------ |
// enable and disable of interrupts |
// |
void globalInterruptEnable(PCIADA *pciada) |
{ |
#ifdef WITH_IRQS |
WRITE_REGISTER_USHORT(pciada->pwIntCSR, ENABLE_PCIADA_IRQS); |
#endif |
} |
void globalInterruptDisable(PCIADA *pciada) |
{ |
WRITE_REGISTER_USHORT(pciada->pwIntCSR, DISABLE_PCIADA_IRQS); |
} |
unsigned short globalInterruptEnabledStatus(PCIADA *pciada) |
{ |
unsigned short wStatus; |
wStatus = READ_REGISTER_USHORT(pciada->pwIntCSR); |
if ((wStatus & ENABLE_PCIADA_IRQS) == ENABLE_PCIADA_IRQS) |
return 1; |
return 0; |
} |
//------------------------------------------------------------------------ |
// determine which interrupt and evaluates status if appropriate |
// |
static int evaluateIrqStatus(PCIADA *pciada, ULONG *dwIrqStatus) |
{ |
volatile USHORT wCntrl; |
int result = 0; |
wCntrl = READ_REGISTER_USHORT(pciada->pwCntrl); |
if (wCntrl & 0x100) // pciada switched on ? |
{ |
volatile USHORT wIntCSR = READ_REGISTER_USHORT(pciada->pwIntCSR); |
if (wIntCSR & 0x0040) // are the interrupts enabled? |
{ |
if (wIntCSR & 0x20) |
{ |
// it's the pci interrupt # 2 |
globalInterruptDisable(pciada); // disable following interrupts |
// get current Cntrl - and clear interrupt |
WRITE_REGISTER_USHORT(pciada->pwCntrl, (USHORT)(wCntrl & ~0x0100)); // disable |
WRITE_REGISTER_USHORT(pciada->pwCntrl, wCntrl); // enable again |
*dwIrqStatus = CONNECTION_TIMEOUT; |
result = 1; |
} |
if (wIntCSR & 0x04) |
{ |
globalInterruptDisable(pciada); // disable following interrupts |
*dwIrqStatus = READ_REGISTER_ULONG(_DWORD_NAF(pciada->pvVirtIfr, 28, 2, 0)); |
// clear pending interrupt - LAM-FF |
WRITE_REGISTER_USHORT(_WORD_NAF(pciada->pvVirtIfr, 28, 0, 16), 0); |
result = 1; |
} |
} |
} |
return result; |
} |
//------------------------------------------------------------------------ |
// main interrupt handler function |
// |
static BOOLEAN irq_service(PKINTERRUPT Interrupt, PVOID ServiceContext) |
{ |
PCIADA *pciada = (PCIADA *)ServiceContext; |
#ifndef WITH_IRQS |
return FALSE; |
#endif |
if (!evaluateIrqStatus(pciada, &pciada->dwIrqStatus)) |
{ |
// KdPrint(("Not my irq.\n")); |
return FALSE; |
} |
// fire custom deffered procedure call |
KeInsertQueueDpc(&pciada->kDPCobj, (PVOID)pciada, (PVOID)&pciada->dwIrqStatus); |
KdPrint(("irq_service(0x%08x)\n", pciada->dwIrqStatus)); |
return TRUE; |
} |
//------------------------------------------------------------------------ |
// translate interrupt resources for PCIADAs to hardware independent ones |
// |
NTSTATUS PCICC32TranslateInterrupt(PDEVICE_OBJECT device_Obj) |
{ |
int i; |
NTSTATUS result = STATUS_SUCCESS; |
DEVICE_EXT *pDevExt = (DEVICE_EXT*)device_Obj->DeviceExtension; |
int nPCIADAs = pDevExt->nPCIADAs; |
PCIADA *pciada; |
KdPrint(("PCICC32TranslateInterrupt()\n")); |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
KdPrint(("In - Bus:%d, IrqLine:%d\n", pciada->Bus, pciada->Irql)); |
if (pciada->Irql) |
{ |
pciada->Vector = HalGetInterruptVector(PCIBus, pciada->Bus, |
pciada->Irql, pciada->Vector, |
&pciada->Irql, &pciada->Affinity); |
KdPrint(("Out - Irql:%d, Vector: %d, Affinity:%d\n", pciada->Irql, pciada->Vector, pciada->Affinity)); |
} |
else |
result = STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT; |
} |
return result; |
} |
//------------------------------------------------------------------------ |
// connect service routines to all PCIADA interrupts |
// |
NTSTATUS PCICC32ConnectInterrupt(PDEVICE_OBJECT device_Obj) |
{ |
#ifdef WITH_IRQS |
int i; |
NTSTATUS result = STATUS_SUCCESS; |
DEVICE_EXT *pDevExt = (DEVICE_EXT*)device_Obj->DeviceExtension; |
int nPCIADAs = pDevExt->nPCIADAs; |
PCIADA *pciada; |
KdPrint(("PCICC32ConnectInterrupt()\n")); |
// connect the interrupts to service routines |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
pciada->InterruptObject = NULL; |
if (pciada->Vector) |
result = IoConnectInterrupt(&pciada->InterruptObject, |
irq_service, |
(PVOID)pciada, |
NULL, |
pciada->Vector, |
pciada->Irql, |
pciada->Irql, |
LevelSensitive, |
TRUE, |
pciada->Affinity, |
FALSE); |
KdPrint(("irq_service:%p, VirtVect:%d, Irql:%d, hIrql:%d, Aff:0x%08x, Status:0x%08x\n", |
irq_service, pciada->Vector, pciada->Irql, |
pciada->Irql, pciada->Affinity, result)); |
if (result != STATUS_SUCCESS) |
break; |
} |
if (result == STATUS_SUCCESS) |
{ |
KdPrint(("PCICC32ConnectInterrupt() OK.\n")); |
} |
return result; |
#else |
return STATUS_SUCCESS; |
#endif |
} |
//------------------------------------------------------------------------ |
// dis-connect service routines to all PCIADA interrupts |
// |
NTSTATUS PCICC32DisConnectInterrupt(PDEVICE_OBJECT device_Obj) |
{ |
#ifdef WITH_IRQS |
int i; |
DEVICE_EXT *pDevExt = (DEVICE_EXT*)device_Obj->DeviceExtension; |
int nPCIADAs = pDevExt->nPCIADAs; |
PCIADA *pciada; |
KdPrint(("DisConnectInterrupt()\n")); |
// dis connect the interrupts to service routines |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
KdPrint(("IrqObj:0x%08x\n", pciada->InterruptObject)); |
if (pciada->InterruptObject) |
{ |
IoDisconnectInterrupt(pciada->InterruptObject); |
pciada->InterruptObject = 0; |
} |
} |
#endif |
return STATUS_SUCCESS; |
} |
/wiener_pcicc32/SOURCE/Release/pcicc32.inf |
---|
0,0 → 1,104 |
;=========================================================== |
; File : pcicc32.inf |
; |
; Abstract: Windows 2000 INF for PCICC32 boards from ARW Elektronik, Germany |
; |
;=========================================================== |
[Version] |
Signature = $CHICAGO$ |
Provider = %ARW% |
Class = %PCICC32_class_name% |
ClassGUID = {c4ad1dfa-3e35-4659-bf2b-c83cda6833e1} |
DriverVer = 06/18/2002,2.3.0.4 |
;----------------------------------------------------------- |
; Driver information |
;----------------------------------------------------------- |
[Manufacturer] |
%ARW_MFG% = ARW.Mfg |
[ARW.Mfg] |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258 |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258&SUBSYS_22589050 |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258&SUBSYS_22589050&REV_01 |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258&SUBSYS_22589050&REV_02 |
[ClassInstall32] |
AddReg=PCICC32_class_addreg |
[PCICC32_class_addreg] |
HKR,,,,%PCICC32_class_name% |
HKR,,Icon,0,0 |
;----------------------------------------------------------- |
; General installation section |
;----------------------------------------------------------- |
[CopyFiles_9050] |
pcicc32.sys,,,2 |
;----------------------------------------------------------- |
; Windows 2000 installation section |
;----------------------------------------------------------- |
[Install_PCICC32.NT] |
AddReg = AddRegistry_NT_9050 |
CopyFiles = CopyFiles_9050 |
[Install_PCICC32.NT.Services] |
AddService = pcicc32, 0x00000002, Service_Inst_9050, EventLog_Inst_9050 |
[AddRegistry_NT_9050] |
[Service_Inst_9050] |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 0 ; SERVICE_ERROR_IGNORE |
ServiceBinary = %12%\pcicc32.sys |
;----------------------------------------------------------- |
; Event log registry entries |
;----------------------------------------------------------- |
[EventLog_Inst_9050] |
AddReg = EventLog_AddReg_9050 |
[EventLog_AddReg_9050] |
HKR,,EventMessageFile,0x00020000,"%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\pcicc32.sys" |
HKR,,TypesSupported,0x00010001,7 |
;----------------------------------------------------------- |
; Source file information |
;----------------------------------------------------------- |
[SourceDisksNames.x86] |
1 = %InstallDisk%,"",1 |
[SourceDisksFiles] |
pcicc32.sys = 1 |
[DestinationDirs] |
DefaultDestDir = 12 ; drivers |
;----------------------------------------------------------- |
; String information |
;----------------------------------------------------------- |
[Strings] |
InstallDisk = "ARW Elektronik Windows Driver Installation Disk" |
ARW_MFG = "ARW Elektronik, Germany" |
ARW = "ARW Elektronik, Germany" |
PCICC32_class_name = "ARW BUS Interfaces" |
/wiener_pcicc32/SOURCE/Release/pcicc32.SYS |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/SOURCE/pcicc32.dsw |
---|
0,0 → 1,29 |
Microsoft Developer Studio Workspace File, Format Version 6.00 |
# WARNUNG: DIESE ARBEITSBEREICHSDATEI DARF NICHT BEARBEITET ODER GELĂ–SCHT WERDEN! |
############################################################################### |
Project: "pcicc32"=.\pcicc32.dsp - Package Owner=<4> |
Package=<5> |
{{{ |
}}} |
Package=<4> |
{{{ |
}}} |
############################################################################### |
Global: |
Package=<5> |
{{{ |
}}} |
Package=<3> |
{{{ |
}}} |
############################################################################### |
/wiener_pcicc32/SOURCE/pcicc32_drv.c |
---|
0,0 → 1,1062 |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32 (CAMAC) interface of ARW Elektronik, Germany -- |
// the main body of the driver |
// |
// (c) 2000-2002 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistribute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started out of pcivme sources AR 25.03.2000 |
// added IRQ handling AR 24.02.2001 |
// Added AUTOREAD functionality AR 17.03.2001 |
// Added LCR_READ AR 31.03.2001 |
// resource allocation registers idle entries too AR 25.11.2001 |
// changed making procedure (only VCC > 6.0) AR 30.05.2002 |
// totally rearanged resource alloc for WIN2000 AR 01.06.2002 |
// version 2.14 eleminates PLXBUG in WIN2000 AR 05.06.2002 |
// added KeSynchronizeExecution for interrupt sync AR 16.06.2002 |
// |
//------------------------------------------------------------------------ |
// DEFINES |
// |
#ifndef DWORD |
#define DWORD ULONG |
#endif |
#ifndef WORD |
#define WORD USHORT |
#endif |
#define CTL_INDEX(x) ((x >> 2) & 0xFF) // get user control code as index |
#define RESOURCE_ENTRY_COUNT 6 // WIN2000 forces to claim all entries |
#define DOS_DEVICE_NAME L"\\DosDevices\\PCICC32:" |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
#include <ntddk.h> |
#include <devioctl.h> |
// #include <wdm.h> |
#include <pcicc32_drv.h> |
#include <pcicc32.h> |
#include <pcicc32_v.h> |
#include <pcicc32_i.h> |
#include <pcicc32_io.h> |
//------------------------------------------------------------------------ |
// TYPEDEFS |
// |
typedef struct |
{ |
FILE_OBJ *file_obj; |
PCIADA *pciada; |
PVOID pOutputBuffer; |
PVOID pInputBuffer; |
ULONG Address; |
DWORD Length; |
} SYNC_CONTEXT; |
//------------------------------------------------------------------------ |
// GLOBALS |
// |
//------------------------------------------------------------------------ |
// FUNCTIONS |
// |
//------------------------------------------------------------------------ |
// for debug only - print interrupt line |
// |
#if DBG |
void PrintInterruptLine(int Bus, int Slot) |
{ |
PCI_COMMON_CONFIG pci_config; |
HalGetBusData( PCIConfiguration, // Bustype |
Bus, // PCI-Busnumber |
Slot, // Slotnumber |
(PVOID) &(pci_config), // Pointer for the PCI-Information |
sizeof(PCI_COMMON_CONFIG)); |
KdPrint(("Irql: %d\n", pci_config.u.type0.InterruptLine)); |
} |
#endif |
//------------------------------------------------------------------------ |
// get the cc32 number out of the filename |
// |
NTSTATUS InterpreteFileName(PCHAR name, int *nCC32) |
{ |
char *ptr = name; |
char *n = "cc32_"; |
int h = -1; // high part |
int l = -1; // low part |
if (*ptr == '\\') ptr++; // jump over leading ... |
while (*n) // compare the basename |
if (*n == tolower(*ptr)) |
{ |
n++; |
ptr++; |
} |
else |
return STATUS_NO_SUCH_FILE; |
h = *ptr - '0'; // get the number |
ptr++; |
l = *ptr - '0'; |
if (*ptr == 0) // still over the end ?? |
{ |
l = h; |
h = 0; |
} |
else |
ptr++; |
if ((h < 0) || (l < 0) || (*ptr != 0)) // anything wrong ?? |
return STATUS_NO_SUCH_FILE; |
*nCC32 = (h * 10) + l; // calculate number |
if (*nCC32 >= PCICC32_MAX_CC32) // out of range ?? |
return STATUS_NO_SUCH_FILE; |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// the ultimate driver unload |
VOID PCICC32Unload(PDRIVER_OBJECT driverObj) |
{ |
int i; |
UNICODE_STRING symbol_name; |
DEVICE_EXT *ext = (DEVICE_EXT*)(driverObj->DeviceObject->DeviceExtension); |
int nPCIADAs = ext->nPCIADAs; |
PCIADA *pciada; |
KdPrint(("PCICC32Unload()\n")); |
switch (ext->nInitState) |
{ |
case 8: |
case 7: |
case 6: |
// stop interrupts and shut off |
PCICC32DeInitPCIADAs(driverObj->DeviceObject); |
PCICC32DisConnectInterrupt(driverObj->DeviceObject); |
case 5: |
// KeInitializeDpc has no counterpart |
case 4: |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &ext->pciada[i]; |
if (pciada->pvVirtLcr != NULL) |
MmUnmapIoSpace(pciada->pvVirtLcr, LCR_SPACE); |
if (pciada->pvVirtIfr != NULL) |
MmUnmapIoSpace(pciada->pvVirtIfr, IFR_SPACE); |
} |
case 3: |
// HalGetInterruptVector has no counterpart |
case 2: |
// HalTranslateBusAddress has no counterpart |
case 1: |
PCICC32FreeResources(driverObj->DeviceObject); |
default: |
case 0: |
RtlInitUnicodeString(&symbol_name, DOS_DEVICE_NAME); |
// delete the symbolicLink in the registry |
IoDeleteSymbolicLink( &symbol_name); |
// delete the deviceObject |
IoDeleteDevice(driverObj->DeviceObject); |
} |
KdPrint(("PCICC32Unload() OK.\n")); |
} |
//------------------------------------------------------------------------ |
// called at CreateFile() |
NTSTATUS PCICC32Open(PDEVICE_OBJECT deviceObj, PIRP Irp) |
{ |
NTSTATUS result = STATUS_SUCCESS; |
ANSI_STRING name; |
int nCC32; |
int i; |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(deviceObj->DeviceExtension); |
PCIADA *pciada; |
FILE_OBJ *file_obj; |
name.Buffer = NULL; |
name.MaximumLength = 80; |
result = RtlUnicodeStringToAnsiString(&name, &(Irp->Tail.Overlay.OriginalFileObject->FileName), TRUE); |
if (result != STATUS_SUCCESS) goto fin; |
KdPrint(("PCICC32Open(%s)\n", name.Buffer)); |
result = InterpreteFileName(name.Buffer, &nCC32); |
if (result != STATUS_SUCCESS) goto fin; |
KdPrint(("PCICC32Open(%d)\n", nCC32)); |
RtlFreeAnsiString(&name); |
file_obj = (FILE_OBJ *)ExAllocatePool(NonPagedPool, sizeof(FILE_OBJ)); |
if (file_obj == (FILE_OBJ *)NULL) |
{ |
result = STATUS_NO_MEMORY; |
goto fin; |
} |
file_obj->uwAssociatedCC32 = nCC32; |
Irp->Tail.Overlay.OriginalFileObject->FsContext = (PVOID)file_obj; |
result = PCICC32ScanCC32(deviceObj); |
if (result != STATUS_SUCCESS) goto fin; |
for (i = 0; i < pDevExt->nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
if (pciada->wModuleNumber == nCC32) |
{ |
pDevExt->cc32[nCC32] = pciada; // create association |
pciada->dwLinkCount++; |
enableCC32(pciada); |
break; |
} |
} |
if (i >= pDevExt->nPCIADAs) |
{ |
result = STATUS_NO_SUCH_FILE; |
goto fin; |
} |
fin: |
Irp->IoStatus.Status = result; |
Irp->IoStatus.Information = 0; |
IoCompleteRequest(Irp, IO_NO_INCREMENT); |
return result; |
} |
//------------------------------------------------------------------------ |
// called at close() |
NTSTATUS PCICC32Close(PDEVICE_OBJECT deviceObj, PIRP Irp) |
{ |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(deviceObj->DeviceExtension); |
FILE_OBJ *file_obj = (FILE_OBJ *)NULL; |
PCIADA *pciada; |
file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
KdPrint(("PCICC32Close(%d)\n", file_obj->uwAssociatedCC32)); |
if (file_obj != (FILE_OBJ *)NULL) |
{ |
pciada = pDevExt->cc32[file_obj->uwAssociatedCC32]; |
pciada->dwLinkCount--; |
// disable interrupts when closing |
if (pciada->pIrqControlFile == file_obj) |
{ |
pciada->pIrqControlFile = (FILE_OBJ *)NULL; |
globalInterruptDisable(pciada); |
} |
// cancel any blocking Irp origin from this file |
if (file_obj->blockingIrp != (PIRP)NULL) |
file_obj->blockingIrp = (PIRP)NULL; |
if (pciada->pBlockingIrp == &file_obj->blockingIrp) |
pciada->pBlockingIrp = (PIRP *)NULL; |
if (!pciada->dwLinkCount) |
disableCC32(pciada); |
ExFreePool(file_obj); |
Irp->Tail.Overlay.OriginalFileObject->FsContext = (FILE_OBJ *)NULL; |
} |
KdPrint(("PCICC32Close OK\n")); |
Irp->IoStatus.Status = STATUS_SUCCESS; |
Irp->IoStatus.Information = 0; |
IoCompleteRequest(Irp, IO_NO_INCREMENT); |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// called at |
NTSTATUS PCICC32Shutdown(PDEVICE_OBJECT deviceObj, PIRP irp) |
{ |
KdPrint(("PCICC32Shutdown()\n")); |
// deinit interfaces and interrupts |
PCICC32DeInitPCIADAs(deviceObj); |
KdPrint(("PCICC32Shutdown() OK\n")); |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// called at ioctl() |
NTSTATUS PCICC32DeviceControl(PDEVICE_OBJECT deviceObj, PIRP Irp) |
{ |
PIO_STACK_LOCATION IrpStack; |
int nIndex; |
IrpStack = IoGetCurrentIrpStackLocation(Irp); |
nIndex = CTL_INDEX(IrpStack->Parameters.DeviceIoControl.IoControlCode); |
KdPrint(("PCICC32DeviceControl(%d / 0x%08x)\n", nIndex, Irp->Tail.Overlay.OriginalFileObject)); |
if (nIndex > CTL_INDEX(PCICC32_LAST_CTL_CODE)) |
{ |
KdPrint(("LastIndex(%d)\n", CTL_INDEX(PCICC32_LAST_CTL_CODE))); |
Irp->IoStatus.Status = STATUS_UNSUCCESSFUL; |
Irp->IoStatus.Information = 0; |
IoCompleteRequest(Irp,IO_NO_INCREMENT); |
KdPrint(("PCICC32DeviceControl() FAIL.\n")); |
return STATUS_UNSUCCESSFUL; |
} |
return ioctl[nIndex](deviceObj, Irp, IrpStack); |
} |
//------------------------------------------------------------------------ |
// called at read() |
static BOOLEAN PCICC32Read_kernel(PVOID pvContext) |
{ |
register SYNC_CONTEXT *context = (SYNC_CONTEXT *)pvContext; |
register ULONG i = 0; |
USHORT wCntrl; |
wCntrl = READ_REGISTER_USHORT(context->pciada->pwCntrl); |
if (context->file_obj->wBlockTransfer & AUTOREAD) |
{ |
wCntrl &= ~0x0004; // enable autoread - set bit to 0 |
WRITE_REGISTER_USHORT(context->pciada->pwCntrl, wCntrl); |
} |
// do the read --- |
if (context->file_obj->wBlockTransfer & UNTIL_NOT_Q) |
{ |
// read first time to get Q information |
register ULONG tempBuffer = READ_REGISTER_ULONG((ULONG *)context->Address); |
if (context->file_obj->wAccessType == WORD_ACCESS) |
{ |
PUSHORT pwBuffer = (PUSHORT)context->pOutputBuffer; |
PUSHORT pwBufEnd = (PUSHORT)((PUCHAR)context->pOutputBuffer + context->Length); |
while ((tempBuffer & 0x80000000) && (pwBuffer < pwBufEnd)) |
{ |
*pwBuffer++ = (USHORT)tempBuffer; |
tempBuffer = READ_REGISTER_ULONG((ULONG *)context->Address); // read the same address multiple times as long to get Q |
i++; |
} |
} |
else |
{ |
// LONG_ACCESS |
PULONG pdwBuffer = (PULONG)context->pOutputBuffer; |
PULONG pdwBufEnd = (PULONG)((PUCHAR)context->pOutputBuffer + context->Length); |
while ((tempBuffer & 0x80000000) && (pdwBuffer < pdwBufEnd)) |
{ |
*pdwBuffer++ = tempBuffer; |
tempBuffer = READ_REGISTER_ULONG((ULONG *)context->Address); // read the same address multiple times as long to get Q |
i++; |
} |
} |
i *= context->file_obj->wAccessType; |
KdPrint(("UNTIL_NOT_Q, 0x%08x bytes read\n", i)); |
} |
else // no UNTIL_NOT_Q |
{ |
while (i < context->Length) |
{ |
context->file_obj->fRead((void *)((PUCHAR)context->pOutputBuffer + i), (void *)context->Address); // read the same address multiple times |
i += context->file_obj->wAccessType; |
} |
} |
// disable autoread unconditionally - set bit to 1 |
wCntrl |= 0x0004; |
WRITE_REGISTER_USHORT(context->pciada->pwCntrl, wCntrl); |
context->Length = i; |
return TRUE; |
} |
NTSTATUS PCICC32Read(PDEVICE_OBJECT device_Obj, PIRP Irp) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
PIO_STACK_LOCATION IrpStack = IoGetCurrentIrpStackLocation(Irp); |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
SYNC_CONTEXT context; |
context.file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
context.pciada = pDevExt->cc32[context.file_obj->uwAssociatedCC32]; |
context.pOutputBuffer = ((void *)(MmGetSystemAddressForMdl(Irp->MdlAddress))); |
context.Address = IrpStack->Parameters.Read.ByteOffset.LowPart; |
context.Length = 0; |
KdPrint(("PCICC32Read(%d)\n", context.file_obj->uwAssociatedCC32)); |
if (context.Address > IFR_SPACE) |
Status = STATUS_ACCESS_VIOLATION; |
else |
{ |
// do here in between what has to be done ----------------- |
context.Length = IrpStack->Parameters.Read.Length; |
KdPrint(("Address = 0x%08x, Length = 0x%08x\n", context.Address, context.Length)); |
context.Address = (ULONG)context.pciada->pvVirtIfr + context.Address; |
KeSynchronizeExecution(context.pciada->InterruptObject, PCICC32Read_kernel, &context); |
// do here in between what has to be done end ------------- |
} |
Irp->IoStatus.Status = Status; |
Irp->IoStatus.Information = context.Length; |
IoCompleteRequest(Irp,IO_NO_INCREMENT); |
KdPrint(("PCICC32Read(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// called at write() |
static BOOLEAN PCICC32Write_kernel(PVOID pvContext) |
{ |
register SYNC_CONTEXT *context = (SYNC_CONTEXT *)pvContext; |
register ULONG i = 0; |
// do the write --- |
while (i < context->Length) |
{ |
context->file_obj->fWrite((void *)context->Address, (void *)((PUCHAR)context->pInputBuffer + i)); // write the same address multiple times |
i += context->file_obj->wAccessType; |
} |
context->Length = i; |
return TRUE; |
} |
NTSTATUS PCICC32Write(PDEVICE_OBJECT device_Obj, PIRP Irp) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
PIO_STACK_LOCATION IrpStack = IoGetCurrentIrpStackLocation(Irp); |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
SYNC_CONTEXT context; |
context.file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
context.pciada = pDevExt->cc32[context.file_obj->uwAssociatedCC32]; |
context.pInputBuffer = ((void *)(MmGetSystemAddressForMdl(Irp->MdlAddress))); |
context.Address = IrpStack->Parameters.Read.ByteOffset.LowPart; |
context.Length = 0; |
KdPrint(("PCICC32Write(%d)\n", context.file_obj->uwAssociatedCC32)); |
if (context.Address > IFR_SPACE) |
Status = STATUS_ACCESS_VIOLATION; |
else |
{ |
register ULONG i = 0; |
// do here in between what has to be done ----------------- |
context.Length = IrpStack->Parameters.Read.Length; |
KdPrint(("Address = 0x%08x, Length = 0x%08x\n", context.Address, context.Length)); |
context.Address = (ULONG)context.pciada->pvVirtIfr + context.Address; |
KeSynchronizeExecution(context.pciada->InterruptObject, PCICC32Write_kernel, &context); |
// do here in between what has to be done end ------------- |
} |
Irp->IoStatus.Status = Status; |
Irp->IoStatus.Information = context.Length; |
IoCompleteRequest(Irp,IO_NO_INCREMENT); |
KdPrint(("PCICC32Write(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// search for pciada's |
// |
NTSTATUS SearchDevices(PDEVICE_OBJECT device_Obj) |
{ |
PCI_SLOT_NUMBER SlotNumber; |
PCI_COMMON_CONFIG pci_config; |
PCIADA *pciada; |
ULONG length; |
int *found; |
int i,j,k; |
KdPrint(("SearchDevices()\n")); |
// prepare structures ---------------------------------------- |
found = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->nPCIADAs; |
*found = 0; |
for (i = 0; i < PCICC32_MAX_PCIADA; i++) |
{ |
pciada = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->pciada[i]; |
pciada->Bus = -1; |
pciada->Slot.u.AsULONG = 0xFFFFFFFF; |
} |
// search for pciada's --------------------------------------- |
SlotNumber.u.bits.Reserved = 0; |
for (j = 0; j < PCI_MAX_BUSES; j++) |
{ |
for (i = 0; i < PCI_MAX_DEVICES; i++) |
{ |
SlotNumber.u.bits.DeviceNumber = i; |
for (k = 0; k < PCI_MAX_FUNCTION; k++) |
{ |
SlotNumber.u.bits.FunctionNumber = k; |
length = HalGetBusData( PCIConfiguration, // Bustype |
j, // PCI-Busnumber |
SlotNumber.u.AsULONG, // Slotnumber |
(PVOID) &(pci_config), // Pointer for the PCI-Information |
sizeof(PCI_COMMON_CONFIG) ); |
if ((pci_config.VendorID == PCICC32_VENDOR_ID) && |
(pci_config.DeviceID == PCICC32_DEVICE_ID) && |
(pci_config.u.type0.SubSystemID == PCICC32_SUBSYS_ID) && |
(pci_config.u.type0.SubVendorID == PCICC32_SUBVEN_ID) && |
(pci_config.u.type0.BaseAddresses[3])) |
{ |
pciada = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->pciada[*found]; |
memcpy(&pciada->PCIDevice, &pci_config, sizeof(pci_config)); |
pciada->Slot = SlotNumber; |
pciada->Bus = j; |
KdPrint(("PCIADA found @ Bus/Slot %d/%d.\n", pciada->Bus, pciada->Slot.u.AsULONG)); |
(*found)++; |
if (*found >= PCICC32_MAX_PCIADA) return STATUS_SUCCESS; |
} |
} |
} |
} |
return STATUS_SUCCESS; |
} |
//--------------------------------------------------------------- |
// function to call for bug fix of PLX9050 build in bug |
// |
NTSTATUS PLX9050BugFix(PDEVICE_OBJECT device_Obj) |
{ |
DEVICE_EXT *DeviceExtension = (DEVICE_EXT*)device_Obj->DeviceExtension; |
int i; |
ULONG dwData; |
PCIADA *pciada; |
KdPrint(("PLX9050BugFix()\n")); |
for (i = 0; i < DeviceExtension->nPCIADAs; i++) |
{ |
pciada = &DeviceExtension->pciada[i]; |
if ((dwData = pciada->PCIDevice.u.type0.BaseAddresses[0]) & 0x80) |
{ |
KdPrint(("Changing address 0:0x%p with 4:0x%p\n", |
pciada->PCIDevice.u.type0.BaseAddresses[0], |
pciada->PCIDevice.u.type0.BaseAddresses[4])); |
pciada->PCIDevice.u.type0.BaseAddresses[0] = // exchange |
pciada->PCIDevice.u.type0.BaseAddresses[4]; |
pciada->PCIDevice.u.type0.BaseAddresses[4] = dwData; |
if (HalSetBusDataByOffset(PCIConfiguration, pciada->Bus, |
pciada->Slot.u.AsULONG, |
(PVOID)&pciada->PCIDevice.u.type0.BaseAddresses[0], |
0x10, 4) != 4) |
return STATUS_UNSUCCESSFUL; |
if (HalSetBusDataByOffset(PCIConfiguration, pciada->Bus, |
pciada->Slot.u.AsULONG, |
(PVOID)&pciada->PCIDevice.u.type0.BaseAddresses[4], |
0x20, 4) != 4) |
return STATUS_UNSUCCESSFUL; |
} |
if ((dwData = pciada->PCIDevice.u.type0.BaseAddresses[1]) & 0x80) |
{ |
KdPrint(("Changing address 1:0x%p with 5:0x%p\n", |
pciada->PCIDevice.u.type0.BaseAddresses[1], |
pciada->PCIDevice.u.type0.BaseAddresses[5])); |
pciada->PCIDevice.u.type0.BaseAddresses[1] = // exchange |
pciada->PCIDevice.u.type0.BaseAddresses[5]; |
pciada->PCIDevice.u.type0.BaseAddresses[5] = dwData; |
if (HalSetBusDataByOffset(PCIConfiguration, pciada->Bus, |
pciada->Slot.u.AsULONG, |
(PVOID)&pciada->PCIDevice.u.type0.BaseAddresses[1], |
0x14, 4) != 4) |
return STATUS_UNSUCCESSFUL; |
if (HalSetBusDataByOffset(PCIConfiguration, pciada->Bus, |
pciada->Slot.u.AsULONG, |
(PVOID)&pciada->PCIDevice.u.type0.BaseAddresses[5], |
0x24, 4) != 4) |
return STATUS_UNSUCCESSFUL; |
} |
} |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// reserve resources for PCIADAs |
// |
NTSTATUS PCICC32ExtractResources(PCIADA *pciada, PCM_RESOURCE_LIST pList) |
{ |
PCM_RESOURCE_LIST pResourceList; |
PCM_FULL_RESOURCE_DESCRIPTOR pFullDescriptor; |
PCM_PARTIAL_RESOURCE_LIST pPartialList; |
PCM_PARTIAL_RESOURCE_DESCRIPTOR pPartialDescriptor; |
int i; |
int bug = 0; |
KdPrint(("PCICC32ExtractResources()\n")); |
pResourceList = pList; |
pFullDescriptor = pResourceList->List; |
pPartialList = &pFullDescriptor->PartialResourceList; |
for (i=0; i<(int)pPartialList->Count; i++) |
{ |
pPartialDescriptor = &pPartialList->PartialDescriptors[i]; |
switch (pPartialDescriptor->Type) |
{ |
case CmResourceTypeInterrupt: |
pciada->Irql = (KIRQL)pPartialDescriptor->u.Interrupt.Level; |
pciada->Vector = pPartialDescriptor->u.Interrupt.Vector; |
pciada->Affinity = pPartialDescriptor->u.Interrupt.Affinity; |
KdPrint(("Irq : Irql: %d, Vector: %d, Affinity: %d\n", |
pciada->Irql, pciada->Vector, pciada->Affinity)); |
break; |
case CmResourceTypeDma: |
KdPrint(("Dma : \n")); |
break; |
case CmResourceTypePort: |
KdPrint(("Port : 0x%p\n", pPartialDescriptor->u.Port.Start)); |
break; |
case CmResourceTypeMemory: |
// special handling of PLXBUG here because of WIN2000 |
// WIN2000 doesn't recognize late address changes |
if (!bug) |
{ |
if (i == 0) |
{ |
pciada->pvPhysLcr = pPartialDescriptor->u.Memory.Start; |
if (pciada->pvPhysLcr.LowPart & 0x80) |
bug = 1; |
} |
} |
else |
{ |
if (i == 3) |
pciada->pvPhysLcr = pPartialDescriptor->u.Memory.Start; |
} |
if (i == 2) |
pciada->pvPhysIfr = pPartialDescriptor->u.Memory.Start; |
KdPrint(("Memory : 0x%p\n", (PUCHAR)pPartialDescriptor->u.Memory.Start.LowPart)); |
break; |
} |
} |
if (pciada->Irql == 0) |
return STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT; |
KdPrint(("PCICC32ExtractResources() OK.\n")); |
return STATUS_SUCCESS; |
} |
NTSTATUS PCICC32ReserveResources(PDEVICE_OBJECT device_Obj) |
{ |
PCM_RESOURCE_LIST pList = NULL; |
NTSTATUS result = STATUS_SUCCESS; |
int i; |
DEVICE_EXT *pDevExt = (DEVICE_EXT*)(device_Obj->DeviceExtension); |
int nPCIADAs = pDevExt->nPCIADAs; |
PCIADA *pciada; |
UNICODE_STRING DriverClassName; |
KdPrint(("PCICC32ReserveResources()\n")); |
// prepare resource claiming |
RtlInitUnicodeString(&DriverClassName, L"PCICC32"); |
// cycle through all busses and slots assigned to PCIADAs |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
result = HalAssignSlotResources(NULL, &DriverClassName, device_Obj->DriverObject, device_Obj, |
PCIBus, pciada->Bus, pciada->Slot.u.AsULONG, &pList); |
if (result != STATUS_SUCCESS) |
break; |
result = PCICC32ExtractResources(pciada, pList); |
if (result != STATUS_SUCCESS) |
break; |
} |
// its my part to free allocated resources |
ExFreePool(pList); |
KdPrint(("PCICC32ReserveResources(0x%08x)\n", result)); |
return result; |
}; |
//------------------------------------------------------------------------ |
// free resources from PCIADAs |
// |
NTSTATUS PCICC32FreeResources(PDEVICE_OBJECT device_Obj) |
{ |
CM_RESOURCE_LIST ResList; |
BOOLEAN bConflict; |
UNICODE_STRING DriverClassName; |
KdPrint(("PCICC32FreeResources()\n")); |
RtlInitUnicodeString(&DriverClassName, L"PCICC32"); |
ResList.Count = 0; |
IoReportResourceUsage(&DriverClassName, device_Obj->DriverObject, |
&ResList, sizeof(ResList), device_Obj, |
NULL, 0, FALSE, &bConflict); |
return STATUS_SUCCESS; |
}; |
//------------------------------------------------------------------------ |
// translate memory resources to neutral for PCIADAs |
// |
NTSTATUS PCICC32TranslateBusAddresses(PDEVICE_OBJECT device_Obj) |
{ |
int i; |
NTSTATUS result = STATUS_SUCCESS; |
int nPCIADAs = ((DEVICE_EXT*)(device_Obj->DeviceExtension))->nPCIADAs; |
ULONG memType0, memType2; |
PCIADA *pciada; |
KdPrint(("TranslateBusAddresseses()\n")); |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->pciada[i]; |
memType0 = memType2 = 0; |
if (!(HalTranslateBusAddress(PCIBus, pciada->Bus, pciada->pvPhysLcr, &memType0, |
&pciada->pvPhysLcr)) || |
!(HalTranslateBusAddress(PCIBus, pciada->Bus, pciada->pvPhysIfr, &memType2, |
&pciada->pvPhysIfr))) |
{ |
result = STATUS_UNSUCCESSFUL; |
break; |
} |
if ((memType0) || (memType2)) |
{ |
result = STATUS_UNSUCCESSFUL; |
break; |
} |
} |
return result; |
} |
//------------------------------------------------------------------------ |
// map address spaces to virtual addresses |
// |
NTSTATUS PCICC32MapIOspaces(PDEVICE_OBJECT device_Obj) |
{ |
int i; |
DEVICE_EXT *pDevExt = (DEVICE_EXT*)device_Obj->DeviceExtension; |
int nPCIADAs = pDevExt->nPCIADAs; |
PCIADA *pciada; |
KdPrint(("PCICC32MapIOspaces()\n")); |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
if ((pciada->pvVirtLcr = MmMapIoSpace(pciada->pvPhysLcr, LCR_SPACE, FALSE)) == NULL) |
return STATUS_UNSUCCESSFUL; |
if ((pciada->pvVirtIfr = MmMapIoSpace(pciada->pvPhysIfr, IFR_SPACE, FALSE)) == NULL) |
return STATUS_UNSUCCESSFUL; |
KdPrint(("PCIADA %d: LCR 0x%08x IFR 0x%08x\n", i, pciada->pvVirtLcr, pciada->pvVirtIfr)); |
pciada->pwIntCSR = (PUSHORT)((PUCHAR)pciada->pvVirtLcr + 0x4C); |
pciada->pwCntrl = (PUSHORT)((PUCHAR)pciada->pvVirtLcr + 0x50); |
} |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// initializes and registers a DPC routine for each pciada |
// |
NTSTATUS InitializeCustomDPCObjects(PDEVICE_OBJECT device_object) |
{ |
int i; |
DEVICE_EXT *pDevExt = (DEVICE_EXT*)(device_object->DeviceExtension); |
int nPCIADAs = pDevExt->nPCIADAs; |
PCIADA *pciada; |
KdPrint(("InitializeCustomDPCObject()\n")); |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
KeInitializeDpc(&pciada->kDPCobj, fMyDefferedRoutine, (PVOID)device_object); |
} |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// init structures a.s.o. |
// |
VOID PCICC32SoftInit(PDEVICE_OBJECT device_Obj) |
{ |
int i; |
PCIADA *pciada; |
for (i = 0; i < PCICC32_MAX_PCIADA; i++) |
{ |
pciada = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->pciada[i]; |
pciada->pvPhysLcr.QuadPart = pciada->pvPhysIfr.QuadPart = 0; |
pciada->pvVirtLcr = pciada->pvVirtIfr = NULL; |
pciada->bConnected = FALSE; // connection still not verified |
pciada->wModuleNumber = 0xFFFF; |
pciada->wFPGAVersion = 0xFFFF; |
pciada->wModuleType = 1; // always CC32 |
pciada->InterruptObject = NULL; |
pciada->Irql = 0; |
pciada->Vector = 0; |
pciada->Affinity = 0; |
pciada->dwLinkCount = 0; |
pciada->dwIrqStatus = 0; |
pciada->pBlockingIrp = (PIRP *)NULL; |
pciada->pIrqControlFile = (FILE_OBJ *)NULL; |
} |
// no CC32 associated to any PCIADA |
for (i = 0; i < PCICC32_MAX_CC32; i++) |
((DEVICE_EXT*)(device_Obj->DeviceExtension))->cc32[i] = NULL; |
} |
//------------------------------------------------------------------------ |
// the ultimate starting point of a driver |
NTSTATUS DriverEntry(PDRIVER_OBJECT driverObj, PUNICODE_STRING regPath) |
{ |
int i; |
PDEVICE_OBJECT device_object; // pointer to the device object |
UNICODE_STRING device_name; |
UNICODE_STRING symbol_name; |
NTSTATUS result = STATUS_SUCCESS; |
PCIADA *pciada; // pointer to a PCIADA |
int nPCIADAs; // count of PCIADAs |
DEVICE_EXT *DeviceExtension = NULL; |
KdPrint(("DriverEntry() ----%d.%d-------------------------\n", (DRIVER_VERSION >> 16) & 0xFFFF, DRIVER_VERSION & 0xFFFF)); |
driverObj->DriverUnload = PCICC32Unload; |
driverObj->MajorFunction[IRP_MJ_CREATE] = PCICC32Open; |
driverObj->MajorFunction[IRP_MJ_CLOSE] = PCICC32Close; |
driverObj->MajorFunction[IRP_MJ_READ] = PCICC32Read; |
driverObj->MajorFunction[IRP_MJ_WRITE] = PCICC32Write; |
driverObj->MajorFunction[IRP_MJ_DEVICE_CONTROL] = PCICC32DeviceControl; |
driverObj->MajorFunction[IRP_MJ_SHUTDOWN] = PCICC32Shutdown; |
RtlInitUnicodeString(&device_name, L"\\Device\\CC32"); |
/* DeviceObject durch IO-Manager erzeugen */ |
result = IoCreateDevice( driverObj, // DriverObject received by the DriverEntry Call |
sizeof(DEVICE_EXT), // required Memory for the DeviceExtension |
&device_name, // Name of the device in the device-Directory |
FILE_DEVICE_UNKNOWN, // Device-ID |
0, // Device-Characteristics normal 0 |
FALSE, // TRUE : one Thread can open the driver |
&device_object); // DeviceObject returned from the IO-Manager |
// defines how the data are handled between user / kernel Adress-Space |
device_object->Flags |= DO_DIRECT_IO; |
// anounce driver as symbolic device --------------------------------- |
if (result == STATUS_SUCCESS) |
{ |
/* now the symbolic Link is created. If there is no S.L. a program cannot connect to the driver */ |
RtlInitUnicodeString(&symbol_name, DOS_DEVICE_NAME); |
result = IoCreateSymbolicLink(&symbol_name,&device_name); |
if (result != STATUS_SUCCESS) |
{ |
IoDeleteDevice(device_object); |
return result; |
} |
} |
else |
return result; |
DeviceExtension = (DEVICE_EXT*)device_object->DeviceExtension; |
DeviceExtension->actualIrp = NULL; |
DeviceExtension->nInitState = 0; |
// init pciada structures ------------------------------------ |
PCICC32SoftInit(device_object); |
// search for PCIADAs ---------------------------------------- |
result = SearchDevices(device_object); |
nPCIADAs = DeviceExtension->nPCIADAs; |
if ((result != STATUS_SUCCESS) || !(nPCIADAs)) |
{ |
PCICC32Unload(driverObj); |
return STATUS_DEVICE_DOES_NOT_EXIST; |
} |
// request exclusive ownership of .. --------------------------------- |
if ((result = PCICC32ReserveResources(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return result; |
} |
else |
DeviceExtension->nInitState++; |
// fix PLX9050 Bug ------------------------------------------- |
if ((result = PLX9050BugFix(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return result; |
} |
// translate BUS relative addresses ---------------------------------- |
if ((result = PCICC32TranslateBusAddresses(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return STATUS_DEVICE_DOES_NOT_EXIST; |
} |
else |
DeviceExtension->nInitState++; |
// translate Interrupt Resources used -------------------------------- |
if ((result = PCICC32TranslateInterrupt(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return STATUS_DEVICE_DOES_NOT_EXIST; |
} |
else |
DeviceExtension->nInitState++; |
// map address spaces to virtual addresses --------------------------- |
if ((result = PCICC32MapIOspaces(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return STATUS_DEVICE_DOES_NOT_EXIST; |
} |
else |
DeviceExtension->nInitState++; |
// initialze my custom DPC objects ----------------------------------- |
if ((result = InitializeCustomDPCObjects(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return result; |
} |
else |
DeviceExtension->nInitState++; |
// disable all interrupts -------------------------------------------- |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &DeviceExtension->pciada[i]; |
globalInterruptDisable(pciada); |
} |
// connect interrupts to service routines ---------------------------- |
if ((result = PCICC32ConnectInterrupt(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return STATUS_DEVICE_DOES_NOT_EXIST; |
} |
else |
DeviceExtension->nInitState++; |
// scan all connected CC32 for info and later use ------------------- |
if ((result = PCICC32ScanCC32(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return STATUS_DEVICE_DOES_NOT_EXIST; |
} |
device_object->Flags &= ~DO_DEVICE_INITIALIZING; |
KdPrint(("DriverEntry() OK.\n")); |
return result; |
} |
/wiener_pcicc32/SOURCE/SOURCES |
---|
0,0 → 1,14 |
TARGETNAME=pcicc32 |
#VisualStudio 5 |
#TARGETPATH=d:\Programme\DevStudio\MyProjects\pcicc32 |
#VisualStudio 6 |
#TARGETPATH=d:\Programme\VisualStudio\MyProjects\pcicc32 |
#new installation |
TARGETPATH=d:\work\MyProjects\pcicc32 |
TARGETTYPE=DRIVER |
TARGETLIBS= |
INCLUDES=$(BASEDIR)\inc |
SOURCES=pcicc32_drv.c pcicc32_v.c pcicc32_io.c pcicc32_i.c |
/wiener_pcicc32/SOURCE/pcicc32_i.h |
---|
0,0 → 1,55 |
#ifndef __PCICC33_I_H__ |
#define __PCICC32_I_H__ |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32 interface from ARW Elektronik, Germany --------- |
// the header file to pcicc32_i.c - all around interrupt handling |
// |
// (c) 1999 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started AR 15.06.1999 |
// added globalInterruptEnabledStatus() AR 24.02.2001 |
// |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
#include <ntddk.h> |
#include <pcicc32_drv.h> |
//------------------------------------------------------------------------ |
// DEFINES |
// |
//------------------------------------------------------------------------ |
// PROTOTYPES |
// |
void globalInterruptEnable(PCIADA *pciada); |
void globalInterruptDisable(PCIADA *pciada); |
unsigned short globalInterruptEnabledStatus(PCIADA *pciada); |
NTSTATUS PCICC32TranslateInterrupt(PDEVICE_OBJECT device_Obj); |
NTSTATUS PCICC32ConnectInterrupt(PDEVICE_OBJECT device_Obj); |
NTSTATUS PCICC32DisConnectInterrupt(PDEVICE_OBJECT device_Obj); |
/* release all this procedures after init of the driver */ |
#ifdef ALLOC_PRAGMA |
#pragma alloc_text (init, PCICC32ConnectInterrupt) |
#pragma alloc_text (init, PCICC32TranslateInterrupt) |
#endif |
/* put all this procedures in the paged memory-pool, all called at passiv Level */ |
#ifdef ALLOC_PRAGMA |
#pragma alloc_text (page, PCICC32DisConnectInterrupt) |
#endif |
#endif //__PCICC32_I_H__ |
/wiener_pcicc32/SOURCE/pcicc32_local.h |
---|
0,0 → 1,36 |
#ifndef _PCICC32_LOCAL_H__ |
#define _PCICC32_LOCAL_H__ |
//----------------------------------------------------------------------- |
// Address definitions and constants for PCIADA of PCICC32 interface |
// designed by A.Rausch |
// |
// (c) 1999 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// first parts derived from PCIVME AR 10.03.2000 |
// added initialisation for AUTOREAD AR 17.03.2001 |
// |
/*-----------------------------------------------------------------------*/ |
/* all addresses relative to PCI-Window */ |
/*--------- some masks in CSR -------------------------------------------*/ |
#define MASK_MODNR (WORD)0x00F0 /* the mask to get the module No */ |
#define MASK_FPGA (WORD)0x0F00 /* the mask to get the FPGA rev. */ |
#define MASK_MODTYPE (WORD)0xF000 /* the mask to get type of module*/ |
/*---------- release und inhibit into 0x50 of PLX ------------------------*/ |
#define RELEASE_CC32 (WORD)0x4186 /* write this to release access ..*/ |
#define INHIBIT_CC32 (WORD)0x4086 /* write this to inhibit access ..*/ |
#define ENABLE_PCIADA_IRQS (WORD)0x0049 /* enable PCIADA IRQs */ |
#define DISABLE_PCIADA_IRQS (WORD)0x0009 /* disable PCIADA IRQs */ |
#endif // _PCICC32_LOCAL_H__ |
/wiener_pcicc32/SOURCE/Debug/pcicc32.inf |
---|
0,0 → 1,104 |
;=========================================================== |
; File : pcicc32.inf |
; |
; Abstract: Windows 2000 INF for PCICC32 boards from ARW Elektronik, Germany |
; |
;=========================================================== |
[Version] |
Signature = $CHICAGO$ |
Provider = %ARW% |
Class = %PCICC32_class_name% |
ClassGUID = {c4ad1dfa-3e35-4659-bf2b-c83cda6833e1} |
DriverVer = 06/18/2002,2.3.0.4 |
;----------------------------------------------------------- |
; Driver information |
;----------------------------------------------------------- |
[Manufacturer] |
%ARW_MFG% = ARW.Mfg |
[ARW.Mfg] |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258 |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258&SUBSYS_22589050 |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258&SUBSYS_22589050&REV_01 |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258&SUBSYS_22589050&REV_02 |
[ClassInstall32] |
AddReg=PCICC32_class_addreg |
[PCICC32_class_addreg] |
HKR,,,,%PCICC32_class_name% |
HKR,,Icon,0,0 |
;----------------------------------------------------------- |
; General installation section |
;----------------------------------------------------------- |
[CopyFiles_9050] |
pcicc32.sys,,,2 |
;----------------------------------------------------------- |
; Windows 2000 installation section |
;----------------------------------------------------------- |
[Install_PCICC32.NT] |
AddReg = AddRegistry_NT_9050 |
CopyFiles = CopyFiles_9050 |
[Install_PCICC32.NT.Services] |
AddService = pcicc32, 0x00000002, Service_Inst_9050, EventLog_Inst_9050 |
[AddRegistry_NT_9050] |
[Service_Inst_9050] |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 0 ; SERVICE_ERROR_IGNORE |
ServiceBinary = %12%\pcicc32.sys |
;----------------------------------------------------------- |
; Event log registry entries |
;----------------------------------------------------------- |
[EventLog_Inst_9050] |
AddReg = EventLog_AddReg_9050 |
[EventLog_AddReg_9050] |
HKR,,EventMessageFile,0x00020000,"%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\pcicc32.sys" |
HKR,,TypesSupported,0x00010001,7 |
;----------------------------------------------------------- |
; Source file information |
;----------------------------------------------------------- |
[SourceDisksNames.x86] |
1 = %InstallDisk%,"",1 |
[SourceDisksFiles] |
pcicc32.sys = 1 |
[DestinationDirs] |
DefaultDestDir = 12 ; drivers |
;----------------------------------------------------------- |
; String information |
;----------------------------------------------------------- |
[Strings] |
InstallDisk = "ARW Elektronik Windows Driver Installation Disk" |
ARW_MFG = "ARW Elektronik, Germany" |
ARW = "ARW Elektronik, Germany" |
PCICC32_class_name = "ARW BUS Interfaces" |
/wiener_pcicc32/SOURCE/Debug/pcicc32.SYS |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/SOURCE/pcicc32.ncb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/SOURCE/pcicc32.opt |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/SOURCE/pcicc32_drv.h |
---|
0,0 → 1,172 |
#ifndef __PCICC32_DRV_H__ |
#define __PCICC32_DRV_H__ |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32 interface from ARW Elektronik, Germany --------- |
// the main header file of the driver |
// |
// (c) 1999 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistribute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started AR 10.03.2000 |
// dwIrqStatus added, version 2 AR 24.02.2001 |
// with AUTOREAD, version 2.01 AR 17.03.2001 |
// with support for LCR_READ, version 2.02 AR 31.03.2001 |
// changed to VisualStudio 6.0 AR 30.09.2001 |
// compiled with DDK 1/2001 AR 20.11.2001 |
// removed alloc_text cause of WIN2000 problems AR 25.11.2001 |
// version 2.7 released AR 25.11.2001 |
// version 2.8 still experimental AR 26.05.2002 |
// version 2.16 eliminates PLXBUG in WIN2000 AR 05.06.2002 |
// version 2.17 added KeSynchronizeExecution AR 16.06.2002 |
// version 2.18 improved snchronisation AR 18.06.2002 |
// |
//------------------------------------------------------------------------- |
#define DRIVER_VERSION ((2 << 16) | 18) // the only place for version info |
#define DRIVER_VARIANT 0 // mark customisation here |
//------------------------------------------------------------------------- |
//------------------------------------------------------------------------- |
// precautions for debug compile |
#define PCICC32_DEBUG |
#ifndef PCICC32_DEBUG |
#ifdef KdPrint |
#undef KdPrint |
#define KdPrint(x) /* x */ |
#endif |
#endif |
//------------------------------------------------------------------------- |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
#define PCI_MAX_BUSES 4 // buses to search for pciada |
#define PCICC32_MAX_PCIADA 4 // maximum of PCIADA to search for |
#define PCICC32_MAX_CC32 16 // maximum number of CC32 modules connected |
//------------------------------------------------------------------------- |
// DEFINES |
// |
#define PCICC32_VENDOR_ID 0x10B5 |
#define PCICC32_DEVICE_ID 0x2258 |
#define PCICC32_SUBSYS_ID 0x2258 |
#define PCICC32_SUBVEN_ID 0x9050 |
#define LCR_SPACE 256 // space in bytes of LCR |
#define IFR_SPACE 32768 // space in bytes of IFR |
//---------------------------------------------------------------------------------------- |
// macros for simple address calculation |
// |
#define _WORD_NAF(base, n, a, f) ((USHORT *)((ULONG)base + (n << 10) + (a << 6) + ((f & 0xf) << 2))) |
#define _DWORD_NAF(base, n, a, f) ((ULONG *)((ULONG)base + (n << 10) + (a << 6) + ((f & 0xf) << 2))) |
//------------------------------------------------------------------------- |
// TYPEDEFS |
// |
typedef struct _FILE_OBJ |
{ |
USHORT uwAssociatedCC32; // which CC32 number it belongs |
USHORT wAccessType; // WORD or LONGWORD |
USHORT wBlockTransfer; // != 0 for block transfer |
void (*fRead)(void *to, void *from); // resulting read |
void (*fWrite)(void *to, void *from); // resulting write |
PIRP blockingIrp; // if != 0 then a blocking IRP is waiting |
} FILE_OBJ, *PFILE_OBJ; |
typedef struct |
{ |
int Bus; // bus number of pciada |
PCI_SLOT_NUMBER Slot; // slot + function number encoded |
PCI_COMMON_CONFIG PCIDevice; // content of pcr, only for direct HW related functions |
PHYSICAL_ADDRESS pvPhysLcr; // local config register, unmapped and mapped |
PHYSICAL_ADDRESS pvPhysIfr; // interface registers, unmapped and mapped |
PVOID pvVirtLcr; // virtual LCR space |
PVOID pvVirtIfr; // virtual IFR space |
PKINTERRUPT InterruptObject; // points to the associated interrupt obj |
KIRQL Irql; // virtual Irq level, unmapped and mapped |
ULONG Vector; // mapped system vector, unmapped and mapped |
KAFFINITY Affinity; // which processor uses this irq, unmapped and mapped |
PUSHORT pwCntrl; // LCR Cntrl Offset @ LCR + 0x50 |
PUSHORT pwIntCSR; // LCR IntCSR Offset @ LCR + 0x4C |
ULONG dwLinkCount; // how often this interface is requested |
BOOLEAN bConnected; // CC32 is connected and powered |
USHORT wModuleNumber; // Number (Jumper) of CC32 |
USHORT wFPGAVersion; // Revision of (CC32) FPGA |
USHORT wModuleType; // Type of (CC32) module |
KDPC kDPCobj; // custom DPC object for irq tunneling |
ULONG dwIrqStatus; // the last unrequested status of a interrupt |
PIRP *pBlockingIrp; // points to File or == NULL when no blocking in progress |
FILE_OBJ *pIrqControlFile; // this file controls the global enable / disable IRQ |
} PCIADA; |
typedef struct _DEVICE_EXT |
{ |
PDEVICE_OBJECT DeviceObject; // points to myself and carries the pointer to DriverObject |
PIRP actualIrp; // points to .. |
int nPCIADAs; // how many PCIADAs are found |
PCIADA pciada[PCICC32_MAX_PCIADA]; // for each PCIADA a descriptor |
PCIADA *cc32[PCICC32_MAX_CC32]; // points to PCIADA to which it belongs |
int nInitState; // tracks the state of initialisation |
} DEVICE_EXT; |
// Prototypes to support following pragmas |
NTSTATUS DriverEntry(PDRIVER_OBJECT driverObj, PUNICODE_STRING regPath); |
NTSTATUS PCICC32Open(PDEVICE_OBJECT deviceObj, PIRP irp); |
NTSTATUS PCICC32Close(PDEVICE_OBJECT deviceObj, PIRP irp); |
VOID PCICC32Unload(PDRIVER_OBJECT driverObj); |
NTSTATUS SearchDevices(PDEVICE_OBJECT device_Obj); |
NTSTATUS PLX9050BugFix(PDEVICE_OBJECT deviceObj); |
NTSTATUS PCICC32ReserveResources(PDEVICE_OBJECT device_Obj); |
NTSTATUS PCICC32ExtractResources(PCIADA *pciada, PCM_RESOURCE_LIST pList); |
NTSTATUS PCICC32FreeResources(PDEVICE_OBJECT device_Obj); |
NTSTATUS PCICC32TranslateBusAddress(PDEVICE_OBJECT device_Obj); |
NTSTATUS PCICC32MapIOspace(PDEVICE_OBJECT device_object); |
VOID PCICC32SoftInit(PDEVICE_OBJECT device_Obj); |
NTSTATUS InitializeCustomDPCObjects(PDEVICE_OBJECT device_object); |
/* release all this procedures after init of the driver */ |
#ifdef ALLOC_PRAGMA |
#pragma alloc_text (init, DriverEntry) |
#pragma alloc_text (init, SearchDevices) |
#pragma alloc_text (init, PLX9050BugFix) |
#pragma alloc_text (init, PCICC32ReserveResources) |
#pragma alloc_text (init, PCICC32ExtractResources) |
#pragma alloc_text (init, PCICC32TranslateBusAddress) |
#pragma alloc_text (init, PCICC32MapIOspace) |
#pragma alloc_text (init, PCICC32SoftInit) |
#pragma alloc_text (init, InitializeCustomDPCObjects) |
#endif |
/* put all this procedures in the paged memory-pool, all called at passiv Level */ |
#ifdef ALLOC_PRAGMA |
#pragma alloc_text (page, PCICC32Open) |
#pragma alloc_text (page, PCICC32Close) |
#pragma alloc_text (page, PCICC32Unload) |
#pragma alloc_text (page, PCICC32FreeResources) |
#endif |
#endif // __PCICC32_DRV_H__ |
/wiener_pcicc32/SOURCE/pcicc32_v.c |
---|
0,0 → 1,196 |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32 interface from ARW Elektronik, Germany -------- |
// all around recognition and basic services of VMEMM |
// |
// (c) 2000-2002 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started from pcivme_v.c AR 02.07.2000 |
// changed making procedure (only VCC > 6.0) AR 30.05.2002 |
// |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
#include <ntddk.h> |
#include <pcicc32_drv.h> |
#include <pcicc32_v.h> |
#include <pcicc32_local.h> // all around the pciada interface |
#ifndef WORD // don't touch include files of WIN95 driver |
#define WORD USHORT |
#endif |
#ifndef DWORD |
#define DWORD ULONG |
#endif |
//------------------------------------------------------------------------ |
// PROTOTYPES |
// |
//------------------------------------------------------------------------ |
// GLOBALS |
// |
//------------------------------------------------------------------------ |
// FUNCTIONS |
// |
//------------------------------------------------------------------------ |
// test connection to VMEMM devices without disturbing anything |
// |
//--------------------------------------------------------------------- |
// checks a connection with a small test pattern |
// |
NTSTATUS TestConnection(PCIADA *pciada) |
{ |
USHORT *pwADRH = (USHORT *)_WORD_NAF(pciada->pvVirtIfr, 30, 1, 0); |
USHORT *pwADRL = (USHORT *)_WORD_NAF(pciada->pvVirtIfr, 30, 0, 0); |
int i; |
USHORT wRet; |
USHORT wADRHContent; |
USHORT wADRLContent; |
KdPrint(("TestConnection()\n")); |
wADRHContent = READ_REGISTER_USHORT(pwADRH); // save previous content |
wADRLContent = READ_REGISTER_USHORT(pwADRL); |
for (i = 0; i < 10000; i++) |
{ |
WRITE_REGISTER_USHORT(pwADRH, 0x5555); |
WRITE_REGISTER_USHORT(pwADRL, 0xAAAA); |
wRet = READ_REGISTER_USHORT(pwADRH); |
if (wRet != 0x5555) return STATUS_UNSUCCESSFUL; |
WRITE_REGISTER_USHORT(pwADRH, 0xAAAA); |
WRITE_REGISTER_USHORT(pwADRL, 0x5555); |
wRet = READ_REGISTER_USHORT(pwADRH); |
if (wRet != 0xAAAA) return STATUS_UNSUCCESSFUL; |
WRITE_REGISTER_USHORT(pwADRH, 0x0000); |
WRITE_REGISTER_USHORT(pwADRL, 0xFFFF); |
wRet = READ_REGISTER_USHORT(pwADRH); |
if (wRet != 0x0000) return STATUS_UNSUCCESSFUL; |
WRITE_REGISTER_USHORT(pwADRH, 0xFFFF); |
WRITE_REGISTER_USHORT(pwADRL, 0x0000); |
wRet = READ_REGISTER_USHORT(pwADRH); |
if (wRet != 0xFFFF) return STATUS_UNSUCCESSFUL; |
} |
WRITE_REGISTER_USHORT(pwADRH, wADRHContent); // restore previous content |
WRITE_REGISTER_USHORT(pwADRL, wADRLContent); |
KdPrint(("TestConnection() OK.\n")); |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// scan VMEMM devices without disturbing anything |
// |
NTSTATUS PCICC32ScanCC32(PDEVICE_OBJECT deviceObj) |
{ |
int i; |
int nPCIADAs = ((DEVICE_EXT*)(deviceObj->DeviceExtension))->nPCIADAs; |
PCIADA *pciada; |
USHORT wCntrl; |
USHORT wIntCSR; |
USHORT wModuleStatus; |
KdPrint(("PCICC32ScanCC32(nPCIADAs = %d)\n", nPCIADAs)); |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &((DEVICE_EXT*)(deviceObj->DeviceExtension))->pciada[i]; |
wCntrl = READ_REGISTER_USHORT(pciada->pwCntrl); // save it for later use |
wIntCSR = READ_REGISTER_USHORT(pciada->pwIntCSR); |
KdPrint(("wCntrl = 0x%04x, wIntCSR = 0x%04x\n", wCntrl, wIntCSR)); |
WRITE_REGISTER_USHORT(pciada->pwCntrl, INHIBIT_CC32); // switch off before open |
WRITE_REGISTER_USHORT(pciada->pwIntCSR, DISABLE_PCIADA_IRQS); |
WRITE_REGISTER_USHORT(pciada->pwCntrl, RELEASE_CC32); // open it for test |
if (wCntrl & 0x0800) |
{ |
if (TestConnection(pciada) == STATUS_SUCCESS) |
{ |
wModuleStatus = READ_REGISTER_USHORT(pciada->pvVirtIfr); |
pciada->bConnected = TRUE; |
// interpret the content |
pciada->wModuleNumber = (wModuleStatus & MASK_MODNR) >> 4; |
pciada->wFPGAVersion = (wModuleStatus & MASK_FPGA) >> 8; |
pciada->wModuleType = (wModuleStatus & MASK_MODTYPE) >> 12; |
KdPrint(("PCIADA %d <-> CC32 %d\n", i, pciada->wModuleNumber)); |
} |
else |
pciada->wModuleNumber = 0xFFFF; // not recognized, take it out |
} |
else |
pciada->wModuleNumber = 0xFFFF; // not recognized, take it out |
if (pciada->wModuleNumber != 0xFFFF) |
WRITE_REGISTER_USHORT(pciada->pwCntrl, wCntrl); // restore state |
else |
WRITE_REGISTER_USHORT(pciada->pwCntrl, INHIBIT_CC32); |
WRITE_REGISTER_USHORT(pciada->pwIntCSR, wIntCSR); // restore interrupt masks |
} |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// deinit all PCIADAs in a passive state |
// |
NTSTATUS PCICC32DeInitPCIADAs(PDEVICE_OBJECT deviceObj) |
{ |
int i; |
DEVICE_EXT *pDevExt = (DEVICE_EXT*)deviceObj->DeviceExtension; |
int nPCIADAs = pDevExt->nPCIADAs; |
PCIADA *pciada; |
KdPrint(("PCICC32DeInitPCIADAs()\n")); |
// dis connect the interrupts to service routines |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
WRITE_REGISTER_USHORT(pciada->pwCntrl, INHIBIT_CC32); |
// this is the same as globalInterruptDisable(pciada); |
WRITE_REGISTER_USHORT(pciada->pwIntCSR, DISABLE_PCIADA_IRQS); |
} |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// switches pciada on or off |
// |
void enableCC32(PCIADA *pciada) |
{ |
WRITE_REGISTER_USHORT(pciada->pwCntrl, RELEASE_CC32); |
} |
void disableCC32(PCIADA *pciada) |
{ |
WRITE_REGISTER_USHORT(pciada->pwCntrl, INHIBIT_CC32); |
} |
/wiener_pcicc32/SOURCE/pcicc32_io.c |
---|
0,0 → 1,757 |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32 interface from ARW Elektronik, Germany --------- |
// the ioctl functions |
// |
// (c) 1999-2002 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started AR 03.07.1999 |
// first release 1.0 AR 17.10.1999 |
// added access to PLX LC-Register AR 30.03.2001 |
// changed making procedure (only VCC > 6.0) AR 30.05.2002 |
// multiple interrupt enable allowed AR 01.06.2002 |
// added KeSynchronizeExecution for interrupt sync AR 16.06.2002 |
// extended ioctl_irq_status_kernel AR 18.06.2002 |
// |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
#include <ntddk.h> |
#include <devioctl.h> |
#include <pcicc32_drv.h> |
#include <pcicc32.h> |
#include <pcicc32_v.h> |
#include <pcicc32_io.h> |
#include <pcicc32_local.h> |
#include <pcicc32_i.h> |
//------------------------------------------------------------------------ |
// DEFINES |
// |
// buffers usage must match the corresponding ioctl code! |
#define SET_BUFFERS_METHOD_OUT_DIRECT \ |
{\ |
InputLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;\ |
OutputLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;\ |
pInputBuffer = ((void *)(Irp->AssociatedIrp.SystemBuffer));\ |
pOutputBuffer = ((void *)(MmGetSystemAddressForMdl(Irp->MdlAddress)));\ |
} |
#define SET_BUFFERS_METHOD_IN_DIRECT \ |
{\ |
InputLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;\ |
OutputLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;\ |
pInputBuffer = ((void *)(MmGetSystemAddressForMdl(Irp->MdlAddress)));\ |
pOutputBuffer = ((void *)(Irp->AssociatedIrp.SystemBuffer));\ |
} |
#define SET_BUFFERS_METHOD_BUFFERED \ |
{\ |
InputLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;\ |
OutputLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;\ |
pInputBuffer = pOutputBuffer = ((void *)(Irp->AssociatedIrp.SystemBuffer));\ |
} |
#define COMPLETE_REQUEST \ |
{\ |
if (Status != STATUS_PENDING)\ |
{\ |
Irp->IoStatus.Status = Status; \ |
Irp->IoStatus.Information = irp_info; \ |
IoCompleteRequest(Irp,IO_NO_INCREMENT); \ |
}\ |
} |
// compatibilty issues to WIN95 driver calls |
#ifndef WORD |
#define WORD USHORT |
#endif |
#ifndef DWORD |
#define DWORD ULONG |
#endif |
#ifndef BYTE |
#define BYTE UCHAR |
#endif |
#ifndef BOOL |
#define BOOL BOOLEAN |
#endif |
//------------------------------------------------------------------------- |
// TYPEDEFS |
// |
typedef struct |
{ |
FILE_OBJ *file_obj; |
PCIADA *pciada; |
PCICC32_IRQ_RESPONSE *pIrqStatus; |
PIRP *Irp; |
ULONG *irp_info; |
NTSTATUS *Status; |
} IOCTL_IRQ_STATUS_CONTEXT; |
//-------------------------------------------------------------------------- |
// LOCAL FUNCTIONS |
// |
//-------------------------------------------------------------------------- |
// fast read or write functions - portable - |
static void readWord(void *to, void *from) |
{ |
*(PUSHORT)to = READ_REGISTER_USHORT((PUSHORT)from); |
} |
static void readLong(void *to, void *from) |
{ |
*(PULONG)to = READ_REGISTER_ULONG((PULONG)from); |
} |
static void writeWord(void *to, void *from) |
{ |
WRITE_REGISTER_USHORT((PUSHORT)to, *(PUSHORT)from); |
} |
static void writeLong(void *to, void *from) |
{ |
WRITE_REGISTER_ULONG((PULONG)to, *(PULONG)from); |
} |
//------------------------------------------------------------------------ |
// init the interface with build in and user supplied constants |
static BOOLEAN InitInterface(PVOID pvLcr, PVOID pvIfr) |
{ |
return TRUE; |
} |
// deinit the interface with user supplied and build in constants |
static BOOLEAN DeInitInterface(PVOID pvLcr, PVOID pvIfr) |
{ |
return TRUE; |
} |
//------------------------------------------------------------------------ |
// the default cancel routine for an queued Irp |
// |
void CancelRequest(PDEVICE_OBJECT device_Obj, PIRP Irp) |
{ |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
PCIADA *pciada = pDevExt->cc32[file_obj->uwAssociatedCC32]; |
if (pciada->pBlockingIrp == (PIRP *)NULL) |
{ |
IoReleaseCancelSpinLock(Irp->CancelIrql); |
KdPrint(("Nothing to do: CancelRequest(0x%08x)\n", Irp)); |
return; |
} |
else |
{ |
// release control of interrupt |
if (pciada->pIrqControlFile == file_obj) |
{ |
pciada->pIrqControlFile = (FILE_OBJ *)NULL; |
globalInterruptDisable(pciada); |
} |
// cancel any blocking Irp origin from this file |
if (file_obj->blockingIrp != (PIRP)NULL) |
file_obj->blockingIrp = (PIRP)NULL; |
if (pciada->pBlockingIrp == &file_obj->blockingIrp) |
pciada->pBlockingIrp = (PIRP *)NULL; |
IoReleaseCancelSpinLock(Irp->CancelIrql); |
KdPrint(("Done: CancelRequest(0x%08x)\n", Irp)); |
Irp->IoStatus.Status = STATUS_CANCELLED; |
Irp->IoStatus.Information = 0; |
IoCompleteRequest(Irp, IO_NO_INCREMENT); |
} |
} |
//------------------------------------------------------------------------ |
// the custom deffered routine to finish blocking io on irq_block |
void fMyDefferedRoutine(PKDPC Dpc, PVOID pvDevice_object, PVOID pvPciada, PVOID pdwIrqStatus) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = sizeof(PCICC32_IRQ_RESPONSE); |
PIRP Irp = (PIRP)NULL; |
PCIADA *pciada = (PCIADA *)pvPciada; |
KIRQL oldIrqlCancel; |
KdPrint(("fMyDefferedRoutine(0x%08x)\n", pciada->dwIrqStatus)); |
// beware off damage due to intercept at cancel of thread |
IoAcquireCancelSpinLock(&oldIrqlCancel); |
// get my associated packet |
if (pciada->pBlockingIrp != (PIRP *)NULL) |
{ |
Irp = *pciada->pBlockingIrp; |
if (Irp != (PIRP)NULL) // then a blcoking Irp is waiting |
{ |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
PCICC32_IRQ_RESPONSE *pIrqStatus = (PCICC32_IRQ_RESPONSE *)(Irp->AssociatedIrp.SystemBuffer); |
// fill the response structure |
pIrqStatus->dwInterruptFlags = pciada->dwIrqStatus; |
pciada->dwIrqStatus = 0; // to prevent a following direct return |
pIrqStatus->dwInterface = file_obj->uwAssociatedCC32; |
// release the cancel routine from this Irp |
IoSetCancelRoutine(Irp, NULL); |
COMPLETE_REQUEST; |
file_obj->blockingIrp = (PIRP)NULL; |
} |
pciada->pBlockingIrp = (PIRP *)NULL; |
} |
// release the spin locks |
IoReleaseCancelSpinLock(oldIrqlCancel); |
} |
//------------------------------------------------------------------------ |
// if the interrupt is disabled for a blocking path, cancel the block |
static void ReleaseBlockingIrp(PDEVICE_OBJECT device_Obj, PCIADA *pciada, PFILE_OBJ pFile_obj) |
{ |
NTSTATUS Status = STATUS_CANCELLED; |
ULONG irp_info = sizeof(PCICC32_IRQ_RESPONSE); |
PIRP Irp = (PIRP)NULL; |
KIRQL oldIrqlCancel; |
KdPrint(("ReleaseBlockingIrp()\n")); |
// beware off damage due to intercept with cancel of thread |
IoAcquireCancelSpinLock(&oldIrqlCancel); |
if (pciada->pBlockingIrp != (PIRP *)NULL) |
{ |
// get my associated packet |
Irp = *pciada->pBlockingIrp; |
if (Irp != (PIRP)NULL) |
{ |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
PCICC32_IRQ_RESPONSE *pIrqStatus = (PCICC32_IRQ_RESPONSE *)(Irp->AssociatedIrp.SystemBuffer); |
ULONG irp_info = sizeof(PCICC32_IRQ_RESPONSE); |
pIrqStatus->dwInterruptFlags = pciada->dwIrqStatus; |
pIrqStatus->dwInterface = file_obj->uwAssociatedCC32; |
// release the cancel routine from this Irp |
IoSetCancelRoutine(Irp, NULL); |
COMPLETE_REQUEST; |
file_obj->blockingIrp = (PIRP)NULL; |
} |
pciada->pBlockingIrp = (PIRP *)NULL; // mark the storage for blocking Irp free |
} |
// release the spin locks |
IoReleaseCancelSpinLock(oldIrqlCancel); |
} |
//------------------------------------------------------------------------ |
// all functions called from ioctl jump table |
// |
//------------------------------------------------------------------------ |
// a dummy entry because of compatibiltiy (near) WIN95 driver |
static NTSTATUS ioctl_dummy(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = 0; |
PVOID pInputBuffer,pOutputBuffer; |
ULONG InputLength, OutputLength; |
char *pCommand; |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
SET_BUFFERS_METHOD_BUFFERED; |
pCommand = (char *)pInputBuffer; |
KdPrint(("ioctl_dummy(%d)\n", file_obj->uwAssociatedCC32)); |
// do what must be here in between ----------- |
// do what must be here in between --- end --- |
COMPLETE_REQUEST; |
KdPrint(("ioctl_dummy(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// requests status |
static NTSTATUS ioctl_get_status(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = sizeof(PCICC32_STATUS); |
PVOID pInputBuffer,pOutputBuffer; |
ULONG InputLength, OutputLength; |
PCIADA *pciada; |
DEVICE_EXT *pDevExt; |
PCICC32_STATUS *pStatus; |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
USHORT wModuleNumber = file_obj->uwAssociatedCC32; |
// do what must be here in between ----------- |
pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
SET_BUFFERS_METHOD_BUFFERED; |
KdPrint(("ioctl_get_status(%d)\n", wModuleNumber)); |
// do what must be here in between ----------- |
if (OutputLength >= sizeof(PCICC32_STATUS)) |
{ |
USHORT temp; |
pStatus = (PCICC32_STATUS *)pOutputBuffer; |
pciada = pDevExt->cc32[wModuleNumber]; |
pStatus->dwInterface = wModuleNumber; |
temp = READ_REGISTER_USHORT(pciada->pwIntCSR); |
pStatus->bTimeout = (temp & 0x0020) ? 1 : 0; |
pStatus->bInterrupt = (temp & 0x0004) ? 1 : 0; |
} |
else |
Status = STATUS_BUFFER_TOO_SMALL; |
// do what must be here in between --- end --- |
COMPLETE_REQUEST; |
KdPrint(("ioctl_get_status(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// clears status |
static BOOLEAN ioctl_clear_status_kernel(PVOID pvContext) |
{ |
PCIADA *pciada = (PCIADA *)pvContext; |
USHORT wCntrl; |
// get current Cntrl - and clear interrupt |
wCntrl = READ_REGISTER_USHORT(pciada->pwCntrl); |
wCntrl &= ~0x0100; // disable |
WRITE_REGISTER_USHORT(pciada->pwCntrl, wCntrl); |
wCntrl |= 0x0100; // enable again |
WRITE_REGISTER_USHORT(pciada->pwCntrl, wCntrl); |
return TRUE; |
} |
static NTSTATUS ioctl_clear_status(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = 0; |
PVOID pInputBuffer,pOutputBuffer; |
ULONG InputLength, OutputLength; |
PCIADA *pciada; |
DEVICE_EXT *pDevExt; |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
USHORT wModuleNumber = file_obj->uwAssociatedCC32; |
// do what must be here in between ----------- |
pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
SET_BUFFERS_METHOD_BUFFERED; |
KdPrint(("ioctl_clear_status(%d)\n", wModuleNumber)); |
// do what must be here in between ----------- |
pciada = pDevExt->cc32[wModuleNumber]; |
KeSynchronizeExecution(pciada->InterruptObject, ioctl_clear_status_kernel, pciada); |
// do what must be here in between --- end --- |
COMPLETE_REQUEST; |
KdPrint(("ioctl_clear_status() OK\n")); |
return Status; |
} |
//------------------------------------------------------------------------ |
// set parameter for this path for future access to CC32 |
static NTSTATUS ioctl_access_para(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = 0; |
PVOID pInputBuffer,pOutputBuffer; |
ULONG InputLength, OutputLength; |
PCICC32_ACCESS_COMMAND *pAccessPara; |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
USHORT wModuleNumber = file_obj->uwAssociatedCC32; |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
PCIADA *pciada = pDevExt->cc32[wModuleNumber]; |
SET_BUFFERS_METHOD_BUFFERED; |
KdPrint(("ioctl_access_para(%d)\n", wModuleNumber)); |
pAccessPara = (PCICC32_ACCESS_COMMAND *)pInputBuffer; |
// do here in between what has to be done ----------------- |
file_obj->wAccessType = pAccessPara->wAccessType; |
file_obj->wBlockTransfer = pAccessPara->wBlockTransfer; |
pAccessPara->dwInterface = wModuleNumber; |
switch (pAccessPara->wAccessType) |
{ |
case WORD_ACCESS: file_obj->fRead = readWord; |
file_obj->fWrite = writeWord; |
break; |
case LONG_ACCESS: file_obj->fRead = readLong; |
file_obj->fWrite = writeLong; |
break; |
default: Status = STATUS_UNSUCCESSFUL; |
break; |
} |
// do here in between what has to be done end ------------- |
COMPLETE_REQUEST; |
KdPrint(("ioctl_access_para(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// allow or inhibit interrupt requests from either CC32 or thru local timeout |
static NTSTATUS ioctl_control_interrupts(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = 0; |
PVOID pInputBuffer,pOutputBuffer; |
ULONG InputLength, OutputLength; |
PCICC32_IRQ_CONTROL *pIrqControlIn, *pIrqControlOut; |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
USHORT wModuleNumber = file_obj->uwAssociatedCC32; |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
PCIADA *pciada = pDevExt->cc32[wModuleNumber]; |
SET_BUFFERS_METHOD_BUFFERED; |
KdPrint(("ioctl_control_interrupts(%d)\n", wModuleNumber)); |
pIrqControlIn = (PCICC32_IRQ_CONTROL *)pInputBuffer; |
pIrqControlOut = (PCICC32_IRQ_CONTROL *)pOutputBuffer; |
// do here in between what has to be done ----------------- |
if (pIrqControlIn->wEnable) |
{ |
// reserve the controlling of interrupts for this path |
if ((pciada->pIrqControlFile == (FILE_OBJ *)NULL) || |
(pciada->pIrqControlFile == file_obj)) |
{ |
pciada->pIrqControlFile = file_obj; |
globalInterruptEnable(pciada); |
} |
else |
Status = STATUS_DEVICE_BUSY; |
} |
else |
{ |
// nobody else is allowed to disable interrupts |
if (pciada->pIrqControlFile == file_obj) |
{ |
pciada->pIrqControlFile = (FILE_OBJ *)NULL; |
globalInterruptDisable(pciada); |
} |
else |
Status = STATUS_DEVICE_BUSY; |
} |
// give back if the user grants space |
if (OutputLength >= sizeof(PCICC32_IRQ_CONTROL)) |
{ |
pIrqControlOut->dwInterface = wModuleNumber; |
pIrqControlOut->wEnable = globalInterruptEnabledStatus(pciada); |
} |
// do here in between what has to be done end ------------- |
COMPLETE_REQUEST; |
KdPrint(("ioctl_control_interrupts(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// implements a blocking io-call to get irq status. |
static BOOLEAN ioctl_irq_status_kernel(PVOID pvContext) |
{ |
IOCTL_IRQ_STATUS_CONTEXT *context = (IOCTL_IRQ_STATUS_CONTEXT *)pvContext; |
KIRQL oldIrql; |
if (context->pciada->dwIrqStatus) |
{ |
// there is a pending interrupt - return immediately |
KdPrint(("ioctl_irq_status(), direct return (0x%08x)\n", context->pciada->dwIrqStatus)); |
context->pIrqStatus->dwInterruptFlags = context->pciada->dwIrqStatus; |
context->pciada->dwIrqStatus = 0; // release pending status |
*context->irp_info = sizeof(PCICC32_IRQ_RESPONSE); |
} |
else |
{ |
// make the request blocking |
IoAcquireCancelSpinLock(&oldIrql); |
if ((*context->Irp)->Cancel) // cancel while doing |
{ |
KdPrint(("ioctl_irq_status(), canceled return\n")); |
*context->Status = STATUS_CANCELLED; |
} |
else |
{ |
KdPrint(("ioctl_irq_status(), blocking\n")); |
if (context->pciada->pBlockingIrp != (PIRP *)NULL) |
{ |
// a Irp is still waiting |
*context->Status = STATUS_DEVICE_BUSY; |
} |
else |
{ |
context->file_obj->blockingIrp = *context->Irp; |
context->pciada->pBlockingIrp = &context->file_obj->blockingIrp; |
*context->Status = STATUS_PENDING; |
// mark irp as pending and return |
IoMarkIrpPending(*context->Irp); |
IoSetCancelRoutine(*context->Irp, CancelRequest); |
} |
} // if (Irp->Cancel) ... |
} |
return TRUE; |
} |
static NTSTATUS ioctl_irq_status(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = 0; |
PVOID pInputBuffer,pOutputBuffer; |
ULONG InputLength, OutputLength; |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
USHORT wModuleNumber; |
IOCTL_IRQ_STATUS_CONTEXT context; |
SET_BUFFERS_METHOD_BUFFERED; |
context.file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
wModuleNumber = context.file_obj->uwAssociatedCC32; |
context.pciada = pDevExt->cc32[wModuleNumber]; |
context.pIrqStatus = (PCICC32_IRQ_RESPONSE *)pOutputBuffer; |
context.Status = &Status; |
context.irp_info = &irp_info; |
context.Irp = &Irp; |
KdPrint(("ioctl_irq_status(%d)\n", wModuleNumber)); |
// do here in between what has to be done ----------------- |
if (OutputLength < sizeof(PCICC32_IRQ_RESPONSE)) |
Status = STATUS_BUFFER_TOO_SMALL; |
else |
{ |
context.pIrqStatus->dwInterface = wModuleNumber; |
KeSynchronizeExecution(context.pciada->InterruptObject, ioctl_irq_status_kernel, &context); |
} |
// do here in between what has to be done end ------------- |
COMPLETE_REQUEST; |
KdPrint(("ioctl_irq_status(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// for test and debug purposes: direkt access to PLX LCR space |
static NTSTATUS ioctl_access_lcr(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = 0; |
PVOID pInputBuffer,pOutputBuffer; |
ULONG InputLength, OutputLength; |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
USHORT wModuleNumber = file_obj->uwAssociatedCC32; |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
PCIADA *pciada = pDevExt->cc32[wModuleNumber]; |
PCICC32_LCR_ACCESS *pAccessOut; |
PCICC32_LCR_ACCESS *pAccessIn; |
SET_BUFFERS_METHOD_BUFFERED; |
KdPrint(("ioctl_access_lcr(%d)\n", wModuleNumber)); |
pAccessOut = (PCICC32_LCR_ACCESS *)pOutputBuffer; |
pAccessIn = (PCICC32_LCR_ACCESS *)pInputBuffer; |
// do here in between what has to be done ----------------- |
if (OutputLength < sizeof(PCICC32_LCR_ACCESS)) |
Status = STATUS_BUFFER_TOO_SMALL; |
else |
{ |
*pAccessOut = *pAccessIn; |
pAccessOut->dwInterface = wModuleNumber; |
if (pAccessIn->wRegisterAddress <= 0x52) |
{ |
// 1st part: long word accesses |
if (pAccessIn->bBytesLane == LONG_ACCESS) |
{ |
if (pAccessIn->wRegisterAddress & 0x0003) |
Status = STATUS_INSTRUCTION_MISALIGNMENT; |
else |
{ |
ULONG *pdwVirtAddress; |
ULONG dwDummy; |
pdwVirtAddress = (ULONG *)((ULONG)pciada->pvVirtLcr + pAccessIn->wRegisterAddress); |
switch (pAccessIn->bAccessMode) |
{ |
case LCR_WRITE: |
WRITE_REGISTER_ULONG(pdwVirtAddress, pAccessIn->dwContent); |
pAccessOut->dwContent = READ_REGISTER_ULONG(pdwVirtAddress); |
break; |
case LCR_OR: |
dwDummy = READ_REGISTER_ULONG(pdwVirtAddress); |
dwDummy |= pAccessIn->dwContent; |
WRITE_REGISTER_ULONG(pdwVirtAddress, dwDummy); |
pAccessOut->dwContent = READ_REGISTER_ULONG(pdwVirtAddress); |
break; |
case LCR_AND: |
dwDummy = READ_REGISTER_ULONG(pdwVirtAddress); |
dwDummy &= pAccessIn->dwContent; |
WRITE_REGISTER_ULONG(pdwVirtAddress, dwDummy); |
pAccessOut->dwContent = READ_REGISTER_ULONG(pdwVirtAddress); |
break; |
case LCR_WRITE_ONLY: |
WRITE_REGISTER_ULONG(pdwVirtAddress, pAccessIn->dwContent); |
break; |
case LCR_READ: |
pAccessOut->dwContent = READ_REGISTER_ULONG(pdwVirtAddress); |
break; |
default: Status = STATUS_ILLEGAL_INSTRUCTION; |
} |
} |
} |
// 2nd part: short word accesses |
if (pAccessIn->bBytesLane == WORD_ACCESS) |
{ |
if (pAccessIn->wRegisterAddress & 0x0001) |
Status = STATUS_INSTRUCTION_MISALIGNMENT; |
else |
{ |
USHORT *pwVirtAddress; |
USHORT wDummy; |
pwVirtAddress = (USHORT *)((ULONG)pciada->pvVirtLcr + pAccessIn->wRegisterAddress); |
switch (pAccessIn->bAccessMode) |
{ |
case LCR_WRITE: |
WRITE_REGISTER_USHORT(pwVirtAddress, (USHORT)pAccessIn->dwContent); |
pAccessOut->dwContent = READ_REGISTER_USHORT(pwVirtAddress); |
break; |
case LCR_OR: |
wDummy = READ_REGISTER_USHORT(pwVirtAddress); |
wDummy |= (USHORT)pAccessIn->dwContent; |
WRITE_REGISTER_USHORT(pwVirtAddress, wDummy); |
pAccessOut->dwContent = READ_REGISTER_USHORT(pwVirtAddress); |
break; |
case LCR_AND: |
wDummy = READ_REGISTER_USHORT(pwVirtAddress); |
wDummy &= (USHORT)pAccessIn->dwContent; |
WRITE_REGISTER_USHORT(pwVirtAddress, wDummy); |
pAccessOut->dwContent = READ_REGISTER_USHORT(pwVirtAddress); |
break; |
case LCR_WRITE_ONLY: |
WRITE_REGISTER_USHORT(pwVirtAddress, (USHORT)pAccessIn->dwContent); |
break; |
case LCR_READ: |
pAccessOut->dwContent = READ_REGISTER_USHORT(pwVirtAddress); |
break; |
default: Status = STATUS_ILLEGAL_INSTRUCTION; |
break; |
} |
} |
} |
// 3rd part: check illegal byte lanes |
if (!((pAccessIn->bBytesLane == LONG_ACCESS) || (pAccessIn->bBytesLane == WORD_ACCESS))) |
Status = STATUS_ILLEGAL_INSTRUCTION; |
} |
else |
Status = STATUS_ILLEGAL_INSTRUCTION; |
} |
// do here in between what has to be done end ------------- |
if (Status == STATUS_SUCCESS) |
irp_info = sizeof(PCICC32_LCR_ACCESS); |
COMPLETE_REQUEST; |
KdPrint(("ioctl_access_lcr(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// the ultimate jumptable for ioctl |
// |
NTSTATUS (*ioctl[])(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) = |
{ |
ioctl_dummy, // 0 |
ioctl_dummy, // 4 |
ioctl_get_status, // 8 |
ioctl_clear_status, // 0x0c |
ioctl_access_para, // 0x10 |
ioctl_control_interrupts, // 0x14 |
ioctl_dummy, // 0x18 |
ioctl_irq_status, // 0x1c |
ioctl_access_lcr // 0x20 |
}; |
/wiener_pcicc32/SOURCE/pcicc32_v.h |
---|
0,0 → 1,34 |
#ifndef __PCICC32_V_H__ |
#define __PCICC32_V_H__ |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32terface from ARW Elektronik, Germany --------- |
// header file belonging to pcicc32_v.c |
// |
// (c) 1999 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started AR 02.07.2000 |
// |
//------------------------------------------------------------------------- |
// DEFINES |
// |
#include <pcicc32_drv.h> |
//------------------------------------------------------------------------- |
// PROTOTYPES |
// |
NTSTATUS PCICC32ScanCC32(PDEVICE_OBJECT deviceObj); |
NTSTATUS PCICC32DeInitPCIADAs(PDEVICE_OBJECT deviceObj); |
void enableCC32(PCIADA *pciada); |
void disableCC32(PCIADA *pciada); |
#endif // __PCICC32_V_H__ |
/wiener_pcicc32/SOURCE/pcicc32.inf |
---|
0,0 → 1,104 |
;=========================================================== |
; File : pcicc32.inf |
; |
; Abstract: Windows 2000 INF for PCICC32 boards from ARW Elektronik, Germany |
; |
;=========================================================== |
[Version] |
Signature = $CHICAGO$ |
Provider = %ARW% |
Class = %PCICC32_class_name% |
ClassGUID = {c4ad1dfa-3e35-4659-bf2b-c83cda6833e1} |
DriverVer = 11/25/2001,2.3.0.0 |
;----------------------------------------------------------- |
; Driver information |
;----------------------------------------------------------- |
[Manufacturer] |
%ARW_MFG% = ARW.Mfg |
[ARW.Mfg] |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258 |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258&SUBSYS_22589050 |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258&SUBSYS_22589050&REV_01 |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258&SUBSYS_22589050&REV_02 |
[ClassInstall32] |
AddReg=PCICC32_class_addreg |
[PCICC32_class_addreg] |
HKR,,,,%PCICC32_class_name% |
HKR,,Icon,0,0 |
;----------------------------------------------------------- |
; General installation section |
;----------------------------------------------------------- |
[CopyFiles_9050] |
pcicc32.sys,,,2 |
;----------------------------------------------------------- |
; Windows 2000 installation section |
;----------------------------------------------------------- |
[Install_PCICC32.NT] |
AddReg = AddRegistry_NT_9050 |
CopyFiles = CopyFiles_9050 |
[Install_PCICC32.NT.Services] |
AddService = pcicc32, 0x00000002, Service_Inst_9050, EventLog_Inst_9050 |
[AddRegistry_NT_9050] |
[Service_Inst_9050] |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 0 ; SERVICE_ERROR_IGNORE |
ServiceBinary = %12%\pcicc32.sys |
;----------------------------------------------------------- |
; Event log registry entries |
;----------------------------------------------------------- |
[EventLog_Inst_9050] |
AddReg = EventLog_AddReg_9050 |
[EventLog_AddReg_9050] |
HKR,,EventMessageFile,0x00020000,"%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\pcicc32.sys" |
HKR,,TypesSupported,0x00010001,7 |
;----------------------------------------------------------- |
; Source file information |
;----------------------------------------------------------- |
[SourceDisksNames.x86] |
1 = %InstallDisk%,"",1 |
[SourceDisksFiles] |
pcicc32.sys = 1 |
[DestinationDirs] |
DefaultDestDir = 12 ; drivers |
;----------------------------------------------------------- |
; String information |
;----------------------------------------------------------- |
[Strings] |
InstallDisk = "ARW Elektronik Windows Driver Installation Disk" |
ARW_MFG = "ARW Elektronik, Germany" |
ARW = "ARW Elektronik, Germany" |
PCICC32_class_name = "ARW BUS Interfaces" |
/wiener_pcicc32/SOURCE/pcicc32_io.h |
---|
0,0 → 1,30 |
#ifndef __PCIVME_IO_H__ |
#define __PCIVME_IO_H__ |
//------------------------------------------------------------------------- |
// WINNT driver for PCIVME interface from ARW Elektronik, Germany --------- |
// the ioctl functions header file |
// |
// (c) 1999 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// ntddk.h must included first! |
// |
// what who when |
// started AR 03.07.99 |
// |
//------------------------------------------------------------------------ |
// FUNCTIONS + EXTERNALS |
// |
NTSTATUS (*ioctl[])(PDEVICE_OBJECT device_Obj, PIRP irp, PIO_STACK_LOCATION IrpStack); |
void fMyDefferedRoutine(PKDPC Dpc, PVOID pvDevice_object, PVOID pvPciada, PVOID Nothing); |
void CancelRequest(PDEVICE_OBJECT device_Obj, PIRP Irp); |
#endif // __PCIVME_IO_H__ |
/wiener_pcicc32/SOURCE/pcicc32.plg |
---|
0,0 → 1,49 |
<html> |
<body> |
<pre> |
<h1>Erstellungsprotokoll</h1> |
<h3> |
--------------------Konfiguration: pcicc32 - Win32 Debug-------------------- |
</h3> |
<h3>Befehlszeilen</h3> |
Erstellen der temporären Datei "C:\DOKUME~1\klaus\LOKALE~1\Temp\RSP21.tmp" mit Inhalten |
[ |
/nologo /Gz /MLd /W3 /Gm /Gi /Zi /Od /I "\DDK\inc" /I "." /D DBG=1 /D "_X86_" /D _WIN32_WINNT=0x500 /Fp"Debug/pcicc32.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /Gs -GF /c |
"D:\Work\MyProjects\pcicc32\pcicc32_drv.c" |
"D:\Work\MyProjects\pcicc32\pcicc32_i.c" |
"D:\Work\MyProjects\pcicc32\pcicc32_io.c" |
"D:\Work\MyProjects\pcicc32\pcicc32_v.c" |
] |
Creating command line "cl.exe @C:\DOKUME~1\klaus\LOKALE~1\Temp\RSP21.tmp" |
Erstellen der temporären Datei "C:\DOKUME~1\klaus\LOKALE~1\Temp\RSP22.tmp" mit Inhalten |
[ |
int64.lib ntoskrnl.lib hal.lib /nologo /base:"0x10000" /entry:"DriverEntry" /incremental:no /pdb:"Debug/pcicc32.pdb" /debug /machine:I386 /nodefaultlib /out:"Debug\pcicc32.SYS" /pdbtype:con /libpath:"\DDK\lib\i386\checked" -driver -subsystem:NATIVE,4.00 |
.\Debug\pcicc32_drv.obj |
.\Debug\pcicc32_i.obj |
.\Debug\pcicc32_io.obj |
.\Debug\pcicc32_v.obj |
] |
Erstellen der Befehlzeile "link.exe @C:\DOKUME~1\klaus\LOKALE~1\Temp\RSP22.tmp" |
Erstellen der temporären Datei "C:\DOKUME~1\klaus\LOKALE~1\Temp\RSP23.bat" mit Inhalten |
[ |
@echo off |
copy .\Debug\pcicc32.SYS C:\WINNT\System32\Drivers\*.* |
] |
Erstellen der Befehlzeile "C:\DOKUME~1\klaus\LOKALE~1\Temp\RSP23.bat" |
Kompilierung läuft... |
pcicc32_drv.c |
pcicc32_i.c |
pcicc32_io.c |
pcicc32_v.c |
Linker-Vorgang läuft... |
<h3>Ausgabefenster</h3> |
Copying Driver to System32\Drivers |
1 Datei(en) kopiert. |
<h3>Ergebnisse</h3> |
pcicc32.SYS - 0 Fehler, 0 Warnung(en) |
</pre> |
</body> |
</html> |
/wiener_pcicc32/SOURCE/pcicc32.dsp |
---|
0,0 → 1,163 |
# Microsoft Developer Studio Project File - Name="pcicc32" - Package Owner=<4> |
# Microsoft Developer Studio Generated Build File, Format Version 6.00 |
# ** NICHT BEARBEITEN ** |
# TARGTYPE "Win32 (x86) Application" 0x0101 |
CFG=pcicc32 - Win32 Debug |
!MESSAGE Dies ist kein gĂĽltiges Makefile. Zum Erstellen dieses Projekts mit NMAKE |
!MESSAGE verwenden Sie den Befehl "Makefile exportieren" und fĂĽhren Sie den Befehl |
!MESSAGE |
!MESSAGE NMAKE /f "pcicc32.mak". |
!MESSAGE |
!MESSAGE Sie können beim Ausführen von NMAKE eine Konfiguration angeben |
!MESSAGE durch Definieren des Makros CFG in der Befehlszeile. Zum Beispiel: |
!MESSAGE |
!MESSAGE NMAKE /f "pcicc32.mak" CFG="pcicc32 - Win32 Debug" |
!MESSAGE |
!MESSAGE FĂĽr die Konfiguration stehen zur Auswahl: |
!MESSAGE |
!MESSAGE "pcicc32 - Win32 Release" (basierend auf "Win32 (x86) Application") |
!MESSAGE "pcicc32 - Win32 Debug" (basierend auf "Win32 (x86) Application") |
!MESSAGE |
# Begin Project |
# PROP AllowPerConfigDependencies 0 |
# PROP Scc_ProjName "" |
# PROP Scc_LocalPath "" |
CPP=cl.exe |
MTL=midl.exe |
RSC=rc.exe |
!IF "$(CFG)" == "pcicc32 - Win32 Release" |
# PROP BASE Use_MFC 0 |
# PROP BASE Use_Debug_Libraries 0 |
# PROP BASE Output_Dir "Release" |
# PROP BASE Intermediate_Dir "Release" |
# PROP BASE Target_Dir "" |
# PROP Use_MFC 0 |
# PROP Use_Debug_Libraries 0 |
# PROP Output_Dir "Release" |
# PROP Intermediate_Dir "Release" |
# PROP Ignore_Export_Lib 0 |
# PROP Target_Dir "" |
# ADD BASE CPP /nologo /W3 /GX /O2 /D "NDEBUG" /D DBG=0 /YX /FD /c |
# ADD CPP /nologo /Gz /W3 /Gi /O2 /I "\DDK\inc" /I "." /D "NDEBUG" /D DBG=0 /D "_X86_" /D _WIN32_WINNT=0x500 /YX /FD /Gs -GF /c |
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 |
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 |
# ADD BASE RSC /l 0x407 /d "NDEBUG" |
# ADD RSC /l 0x407 /d "NDEBUG" |
BSC32=bscmake.exe |
# ADD BASE BSC32 /nologo |
# ADD BSC32 /nologo |
LINK32=link.exe |
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386 |
# ADD LINK32 int64.lib ntoskrnl.lib hal.lib /nologo /base:"0x10000" /entry:"DriverEntry" /machine:I386 /nodefaultlib /out:"Release\pcicc32.SYS" /libpath:"\DDK\lib\i386\free" -driver -subsystem:NATIVE,4.00 |
# Begin Custom Build - Copying Driver to System32\Drivers |
TargetPath=.\Release\pcicc32.SYS |
TargetName=pcicc32 |
InputPath=.\Release\pcicc32.SYS |
SOURCE="$(InputPath)" |
"$(SystemRoot)\System32\Drivers\$(TargetName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" |
copy $(TargetPath) $(SystemRoot)\System32\Drivers\*.* |
# End Custom Build |
!ELSEIF "$(CFG)" == "pcicc32 - Win32 Debug" |
# PROP BASE Use_MFC 0 |
# PROP BASE Use_Debug_Libraries 1 |
# PROP BASE Output_Dir "Debug" |
# PROP BASE Intermediate_Dir "Debug" |
# PROP BASE Target_Dir "" |
# PROP Use_MFC 0 |
# PROP Use_Debug_Libraries 1 |
# PROP Output_Dir "Debug" |
# PROP Intermediate_Dir "Debug" |
# PROP Ignore_Export_Lib 0 |
# PROP Target_Dir "" |
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D DBG=1 /YX /FD /GZ /c |
# ADD CPP /nologo /Gz /W3 /Gm /Gi /Zi /Od /I "\DDK\inc" /I "." /D DBG=1 /D "_X86_" /D _WIN32_WINNT=0x500 /YX /FD /Gs -GF /c |
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 |
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 |
# ADD BASE RSC /l 0x407 /d "_DEBUG" |
# ADD RSC /l 0x407 /d "_DEBUG" |
BSC32=bscmake.exe |
# ADD BASE BSC32 /nologo |
# ADD BSC32 /nologo |
LINK32=link.exe |
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept |
# ADD LINK32 int64.lib ntoskrnl.lib hal.lib /nologo /base:"0x10000" /entry:"DriverEntry" /incremental:no /debug /machine:I386 /nodefaultlib /out:"Debug\pcicc32.SYS" /pdbtype:con /libpath:"\DDK\lib\i386\checked" -driver -subsystem:NATIVE,4.00 |
# Begin Custom Build - Copying Driver to System32\Drivers |
TargetPath=.\Debug\pcicc32.SYS |
TargetName=pcicc32 |
InputPath=.\Debug\pcicc32.SYS |
SOURCE="$(InputPath)" |
"$(SystemRoot)\System32\Drivers\$(TargetName)" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" |
copy $(TargetPath) $(SystemRoot)\System32\Drivers\*.* |
# End Custom Build |
!ENDIF |
# Begin Target |
# Name "pcicc32 - Win32 Release" |
# Name "pcicc32 - Win32 Debug" |
# Begin Group "Quellcodedateien" |
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" |
# Begin Source File |
SOURCE=.\pcicc32_drv.c |
# End Source File |
# Begin Source File |
SOURCE=.\pcicc32_i.c |
# End Source File |
# Begin Source File |
SOURCE=.\pcicc32_io.c |
# End Source File |
# Begin Source File |
SOURCE=.\pcicc32_v.c |
# End Source File |
# End Group |
# Begin Group "Header-Dateien" |
# PROP Default_Filter "h;hpp;hxx;hm;inl" |
# Begin Source File |
SOURCE=.\pcicc32.h |
# End Source File |
# Begin Source File |
SOURCE=.\pcicc32_drv.h |
# End Source File |
# Begin Source File |
SOURCE=.\pcicc32_i.h |
# End Source File |
# Begin Source File |
SOURCE=.\pcicc32_io.h |
# End Source File |
# Begin Source File |
SOURCE=.\pcicc32_local.h |
# End Source File |
# Begin Source File |
SOURCE=.\pcicc32_v.h |
# End Source File |
# End Group |
# Begin Group "Ressourcendateien" |
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" |
# End Group |
# End Target |
# End Project |
/wiener_pcicc32/SOURCE/pcicc32.h |
---|
0,0 → 1,157 |
#ifndef __PCICC32_H__ |
#define __PCICC32_H__ |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32 interface from ARW Elektronik, Germany -------- |
// IO definitions and common data structures between application and driver |
// |
// (c) 2000,2001 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started AR 16.04.2000 |
// added irq functionality AR 24.02.2001 |
// added until 'not Q' read/write mode AR 03.03.2001 |
// added AUTOREAD AR 17.03.2001 |
// |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
// #include <devioctl.h> must be declared before inclusion when used for driver |
// #include <winioctl.h> must be declared before inclusion when used for applications |
//------------------------------------------------------------------------- |
// DEFINES |
// |
//---------------------------------------------------------------------------------------- |
// macros for simple CAMAC NAF address calculation |
// |
#define NAF(n, a, f) ((ULONG)((n << 10) + (a << 6) + ((f & 0xf) << 2))) |
// to get a compatible view to WIN95 driver |
#define USER_CONTROL_CODE(x) (x) |
// VPCIC32D_ATTACH_CC32 and VPCIC32D_DETACH_CC32 are incompatible to WINNT - please use read and write commands |
// get the interrupt and timeout status from a CC32 interface (0x00220008) |
#define PCICC32_GET_STATUS CTL_CODE(\ |
FILE_DEVICE_UNKNOWN,\ |
USER_CONTROL_CODE(2),\ |
METHOD_BUFFERED,\ |
FILE_ANY_ACCESS) |
// clear the timeout status of a CC32 interface (0x0022000C) |
#define PCICC32_CLEAR_STATUS CTL_CODE(\ |
FILE_DEVICE_UNKNOWN,\ |
USER_CONTROL_CODE(3),\ |
METHOD_BUFFERED,\ |
FILE_ANY_ACCESS) |
// set the access parameter for this file (0x00220010) |
#define PCICC32_SET_ACCESS_PARA CTL_CODE(\ |
FILE_DEVICE_UNKNOWN,\ |
USER_CONTROL_CODE(4),\ |
METHOD_BUFFERED,\ |
FILE_ANY_ACCESS) |
// allow or inhibit CC32 interrupt requests (0x00220014) |
#define PCICC32_CONTROL_INTERRUPTS CTL_CODE(\ |
FILE_DEVICE_UNKNOWN,\ |
USER_CONTROL_CODE(5),\ |
METHOD_BUFFERED,\ |
FILE_ANY_ACCESS) |
// requests thru blocking io the status of a pending or a rising interrupt (0x0022001C) |
#define PCICC32_INSTALL_IRQ_BLOCK CTL_CODE(\ |
FILE_DEVICE_UNKNOWN,\ |
USER_CONTROL_CODE(7),\ |
METHOD_BUFFERED,\ |
FILE_ANY_ACCESS) |
// requests to access the PLX LCR for test and debug (0x00220020) |
#define PCICC32_ACCESS_LCR CTL_CODE(\ |
FILE_DEVICE_UNKNOWN,\ |
USER_CONTROL_CODE(8),\ |
METHOD_BUFFERED,\ |
FILE_ANY_ACCESS) |
// set to check for control-code overflow |
#define PCICC32_LAST_CTL_CODE PCICC32_ACCESS_LCR |
// mask bits for interrupt status |
#define LAM_IRQ 0x00FFFFFF // there was a LAM responible for the timeout |
#define CONNECTION_TIMEOUT 0x08000000 // irq raised through a connection timout |
#define LAM_BUS_OR 0x10000000 // a LAM-BUS-OR is pending |
#define LAM_NOT_OR 0x20000000 // a LAM-NOT-OR is pending |
#define LAM_AND_OR 0x40000000 // a LAM-AND-OR is pending |
#define LAM_FF 0x80000000 // the LAM-Flip-Flop was set |
// switches for PCICC32_ACCESS_COMMAND.wAccessType |
#define WORD_ACCESS (UCHAR)2 // word |
#define LONG_ACCESS (UCHAR)4 // long |
// define bits for PCICC32_ACCESS_COMMAND.wBlockTransfer |
#define UNTIL_NOT_Q 0x0001 // read/write unttil 'not Q' switch |
#define AUTOREAD 0x0002 // PCIADA data pipelining access tuner switch |
// data lane size constants for PCICC32_ACCESS_LCR |
#define BYTE_ACCESS (UCHAR)1 // write byte wise (illegal) |
#define WORD_ACCESS (UCHAR)2 // word |
#define LONG_ACCESS (UCHAR)4 // long |
// PCICC32_ACCESS_LCR access constants |
#define LCR_READ 0 // read only access |
#define LCR_WRITE 1 // write and read back access |
#define LCR_OR 2 // read, bitwise 'or' content and read back access |
#define LCR_AND 3 // read, bitwise 'and' content and read back access |
#define LCR_WRITE_ONLY 4 // do not read back after write |
// this structure is output from VPCIC32_GET_STATUS call |
typedef struct |
{ |
ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used) |
USHORT bTimeout; // denotes a pending PCIADA timeout |
USHORT bInterrupt; // denotes a pending LAM interrupt |
} PCICC32_STATUS; |
// this structure sets the access parameter for following reads or writes to this path |
typedef struct |
{ |
ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used) |
USHORT wAccessType; // set the current access type (WORD_ACCESS, LONG_ACCESS) |
USHORT wBlockTransfer; // set AUTOREAD or UNTIL_NOT_Q |
} PCICC32_ACCESS_COMMAND; |
// this structure is used to control the interrupts |
typedef struct |
{ |
ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used) |
USHORT wEnable; // a 1 allows, a 0 inhibits interrupt requests |
} PCICC32_IRQ_CONTROL; |
// this structure returns from a blocking interrupt status call |
typedef struct |
{ |
ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used) |
ULONG dwInterruptFlags; // the return status at the return of the blocking call |
} PCICC32_IRQ_RESPONSE; |
// structure to access the local configuration space of PLX chip (test / debug only) with PCICC32_ACCESS_LCR |
typedef struct |
{ |
ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
ULONG dwContent; // content to write, and, or |
USHORT wRegisterAddress; // address offset of LCR register |
UCHAR bAccessMode; // LCR_READ, write, or, and |
UCHAR bBytesLane; // the data access width |
} PCICC32_LCR_ACCESS; |
#endif // __PCICC32_H__ |
/wiener_pcicc32/SOURCE/guid.h |
---|
0,0 → 1,6 |
INTERFACENAME = { /* c4ad1dfa-3e35-4659-bf2b-c83cda6833e1 */ |
0xc4ad1dfa, |
0x3e35, |
0x4659, |
{0xbf, 0x2b, 0xc8, 0x3c, 0xda, 0x68, 0x33, 0xe1} |
}; |
/wiener_pcicc32/pcicc32.inf |
---|
0,0 → 1,104 |
;=========================================================== |
; File : pcicc32.inf |
; |
; Abstract: Windows 2000 INF for PCICC32 boards from ARW Elektronik, Germany |
; |
;=========================================================== |
[Version] |
Signature = $CHICAGO$ |
Provider = %ARW% |
Class = %PCICC32_class_name% |
ClassGUID = {c4ad1dfa-3e35-4659-bf2b-c83cda6833e1} |
DriverVer = 06/18/2002,2.3.0.4 |
;----------------------------------------------------------- |
; Driver information |
;----------------------------------------------------------- |
[Manufacturer] |
%ARW_MFG% = ARW.Mfg |
[ARW.Mfg] |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258 |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258&SUBSYS_22589050 |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258&SUBSYS_22589050&REV_01 |
PCICC32 CAMAC Interface = Install_PCICC32, PCI\VEN_10B5&DEV_2258&SUBSYS_22589050&REV_02 |
[ClassInstall32] |
AddReg=PCICC32_class_addreg |
[PCICC32_class_addreg] |
HKR,,,,%PCICC32_class_name% |
HKR,,Icon,0,0 |
;----------------------------------------------------------- |
; General installation section |
;----------------------------------------------------------- |
[CopyFiles_9050] |
pcicc32.sys,,,2 |
;----------------------------------------------------------- |
; Windows 2000 installation section |
;----------------------------------------------------------- |
[Install_PCICC32.NT] |
AddReg = AddRegistry_NT_9050 |
CopyFiles = CopyFiles_9050 |
[Install_PCICC32.NT.Services] |
AddService = pcicc32, 0x00000002, Service_Inst_9050, EventLog_Inst_9050 |
[AddRegistry_NT_9050] |
[Service_Inst_9050] |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 0 ; SERVICE_ERROR_IGNORE |
ServiceBinary = %12%\pcicc32.sys |
;----------------------------------------------------------- |
; Event log registry entries |
;----------------------------------------------------------- |
[EventLog_Inst_9050] |
AddReg = EventLog_AddReg_9050 |
[EventLog_AddReg_9050] |
HKR,,EventMessageFile,0x00020000,"%SystemRoot%\System32\IoLogMsg.dll;%SystemRoot%\System32\Drivers\pcicc32.sys" |
HKR,,TypesSupported,0x00010001,7 |
;----------------------------------------------------------- |
; Source file information |
;----------------------------------------------------------- |
[SourceDisksNames.x86] |
1 = %InstallDisk%,"",1 |
[SourceDisksFiles] |
pcicc32.sys = 1 |
[DestinationDirs] |
DefaultDestDir = 12 ; drivers |
;----------------------------------------------------------- |
; String information |
;----------------------------------------------------------- |
[Strings] |
InstallDisk = "ARW Elektronik Windows Driver Installation Disk" |
ARW_MFG = "ARW Elektronik, Germany" |
ARW = "ARW Elektronik, Germany" |
PCICC32_class_name = "ARW BUS Interfaces" |
/wiener_pcicc32/pcicc32_VC2013_Win7_Win8_Win8.1.zip |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32.SYS |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32.sln |
---|
0,0 → 1,105 |
 |
Microsoft Visual Studio Solution File, Format Version 12.00 |
# Visual Studio 2013 |
VisualStudioVersion = 12.0.30110.0 |
MinimumVisualStudioVersion = 10.0.40219.1 |
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pcicc32", "pcicc32\pcicc32.vcxproj", "{E355652A-FAA5-429D-8308-AFEA65C58B53}" |
EndProject |
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pcicc32 Package", "pcicc32 Package\pcicc32 Package.vcxproj", "{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}" |
ProjectSection(ProjectDependencies) = postProject |
{E355652A-FAA5-429D-8308-AFEA65C58B53} = {E355652A-FAA5-429D-8308-AFEA65C58B53} |
EndProjectSection |
EndProject |
Global |
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
Win7 Debug|Win32 = Win7 Debug|Win32 |
Win7 Debug|x64 = Win7 Debug|x64 |
Win7 Release|Win32 = Win7 Release|Win32 |
Win7 Release|x64 = Win7 Release|x64 |
Win8 Debug|Win32 = Win8 Debug|Win32 |
Win8 Debug|x64 = Win8 Debug|x64 |
Win8 Release|Win32 = Win8 Release|Win32 |
Win8 Release|x64 = Win8 Release|x64 |
Win8.1 Debug|Win32 = Win8.1 Debug|Win32 |
Win8.1 Debug|x64 = Win8.1 Debug|x64 |
Win8.1 Release|Win32 = Win8.1 Release|Win32 |
Win8.1 Release|x64 = Win8.1 Release|x64 |
EndGlobalSection |
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win7 Debug|Win32.ActiveCfg = Win7 Debug|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win7 Debug|Win32.Build.0 = Win7 Debug|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win7 Debug|Win32.Deploy.0 = Win7 Debug|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win7 Debug|x64.ActiveCfg = Win7 Debug|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win7 Debug|x64.Build.0 = Win7 Debug|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win7 Debug|x64.Deploy.0 = Win7 Debug|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win7 Release|Win32.ActiveCfg = Win7 Release|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win7 Release|Win32.Build.0 = Win7 Release|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win7 Release|Win32.Deploy.0 = Win7 Release|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win7 Release|x64.ActiveCfg = Win7 Release|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win7 Release|x64.Build.0 = Win7 Release|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win7 Release|x64.Deploy.0 = Win7 Release|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8 Debug|Win32.ActiveCfg = Win8 Debug|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8 Debug|Win32.Build.0 = Win8 Debug|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8 Debug|Win32.Deploy.0 = Win8 Debug|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8 Debug|x64.ActiveCfg = Win8 Debug|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8 Debug|x64.Build.0 = Win8 Debug|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8 Debug|x64.Deploy.0 = Win8 Debug|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8 Release|Win32.ActiveCfg = Win8 Release|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8 Release|Win32.Build.0 = Win8 Release|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8 Release|Win32.Deploy.0 = Win8 Release|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8 Release|x64.ActiveCfg = Win8 Release|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8 Release|x64.Build.0 = Win8 Release|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8 Release|x64.Deploy.0 = Win8 Release|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8.1 Debug|Win32.ActiveCfg = Win8.1 Debug|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8.1 Debug|Win32.Build.0 = Win8.1 Debug|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8.1 Debug|Win32.Deploy.0 = Win8.1 Debug|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8.1 Debug|x64.ActiveCfg = Win8.1 Debug|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8.1 Debug|x64.Build.0 = Win8.1 Debug|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8.1 Debug|x64.Deploy.0 = Win8.1 Debug|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8.1 Release|Win32.ActiveCfg = Win8.1 Release|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8.1 Release|Win32.Build.0 = Win8.1 Release|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8.1 Release|Win32.Deploy.0 = Win8.1 Release|Win32 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8.1 Release|x64.ActiveCfg = Win8.1 Release|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8.1 Release|x64.Build.0 = Win8.1 Release|x64 |
{E355652A-FAA5-429D-8308-AFEA65C58B53}.Win8.1 Release|x64.Deploy.0 = Win8.1 Release|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win7 Debug|Win32.ActiveCfg = Win7 Debug|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win7 Debug|Win32.Build.0 = Win7 Debug|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win7 Debug|Win32.Deploy.0 = Win7 Debug|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win7 Debug|x64.ActiveCfg = Win7 Debug|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win7 Debug|x64.Build.0 = Win7 Debug|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win7 Debug|x64.Deploy.0 = Win7 Debug|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win7 Release|Win32.ActiveCfg = Win7 Release|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win7 Release|Win32.Build.0 = Win7 Release|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win7 Release|Win32.Deploy.0 = Win7 Release|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win7 Release|x64.ActiveCfg = Win7 Release|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win7 Release|x64.Build.0 = Win7 Release|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win7 Release|x64.Deploy.0 = Win7 Release|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8 Debug|Win32.ActiveCfg = Win8 Debug|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8 Debug|Win32.Build.0 = Win8 Debug|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8 Debug|Win32.Deploy.0 = Win8 Debug|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8 Debug|x64.ActiveCfg = Win8 Debug|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8 Debug|x64.Build.0 = Win8 Debug|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8 Debug|x64.Deploy.0 = Win8 Debug|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8 Release|Win32.ActiveCfg = Win8 Release|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8 Release|Win32.Build.0 = Win8 Release|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8 Release|Win32.Deploy.0 = Win8 Release|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8 Release|x64.ActiveCfg = Win8 Release|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8 Release|x64.Build.0 = Win8 Release|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8 Release|x64.Deploy.0 = Win8 Release|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8.1 Debug|Win32.ActiveCfg = Win8.1 Debug|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8.1 Debug|Win32.Build.0 = Win8.1 Debug|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8.1 Debug|Win32.Deploy.0 = Win8.1 Debug|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8.1 Debug|x64.ActiveCfg = Win8.1 Debug|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8.1 Debug|x64.Build.0 = Win8.1 Debug|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8.1 Debug|x64.Deploy.0 = Win8.1 Debug|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8.1 Release|Win32.ActiveCfg = Win8.1 Release|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8.1 Release|Win32.Build.0 = Win8.1 Release|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8.1 Release|Win32.Deploy.0 = Win8.1 Release|Win32 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8.1 Release|x64.ActiveCfg = Win8.1 Release|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8.1 Release|x64.Build.0 = Win8.1 Release|x64 |
{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}.Win8.1 Release|x64.Deploy.0 = Win8.1 Release|x64 |
EndGlobalSection |
GlobalSection(SolutionProperties) = preSolution |
HideSolutionNode = FALSE |
EndGlobalSection |
EndGlobal |
/wiener_pcicc32/pcicc32/pcicc32 Package/pcicc32 Package.vcxproj.filters |
---|
0,0 → 1,9 |
<?xml version="1.0" encoding="utf-8"?> |
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
<ItemGroup> |
<Filter Include="Driver Files"> |
<UniqueIdentifier>{8E41214B-6785-4CFE-B992-037D68949A14}</UniqueIdentifier> |
<Extensions>inf;inv;inx;mof;mc;</Extensions> |
</Filter> |
</ItemGroup> |
</Project> |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Release/inf2cat-expand.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Release/inf2cat-expand.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Release/inf2cat-expand.2792.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Release/inf2cat-expand.2792.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Release/inf2cat.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Release/pcicc32 Package.log |
---|
0,0 → 1,20 |
Build started 10.2.2014 7:32:23. |
1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32 Package\pcicc32 Package.vcxproj" on node 2 (Rebuild target(s)). |
1>Inf2Cat: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\inf2cat.exe /os:7_x86 /driver:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win7Release\pcicc32 Package\\" |
......................... |
Signability test complete. |
Errors: |
None |
Warnings: |
None |
Catalog generation complete. |
C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win7Release\pcicc32 Package\pcicc32.cat |
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32 Package\pcicc32 Package.vcxproj" (Rebuild target(s)). |
Build succeeded. |
Time Elapsed 00:00:00.32 |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Release/inf2cat-expand.4468.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Release/inf2cat.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Release/inf2cat-expand.4468.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Release/Inf2Cat.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Release/pcicc32 Package.tlog/pcicc32 Package.lastbuildstate |
---|
0,0 → 1,2 |
#TargetFrameworkVersion=v4.5:PlatformToolSet=WindowsKernelModeDriver8.1:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit |
Win7 Release|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\| |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Release/inf2cat-expand.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Release/inf2cat-expand.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Release/inf2cat.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Release/pcicc32 Package.log |
---|
0,0 → 1,20 |
Build started 10.2.2014 7:32:22. |
1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32 Package\pcicc32 Package.vcxproj" on node 2 (Rebuild target(s)). |
1>Inf2Cat: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\inf2cat.exe /os:6_3_x86 /driver:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8.1Release\pcicc32 Package\\" |
......................... |
Signability test complete. |
Errors: |
None |
Warnings: |
None |
Catalog generation complete. |
C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8.1Release\pcicc32 Package\pcicc32.cat |
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32 Package\pcicc32 Package.vcxproj" (Rebuild target(s)). |
Build succeeded. |
Time Elapsed 00:00:00.29 |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Release/inf2cat.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Release/Inf2Cat.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Release/pcicc32 Package.tlog/pcicc32 Package.lastbuildstate |
---|
0,0 → 1,2 |
#TargetFrameworkVersion=v4.5:PlatformToolSet=WindowsKernelModeDriver8.1:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit |
Win8.1 Release|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\| |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Release/inf2cat-expand.1920.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Release/inf2cat-expand.1920.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Release/inf2cat-expand.4048.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Release/inf2cat-expand.4048.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Release/inf2cat-expand.728.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Release/inf2cat-expand.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Release/inf2cat-expand.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Release/inf2cat.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Release/pcicc32 Package.log |
---|
0,0 → 1,20 |
Build started 10.2.2014 7:32:22. |
1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32 Package\pcicc32 Package.vcxproj" on node 2 (Rebuild target(s)). |
1>Inf2Cat: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\inf2cat.exe /os:8_x86 /driver:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8Release\pcicc32 Package\\" |
......................... |
Signability test complete. |
Errors: |
None |
Warnings: |
None |
Catalog generation complete. |
C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8Release\pcicc32 Package\pcicc32.cat |
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32 Package\pcicc32 Package.vcxproj" (Rebuild target(s)). |
Build succeeded. |
Time Elapsed 00:00:00.32 |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Release/inf2cat.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Release/Inf2Cat.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Release/pcicc32 Package.tlog/pcicc32 Package.lastbuildstate |
---|
0,0 → 1,2 |
#TargetFrameworkVersion=v4.5:PlatformToolSet=WindowsKernelModeDriver8.1:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit |
Win8 Release|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\| |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Release/inf2cat-expand.3652.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Release/inf2cat-expand.3652.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Release/inf2cat-expand.728.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Debug/inf2cat-expand.684.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Debug/inf2cat-expand.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Debug/inf2cat-expand.4492.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Debug/inf2cat-expand.684.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Debug/inf2cat-expand.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Debug/inf2cat-expand.4492.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Debug/inf2cat.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Debug/pcicc32 Package.log |
---|
0,0 → 1,25 |
Build started 10.2.2014 7:32:24. |
1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32 Package\pcicc32 Package.vcxproj" on node 2 (Rebuild target(s)). |
1>Inf2Cat: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\inf2cat.exe /os:7_x86 /driver:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win7Debug\pcicc32 Package\\" |
......................... |
Signability test complete. |
Errors: |
None |
Warnings: |
None |
Catalog generation complete. |
C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win7Debug\pcicc32 Package\pcicc32.cat |
DriverTestSign: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe sign /ph /sha1 "582A29F728D647902CAA175FC6F560D6BB7011DD" |
Done Adding Additional Store |
Successfully signed: C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win7Debug\pcicc32 Package\pcicc32.cat |
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32 Package\pcicc32 Package.vcxproj" (Rebuild target(s)). |
Build succeeded. |
Time Elapsed 00:00:00.35 |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Debug/inf2cat.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Debug/Inf2Cat.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Debug/pcicc32 Package.tlog/pcicc32 Package.lastbuildstate |
---|
0,0 → 1,2 |
#TargetFrameworkVersion=v4.5:PlatformToolSet=WindowsKernelModeDriver8.1:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit |
Win7 Debug|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\| |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Debug/signtool.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Debug/signtool.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win7Debug/signtool.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Debug/inf2cat-expand.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Debug/inf2cat-expand.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Debug/inf2cat-expand.5916.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Debug/inf2cat.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Debug/pcicc32 Package.log |
---|
0,0 → 1,25 |
Build started 10.2.2014 7:32:23. |
1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32 Package\pcicc32 Package.vcxproj" on node 2 (Rebuild target(s)). |
1>Inf2Cat: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\inf2cat.exe /os:6_3_x86 /driver:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8.1Debug\pcicc32 Package\\" |
......................... |
Signability test complete. |
Errors: |
None |
Warnings: |
None |
Catalog generation complete. |
C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8.1Debug\pcicc32 Package\pcicc32.cat |
DriverTestSign: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe sign /ph /sha1 "582A29F728D647902CAA175FC6F560D6BB7011DD" |
Done Adding Additional Store |
Successfully signed: C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8.1Debug\pcicc32 Package\pcicc32.cat |
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32 Package\pcicc32 Package.vcxproj" (Rebuild target(s)). |
Build succeeded. |
Time Elapsed 00:00:00.36 |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Debug/inf2cat-expand.5100.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Debug/inf2cat-expand.5916.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Debug/inf2cat.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Debug/inf2cat-expand.5100.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Debug/Inf2Cat.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Debug/pcicc32 Package.tlog/pcicc32 Package.lastbuildstate |
---|
0,0 → 1,2 |
#TargetFrameworkVersion=v4.5:PlatformToolSet=WindowsKernelModeDriver8.1:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit |
Win8.1 Debug|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\| |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Debug/signtool.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Debug/signtool.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8.1Debug/signtool.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Debug/inf2cat-expand.2780.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Debug/inf2cat-expand.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Debug/inf2cat-expand.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Debug/inf2cat.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Debug/pcicc32 Package.log |
---|
0,0 → 1,25 |
Build started 10.2.2014 7:32:24. |
1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32 Package\pcicc32 Package.vcxproj" on node 2 (Rebuild target(s)). |
1>Inf2Cat: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\inf2cat.exe /os:8_x86 /driver:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8Debug\pcicc32 Package\\" |
......................... |
Signability test complete. |
Errors: |
None |
Warnings: |
None |
Catalog generation complete. |
C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8Debug\pcicc32 Package\pcicc32.cat |
DriverTestSign: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe sign /ph /sha1 "582A29F728D647902CAA175FC6F560D6BB7011DD" |
Done Adding Additional Store |
Successfully signed: C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8Debug\pcicc32 Package\pcicc32.cat |
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32 Package\pcicc32 Package.vcxproj" (Rebuild target(s)). |
Build succeeded. |
Time Elapsed 00:00:00.78 |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Debug/inf2cat.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Debug/Inf2Cat.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Debug/pcicc32 Package.tlog/pcicc32 Package.lastbuildstate |
---|
0,0 → 1,2 |
#TargetFrameworkVersion=v4.5:PlatformToolSet=WindowsKernelModeDriver8.1:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit |
Win8 Debug|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\| |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Debug/signtool.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Debug/inf2cat-expand.4172.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Debug/signtool.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Debug/inf2cat-expand.4172.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Debug/inf2cat-expand.2780.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/Win8Debug/signtool.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32 Package/pcicc32 Package.vcxproj |
---|
0,0 → 1,334 |
<?xml version="1.0" encoding="utf-8"?> |
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
<ItemGroup Label="ProjectConfigurations"> |
<ProjectConfiguration Include="Win8.1 Debug|Win32"> |
<Configuration>Win8.1 Debug</Configuration> |
<Platform>Win32</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win8.1 Release|Win32"> |
<Configuration>Win8.1 Release</Configuration> |
<Platform>Win32</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win8 Debug|Win32"> |
<Configuration>Win8 Debug</Configuration> |
<Platform>Win32</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win8 Release|Win32"> |
<Configuration>Win8 Release</Configuration> |
<Platform>Win32</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win7 Debug|Win32"> |
<Configuration>Win7 Debug</Configuration> |
<Platform>Win32</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win7 Release|Win32"> |
<Configuration>Win7 Release</Configuration> |
<Platform>Win32</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win8.1 Debug|x64"> |
<Configuration>Win8.1 Debug</Configuration> |
<Platform>x64</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win8.1 Release|x64"> |
<Configuration>Win8.1 Release</Configuration> |
<Platform>x64</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win8 Debug|x64"> |
<Configuration>Win8 Debug</Configuration> |
<Platform>x64</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win8 Release|x64"> |
<Configuration>Win8 Release</Configuration> |
<Platform>x64</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win7 Debug|x64"> |
<Configuration>Win7 Debug</Configuration> |
<Platform>x64</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win7 Release|x64"> |
<Configuration>Win7 Release</Configuration> |
<Platform>x64</Platform> |
</ProjectConfiguration> |
</ItemGroup> |
<PropertyGroup Label="Globals"> |
<ProjectGuid>{E52219C0-0B63-42B6-BBBD-5718FDE46FDB}</ProjectGuid> |
<TemplateGuid>{4605da2c-74a5-4865-98e1-152ef136825f}</TemplateGuid> |
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> |
<MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> |
<Configuration>Win8.1 Debug</Configuration> |
<Platform Condition="'$(Platform)' == ''">Win32</Platform> |
<RootNamespace>pcicc32_Package</RootNamespace> |
</PropertyGroup> |
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'" Label="Configuration"> |
<TargetVersion>WindowsV6.3</TargetVersion> |
<UseDebugLibraries>true</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Utility</ConfigurationType> |
<DriverType>Package</DriverType> |
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'" Label="Configuration"> |
<TargetVersion>WindowsV6.3</TargetVersion> |
<UseDebugLibraries>false</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Utility</ConfigurationType> |
<DriverType>Package</DriverType> |
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'" Label="Configuration"> |
<TargetVersion>Windows8</TargetVersion> |
<UseDebugLibraries>true</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Utility</ConfigurationType> |
<DriverType>Package</DriverType> |
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'" Label="Configuration"> |
<TargetVersion>Windows8</TargetVersion> |
<UseDebugLibraries>false</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Utility</ConfigurationType> |
<DriverType>Package</DriverType> |
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'" Label="Configuration"> |
<TargetVersion>Windows7</TargetVersion> |
<UseDebugLibraries>true</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Utility</ConfigurationType> |
<DriverType>Package</DriverType> |
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'" Label="Configuration"> |
<TargetVersion>Windows7</TargetVersion> |
<UseDebugLibraries>false</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Utility</ConfigurationType> |
<DriverType>Package</DriverType> |
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'" Label="Configuration"> |
<TargetVersion>WindowsV6.3</TargetVersion> |
<UseDebugLibraries>true</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Utility</ConfigurationType> |
<DriverType>Package</DriverType> |
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'" Label="Configuration"> |
<TargetVersion>WindowsV6.3</TargetVersion> |
<UseDebugLibraries>false</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Utility</ConfigurationType> |
<DriverType>Package</DriverType> |
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'" Label="Configuration"> |
<TargetVersion>Windows8</TargetVersion> |
<UseDebugLibraries>true</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Utility</ConfigurationType> |
<DriverType>Package</DriverType> |
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'" Label="Configuration"> |
<TargetVersion>Windows8</TargetVersion> |
<UseDebugLibraries>false</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Utility</ConfigurationType> |
<DriverType>Package</DriverType> |
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'" Label="Configuration"> |
<TargetVersion>Windows7</TargetVersion> |
<UseDebugLibraries>true</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Utility</ConfigurationType> |
<DriverType>Package</DriverType> |
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'" Label="Configuration"> |
<TargetVersion>Windows7</TargetVersion> |
<UseDebugLibraries>false</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Utility</ConfigurationType> |
<DriverType>Package</DriverType> |
<DisableFastUpToDateCheck>true</DisableFastUpToDateCheck> |
</PropertyGroup> |
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
<ImportGroup Label="ExtensionSettings"> |
</ImportGroup> |
<ImportGroup Label="PropertySheets"> |
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
</ImportGroup> |
<PropertyGroup Label="UserMacros" /> |
<PropertyGroup /> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
<EnableDeployment>False</EnableDeployment> |
<RemoveDriver>True</RemoveDriver> |
<HardwareIdString /> |
<CommandLine /> |
<DeployFiles /> |
<EnableVerifier>False</EnableVerifier> |
<AllDrivers>False</AllDrivers> |
<VerifyProjectOutput>True</VerifyProjectOutput> |
<VerifyDrivers /> |
<VerifyFlags>133563</VerifyFlags> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
<EnableDeployment>False</EnableDeployment> |
<RemoveDriver>True</RemoveDriver> |
<HardwareIdString /> |
<CommandLine /> |
<DeployFiles /> |
<EnableVerifier>False</EnableVerifier> |
<AllDrivers>False</AllDrivers> |
<VerifyProjectOutput>True</VerifyProjectOutput> |
<VerifyDrivers /> |
<VerifyFlags>133563</VerifyFlags> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
<EnableDeployment>False</EnableDeployment> |
<RemoveDriver>True</RemoveDriver> |
<HardwareIdString /> |
<CommandLine /> |
<DeployFiles /> |
<EnableVerifier>False</EnableVerifier> |
<AllDrivers>False</AllDrivers> |
<VerifyProjectOutput>True</VerifyProjectOutput> |
<VerifyDrivers /> |
<VerifyFlags>133563</VerifyFlags> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
<EnableDeployment>False</EnableDeployment> |
<RemoveDriver>True</RemoveDriver> |
<HardwareIdString /> |
<CommandLine /> |
<DeployFiles /> |
<EnableVerifier>False</EnableVerifier> |
<AllDrivers>False</AllDrivers> |
<VerifyProjectOutput>True</VerifyProjectOutput> |
<VerifyDrivers /> |
<VerifyFlags>133563</VerifyFlags> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
<EnableDeployment>False</EnableDeployment> |
<RemoveDriver>True</RemoveDriver> |
<HardwareIdString /> |
<CommandLine /> |
<DeployFiles /> |
<EnableVerifier>False</EnableVerifier> |
<AllDrivers>False</AllDrivers> |
<VerifyProjectOutput>True</VerifyProjectOutput> |
<VerifyDrivers /> |
<VerifyFlags>133563</VerifyFlags> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
<EnableDeployment>False</EnableDeployment> |
<RemoveDriver>True</RemoveDriver> |
<HardwareIdString /> |
<CommandLine /> |
<DeployFiles /> |
<EnableVerifier>False</EnableVerifier> |
<AllDrivers>False</AllDrivers> |
<VerifyProjectOutput>True</VerifyProjectOutput> |
<VerifyDrivers /> |
<VerifyFlags>133563</VerifyFlags> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
<EnableDeployment>False</EnableDeployment> |
<RemoveDriver>True</RemoveDriver> |
<HardwareIdString /> |
<CommandLine /> |
<DeployFiles /> |
<EnableVerifier>False</EnableVerifier> |
<AllDrivers>False</AllDrivers> |
<VerifyProjectOutput>True</VerifyProjectOutput> |
<VerifyDrivers /> |
<VerifyFlags>133563</VerifyFlags> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
<EnableDeployment>False</EnableDeployment> |
<RemoveDriver>True</RemoveDriver> |
<HardwareIdString /> |
<CommandLine /> |
<DeployFiles /> |
<EnableVerifier>False</EnableVerifier> |
<AllDrivers>False</AllDrivers> |
<VerifyProjectOutput>True</VerifyProjectOutput> |
<VerifyDrivers /> |
<VerifyFlags>133563</VerifyFlags> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
<EnableDeployment>False</EnableDeployment> |
<RemoveDriver>True</RemoveDriver> |
<HardwareIdString /> |
<CommandLine /> |
<DeployFiles /> |
<EnableVerifier>False</EnableVerifier> |
<AllDrivers>False</AllDrivers> |
<VerifyProjectOutput>True</VerifyProjectOutput> |
<VerifyDrivers /> |
<VerifyFlags>133563</VerifyFlags> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
<EnableDeployment>False</EnableDeployment> |
<RemoveDriver>True</RemoveDriver> |
<HardwareIdString /> |
<CommandLine /> |
<DeployFiles /> |
<EnableVerifier>False</EnableVerifier> |
<AllDrivers>False</AllDrivers> |
<VerifyProjectOutput>True</VerifyProjectOutput> |
<VerifyDrivers /> |
<VerifyFlags>133563</VerifyFlags> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
<EnableDeployment>False</EnableDeployment> |
<RemoveDriver>True</RemoveDriver> |
<HardwareIdString /> |
<CommandLine /> |
<DeployFiles /> |
<EnableVerifier>False</EnableVerifier> |
<AllDrivers>False</AllDrivers> |
<VerifyProjectOutput>True</VerifyProjectOutput> |
<VerifyDrivers /> |
<VerifyFlags>133563</VerifyFlags> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
<EnableDeployment>False</EnableDeployment> |
<RemoveDriver>True</RemoveDriver> |
<HardwareIdString /> |
<CommandLine /> |
<DeployFiles /> |
<EnableVerifier>False</EnableVerifier> |
<AllDrivers>False</AllDrivers> |
<VerifyProjectOutput>True</VerifyProjectOutput> |
<VerifyDrivers /> |
<VerifyFlags>133563</VerifyFlags> |
</PropertyGroup> |
<ItemGroup> |
<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" /> |
</ItemGroup> |
<ItemGroup> |
<ProjectReference Include="..\pcicc32\pcicc32.vcxproj"> |
<Project>{e355652a-faa5-429d-8308-afea65c58b53}</Project> |
</ProjectReference> |
</ItemGroup> |
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
<ImportGroup Label="ExtensionTargets"> |
</ImportGroup> |
</Project> |
/wiener_pcicc32/pcicc32/Win7Release/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.20.51 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/Win7Release/pcicc32 Package/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.20.51 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/Win7Release/pcicc32 Package/pcicc32.sys |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win7Release/pcicc32 Package/pcicc32.cat |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win7Release/pcicc32 Package/WdfCoinstaller01011.dll |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win7Release/pcicc32.sys |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win7Release/pcicc32.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8.1Release/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.17.794 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/Win8.1Release/pcicc32 Package/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.17.794 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/Win8.1Release/pcicc32 Package/pcicc32.sys |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8.1Release/pcicc32 Package/pcicc32.cat |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8.1Release/pcicc32 Package/WdfCoinstaller01011.dll |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8.1Release/pcicc32.sys |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8.1Release/pcicc32.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8Release/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.18.506 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/Win8Release/pcicc32 Package/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.18.506 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/Win8Release/pcicc32 Package/pcicc32.sys |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8Release/pcicc32 Package/pcicc32.cat |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8Release/pcicc32 Package/WdfCoinstaller01011.dll |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8Release/pcicc32.sys |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8Release/pcicc32.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/pcicc32_i.c |
---|
0,0 → 1,275 |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32 interface from ARW Elektronik, Germany -------- |
// all around irq handling |
// |
// (c) 1999-2002 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started AR 01.08.1999 |
// first release 1.0 AR 17.10.1999 |
// IoConnectInterrupt, share vector now true AR 04.03.2000 |
// globalInterruptEnabledStatus() added AR 24.02.2001 |
// added IRQ handling AR 24.02.2001 |
// added WITH_IRQS switch to switsch off irqs AR 04.10.2001 |
// changed making procedure (only VCC > 6.0) AR 30.05.2002 |
// |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
#define WITH_IRQS // comment out for interrupt handling excludes |
// ACHTUNG TEST |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
#include <ntddk.h> |
#include <pcicc32_drv.h> |
#include <pcicc32_i.h> |
#include <pcicc32.h> |
#include <pcicc32_local.h> |
//------------------------------------------------------------------------ |
// DEFINES |
// |
#ifndef DWORD |
#define DWORD ULONG |
#endif |
#ifndef WORD |
#define WORD USHORT |
#endif |
//------------------------------------------------------------------------ |
// GLOBALS |
// |
//------------------------------------------------------------------------ |
// FUNCTIONS |
// |
//------------------------------------------------------------------------ |
// enable and disable of interrupts |
// |
void globalInterruptEnable(PCIADA *pciada) |
{ |
#ifdef WITH_IRQS |
WRITE_REGISTER_USHORT(pciada->pwIntCSR, ENABLE_PCIADA_IRQS); |
#endif |
} |
void globalInterruptDisable(PCIADA *pciada) |
{ |
WRITE_REGISTER_USHORT(pciada->pwIntCSR, DISABLE_PCIADA_IRQS); |
} |
unsigned short globalInterruptEnabledStatus(PCIADA *pciada) |
{ |
unsigned short wStatus; |
wStatus = READ_REGISTER_USHORT(pciada->pwIntCSR); |
if ((wStatus & ENABLE_PCIADA_IRQS) == ENABLE_PCIADA_IRQS) |
return 1; |
return 0; |
} |
//------------------------------------------------------------------------ |
// determine which interrupt and evaluates status if appropriate |
// |
static int evaluateIrqStatus(PCIADA *pciada, ULONG *dwIrqStatus) |
{ |
volatile USHORT wCntrl; |
int result = 0; |
wCntrl = READ_REGISTER_USHORT(pciada->pwCntrl); |
if (wCntrl & 0x100) // pciada switched on ? |
{ |
volatile USHORT wIntCSR = READ_REGISTER_USHORT(pciada->pwIntCSR); |
if (wIntCSR & 0x0040) // are the interrupts enabled? |
{ |
if (wIntCSR & 0x20) |
{ |
// it's the pci interrupt # 2 |
globalInterruptDisable(pciada); // disable following interrupts |
// get current Cntrl - and clear interrupt |
WRITE_REGISTER_USHORT(pciada->pwCntrl, (USHORT)(wCntrl & ~0x0100)); // disable |
WRITE_REGISTER_USHORT(pciada->pwCntrl, wCntrl); // enable again |
*dwIrqStatus = CONNECTION_TIMEOUT; |
result = 1; |
} |
if (wIntCSR & 0x04) |
{ |
globalInterruptDisable(pciada); // disable following interrupts |
*dwIrqStatus = READ_REGISTER_ULONG(_DWORD_NAF(pciada->pvVirtIfr, 28, 2, 0)); |
// clear pending interrupt - LAM-FF |
WRITE_REGISTER_USHORT(_WORD_NAF(pciada->pvVirtIfr, 28, 0, 16), 0); |
result = 1; |
} |
} |
} |
return result; |
} |
//------------------------------------------------------------------------ |
// main interrupt handler function |
// |
static BOOLEAN irq_service(PKINTERRUPT Interrupt, PVOID ServiceContext) |
{ |
PCIADA *pciada = (PCIADA *)ServiceContext; |
UNREFERENCED_PARAMETER(Interrupt); |
#ifndef WITH_IRQS |
return FALSE; |
#endif |
if (!evaluateIrqStatus(pciada, &pciada->dwIrqStatus)) |
{ |
// KdPrint(("Not my irq.\n")); |
return FALSE; |
} |
// fire custom deffered procedure call |
KeInsertQueueDpc(&pciada->kDPCobj, (PVOID)pciada, (PVOID)&pciada->dwIrqStatus); |
KdPrint(("irq_service(0x%08x)\n", pciada->dwIrqStatus)); |
return TRUE; |
} |
//------------------------------------------------------------------------ |
// translate interrupt resources for PCIADAs to hardware independent ones |
// |
NTSTATUS PCICC32TranslateInterrupt(PDEVICE_OBJECT device_Obj) |
{ |
int i; |
NTSTATUS result = STATUS_SUCCESS; |
DEVICE_EXT *pDevExt = (DEVICE_EXT*)device_Obj->DeviceExtension; |
int nPCIADAs = pDevExt->nPCIADAs; |
PCIADA *pciada; |
KdPrint(("PCICC32TranslateInterrupt()\n")); |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
KdPrint(("In - Bus:%d, IrqLine:%d\n", pciada->Bus, pciada->Irql)); |
if (pciada->Irql) |
{ |
pciada->Vector = HalGetInterruptVector(PCIBus, pciada->Bus, |
pciada->Irql, pciada->Vector, |
&pciada->Irql, &pciada->Affinity); |
KdPrint(("Out - Irql:%d, Vector: %d, Affinity:%d\n", pciada->Irql, pciada->Vector, pciada->Affinity)); |
} |
else |
result = STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT; |
} |
return result; |
} |
//------------------------------------------------------------------------ |
// connect service routines to all PCIADA interrupts |
// |
NTSTATUS PCICC32ConnectInterrupt(PDEVICE_OBJECT device_Obj) |
{ |
#ifdef WITH_IRQS |
int i; |
NTSTATUS result = STATUS_SUCCESS; |
DEVICE_EXT *pDevExt = (DEVICE_EXT*)device_Obj->DeviceExtension; |
int nPCIADAs = pDevExt->nPCIADAs; |
PCIADA *pciada; |
KdPrint(("PCICC32ConnectInterrupt()\n")); |
// connect the interrupts to service routines |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
pciada->InterruptObject = NULL; |
if (pciada->Vector) |
result = IoConnectInterrupt(&pciada->InterruptObject, |
irq_service, |
(PVOID)pciada, |
NULL, |
pciada->Vector, |
pciada->Irql, |
pciada->Irql, |
LevelSensitive, |
TRUE, |
pciada->Affinity, |
FALSE); |
KdPrint(("irq_service:%p, VirtVect:%d, Irql:%d, hIrql:%d, Aff:0x%08x, Status:0x%08x\n", |
irq_service, pciada->Vector, pciada->Irql, |
pciada->Irql, pciada->Affinity, result)); |
if (result != STATUS_SUCCESS) |
break; |
} |
if (result == STATUS_SUCCESS) |
{ |
KdPrint(("PCICC32ConnectInterrupt() OK.\n")); |
} |
return result; |
#else |
return STATUS_SUCCESS; |
#endif |
} |
//------------------------------------------------------------------------ |
// dis-connect service routines to all PCIADA interrupts |
// |
NTSTATUS PCICC32DisConnectInterrupt(PDEVICE_OBJECT device_Obj) |
{ |
#ifdef WITH_IRQS |
int i; |
DEVICE_EXT *pDevExt = (DEVICE_EXT*)device_Obj->DeviceExtension; |
int nPCIADAs = pDevExt->nPCIADAs; |
PCIADA *pciada; |
KdPrint(("DisConnectInterrupt()\n")); |
// dis connect the interrupts to service routines |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
KdPrint(("IrqObj:0x%08x\n", pciada->InterruptObject)); |
if (pciada->InterruptObject) |
{ |
IoDisconnectInterrupt(pciada->InterruptObject); |
pciada->InterruptObject = 0; |
} |
} |
#endif |
return STATUS_SUCCESS; |
} |
/wiener_pcicc32/pcicc32/pcicc32/pcicc32.vcxproj |
---|
0,0 → 1,300 |
<?xml version="1.0" encoding="utf-8"?> |
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
<ItemGroup Label="ProjectConfigurations"> |
<ProjectConfiguration Include="Win8.1 Debug|Win32"> |
<Configuration>Win8.1 Debug</Configuration> |
<Platform>Win32</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win8.1 Release|Win32"> |
<Configuration>Win8.1 Release</Configuration> |
<Platform>Win32</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win8 Debug|Win32"> |
<Configuration>Win8 Debug</Configuration> |
<Platform>Win32</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win8 Release|Win32"> |
<Configuration>Win8 Release</Configuration> |
<Platform>Win32</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win7 Debug|Win32"> |
<Configuration>Win7 Debug</Configuration> |
<Platform>Win32</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win7 Release|Win32"> |
<Configuration>Win7 Release</Configuration> |
<Platform>Win32</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win8.1 Debug|x64"> |
<Configuration>Win8.1 Debug</Configuration> |
<Platform>x64</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win8.1 Release|x64"> |
<Configuration>Win8.1 Release</Configuration> |
<Platform>x64</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win8 Debug|x64"> |
<Configuration>Win8 Debug</Configuration> |
<Platform>x64</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win8 Release|x64"> |
<Configuration>Win8 Release</Configuration> |
<Platform>x64</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win7 Debug|x64"> |
<Configuration>Win7 Debug</Configuration> |
<Platform>x64</Platform> |
</ProjectConfiguration> |
<ProjectConfiguration Include="Win7 Release|x64"> |
<Configuration>Win7 Release</Configuration> |
<Platform>x64</Platform> |
</ProjectConfiguration> |
</ItemGroup> |
<PropertyGroup Label="Globals"> |
<ProjectGuid>{E355652A-FAA5-429D-8308-AFEA65C58B53}</ProjectGuid> |
<TemplateGuid>{1bc93793-694f-48fe-9372-81e2b05556fd}</TemplateGuid> |
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> |
<MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> |
<Configuration>Win8.1 Debug</Configuration> |
<Platform Condition="'$(Platform)' == ''">Win32</Platform> |
<RootNamespace>pcicc32</RootNamespace> |
</PropertyGroup> |
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'" Label="Configuration"> |
<TargetVersion>WindowsV6.3</TargetVersion> |
<UseDebugLibraries>true</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Driver</ConfigurationType> |
<DriverType>KMDF</DriverType> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'" Label="Configuration"> |
<TargetVersion>WindowsV6.3</TargetVersion> |
<UseDebugLibraries>false</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Driver</ConfigurationType> |
<DriverType>KMDF</DriverType> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'" Label="Configuration"> |
<TargetVersion>Windows8</TargetVersion> |
<UseDebugLibraries>true</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Driver</ConfigurationType> |
<DriverType>KMDF</DriverType> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'" Label="Configuration"> |
<TargetVersion>Windows8</TargetVersion> |
<UseDebugLibraries>false</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Driver</ConfigurationType> |
<DriverType>KMDF</DriverType> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'" Label="Configuration"> |
<TargetVersion>Windows7</TargetVersion> |
<UseDebugLibraries>true</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Driver</ConfigurationType> |
<DriverType>KMDF</DriverType> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'" Label="Configuration"> |
<TargetVersion>Windows7</TargetVersion> |
<UseDebugLibraries>false</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Driver</ConfigurationType> |
<DriverType>KMDF</DriverType> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'" Label="Configuration"> |
<TargetVersion>WindowsV6.3</TargetVersion> |
<UseDebugLibraries>true</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Driver</ConfigurationType> |
<DriverType>KMDF</DriverType> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'" Label="Configuration"> |
<TargetVersion>WindowsV6.3</TargetVersion> |
<UseDebugLibraries>false</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Driver</ConfigurationType> |
<DriverType>KMDF</DriverType> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'" Label="Configuration"> |
<TargetVersion>Windows8</TargetVersion> |
<UseDebugLibraries>true</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Driver</ConfigurationType> |
<DriverType>KMDF</DriverType> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'" Label="Configuration"> |
<TargetVersion>Windows8</TargetVersion> |
<UseDebugLibraries>false</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Driver</ConfigurationType> |
<DriverType>KMDF</DriverType> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'" Label="Configuration"> |
<TargetVersion>Windows7</TargetVersion> |
<UseDebugLibraries>true</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Driver</ConfigurationType> |
<DriverType>KMDF</DriverType> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'" Label="Configuration"> |
<TargetVersion>Windows7</TargetVersion> |
<UseDebugLibraries>false</UseDebugLibraries> |
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> |
<ConfigurationType>Driver</ConfigurationType> |
<DriverType>KMDF</DriverType> |
</PropertyGroup> |
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
<ImportGroup Label="ExtensionSettings"> |
</ImportGroup> |
<ImportGroup Label="PropertySheets"> |
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
</ImportGroup> |
<PropertyGroup Label="UserMacros" /> |
<PropertyGroup /> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
</PropertyGroup> |
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'"> |
<DebuggerFlavor>DbgengKernelDebugger</DebuggerFlavor> |
</PropertyGroup> |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'"> |
<ClCompile> |
<WppEnabled>false</WppEnabled> |
<WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> |
<WppKernelMode>true</WppKernelMode> |
</ClCompile> |
</ItemDefinitionGroup> |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'"> |
<ClCompile> |
<WppEnabled>false</WppEnabled> |
<WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> |
<WppKernelMode>true</WppKernelMode> |
</ClCompile> |
</ItemDefinitionGroup> |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'"> |
<ClCompile> |
<WppEnabled>false</WppEnabled> |
<WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> |
<WppKernelMode>true</WppKernelMode> |
</ClCompile> |
</ItemDefinitionGroup> |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'"> |
<ClCompile> |
<WppEnabled>false</WppEnabled> |
<WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> |
<WppKernelMode>true</WppKernelMode> |
</ClCompile> |
</ItemDefinitionGroup> |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|Win32'"> |
<ClCompile> |
<WppEnabled>false</WppEnabled> |
<WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> |
<WppKernelMode>true</WppKernelMode> |
</ClCompile> |
</ItemDefinitionGroup> |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|Win32'"> |
<ClCompile> |
<WppEnabled>false</WppEnabled> |
<WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> |
<WppKernelMode>true</WppKernelMode> |
</ClCompile> |
</ItemDefinitionGroup> |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|x64'"> |
<ClCompile> |
<WppEnabled>true</WppEnabled> |
<WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> |
<WppKernelMode>true</WppKernelMode> |
</ClCompile> |
</ItemDefinitionGroup> |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|x64'"> |
<ClCompile> |
<WppEnabled>true</WppEnabled> |
<WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> |
<WppKernelMode>true</WppKernelMode> |
</ClCompile> |
</ItemDefinitionGroup> |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|x64'"> |
<ClCompile> |
<WppEnabled>true</WppEnabled> |
<WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> |
<WppKernelMode>true</WppKernelMode> |
</ClCompile> |
</ItemDefinitionGroup> |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|x64'"> |
<ClCompile> |
<WppEnabled>true</WppEnabled> |
<WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> |
<WppKernelMode>true</WppKernelMode> |
</ClCompile> |
</ItemDefinitionGroup> |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'"> |
<ClCompile> |
<WppEnabled>true</WppEnabled> |
<WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> |
<WppKernelMode>true</WppKernelMode> |
</ClCompile> |
</ItemDefinitionGroup> |
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Release|x64'"> |
<ClCompile> |
<WppEnabled>true</WppEnabled> |
<WppScanConfigurationData Condition="'%(ClCompile. ScanConfigurationData)' == ''">trace.h</WppScanConfigurationData> |
<WppKernelMode>true</WppKernelMode> |
</ClCompile> |
</ItemDefinitionGroup> |
<ItemGroup> |
<Inf Include="pcicc32.inf" /> |
</ItemGroup> |
<ItemGroup> |
<FilesToPackage Include="$(TargetPath)" /> |
<FilesToPackage Include="@(Inf->'%(CopyOutput)')" Condition="'@(Inf)'!=''" /> |
</ItemGroup> |
<ItemGroup> |
<ClInclude Include="guid.h" /> |
<ClInclude Include="pcicc32.h" /> |
<ClInclude Include="pcicc32_drv.h" /> |
<ClInclude Include="pcicc32_i.h" /> |
<ClInclude Include="pcicc32_io.h" /> |
<ClInclude Include="pcicc32_local.h" /> |
<ClInclude Include="pcicc32_v.h" /> |
</ItemGroup> |
<ItemGroup> |
<ClCompile Include="pcicc32_drv.c" /> |
<ClCompile Include="pcicc32_i.c" /> |
<ClCompile Include="pcicc32_io.c" /> |
<ClCompile Include="pcicc32_v.c" /> |
</ItemGroup> |
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
<ImportGroup Label="ExtensionTargets"> |
</ImportGroup> |
</Project> |
/wiener_pcicc32/pcicc32/pcicc32/pcicc32_drv.c |
---|
0,0 → 1,1063 |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32 (CAMAC) interface of ARW Elektronik, Germany -- |
// the main body of the driver |
// |
// (c) 2000-2002 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistribute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started out of pcivme sources AR 25.03.2000 |
// added IRQ handling AR 24.02.2001 |
// Added AUTOREAD functionality AR 17.03.2001 |
// Added LCR_READ AR 31.03.2001 |
// resource allocation registers idle entries too AR 25.11.2001 |
// changed making procedure (only VCC > 6.0) AR 30.05.2002 |
// totally rearanged resource alloc for WIN2000 AR 01.06.2002 |
// version 2.14 eleminates PLXBUG in WIN2000 AR 05.06.2002 |
// added KeSynchronizeExecution for interrupt sync AR 16.06.2002 |
// |
//------------------------------------------------------------------------ |
// DEFINES |
// |
#ifndef DWORD |
#define DWORD ULONG |
#endif |
#ifndef WORD |
#define WORD USHORT |
#endif |
#define CTL_INDEX(x) ((x >> 2) & 0xFF) // get user control code as index |
#define RESOURCE_ENTRY_COUNT 6 // WIN2000 forces to claim all entries |
#define DOS_DEVICE_NAME L"\\DosDevices\\PCICC32:" |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
#include <ntddk.h> |
#include <devioctl.h> |
// #include <wdm.h> |
#include <pcicc32_drv.h> |
#include <pcicc32.h> |
#include <pcicc32_v.h> |
#include <pcicc32_i.h> |
#include <pcicc32_io.h> |
//------------------------------------------------------------------------ |
// TYPEDEFS |
// |
typedef struct |
{ |
FILE_OBJ *file_obj; |
PCIADA *pciada; |
PVOID pOutputBuffer; |
PVOID pInputBuffer; |
ULONG Address; |
DWORD Length; |
} SYNC_CONTEXT; |
//------------------------------------------------------------------------ |
// GLOBALS |
// |
//------------------------------------------------------------------------ |
// FUNCTIONS |
// |
//------------------------------------------------------------------------ |
// for debug only - print interrupt line |
// |
#if DBG |
void PrintInterruptLine(int Bus, int Slot) |
{ |
PCI_COMMON_CONFIG pci_config; |
HalGetBusData( PCIConfiguration, // Bustype |
Bus, // PCI-Busnumber |
Slot, // Slotnumber |
(PVOID) &(pci_config), // Pointer for the PCI-Information |
sizeof(PCI_COMMON_CONFIG)); |
KdPrint(("Irql: %d\n", pci_config.u.type0.InterruptLine)); |
} |
#endif |
//------------------------------------------------------------------------ |
// get the cc32 number out of the filename |
// |
NTSTATUS InterpreteFileName(PCHAR name, int *nCC32) |
{ |
char *ptr = name; |
char *n = "cc32_"; |
int h = -1; // high part |
int l = -1; // low part |
if (*ptr == '\\') ptr++; // jump over leading ... |
while (*n) // compare the basename |
if (*n == tolower(*ptr)) |
{ |
n++; |
ptr++; |
} |
else |
return STATUS_NO_SUCH_FILE; |
h = *ptr - '0'; // get the number |
ptr++; |
l = *ptr - '0'; |
if (*ptr == 0) // still over the end ?? |
{ |
l = h; |
h = 0; |
} |
else |
ptr++; |
if ((h < 0) || (l < 0) || (*ptr != 0)) // anything wrong ?? |
return STATUS_NO_SUCH_FILE; |
*nCC32 = (h * 10) + l; // calculate number |
if (*nCC32 >= PCICC32_MAX_CC32) // out of range ?? |
return STATUS_NO_SUCH_FILE; |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// the ultimate driver unload |
VOID PCICC32Unload(PDRIVER_OBJECT driverObj) |
{ |
int i; |
UNICODE_STRING symbol_name; |
DEVICE_EXT *ext = (DEVICE_EXT*)(driverObj->DeviceObject->DeviceExtension); |
int nPCIADAs = ext->nPCIADAs; |
PCIADA *pciada; |
KdPrint(("PCICC32Unload()\n")); |
switch (ext->nInitState) |
{ |
case 8: |
case 7: |
case 6: |
// stop interrupts and shut off |
PCICC32DeInitPCIADAs(driverObj->DeviceObject); |
PCICC32DisConnectInterrupt(driverObj->DeviceObject); |
case 5: |
// KeInitializeDpc has no counterpart |
case 4: |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &ext->pciada[i]; |
if (pciada->pvVirtLcr != NULL) |
MmUnmapIoSpace(pciada->pvVirtLcr, LCR_SPACE); |
if (pciada->pvVirtIfr != NULL) |
MmUnmapIoSpace(pciada->pvVirtIfr, IFR_SPACE); |
} |
case 3: |
// HalGetInterruptVector has no counterpart |
case 2: |
// HalTranslateBusAddress has no counterpart |
case 1: |
PCICC32FreeResources(driverObj->DeviceObject); |
default: |
case 0: |
RtlInitUnicodeString(&symbol_name, DOS_DEVICE_NAME); |
// delete the symbolicLink in the registry |
IoDeleteSymbolicLink( &symbol_name); |
// delete the deviceObject |
IoDeleteDevice(driverObj->DeviceObject); |
} |
KdPrint(("PCICC32Unload() OK.\n")); |
} |
//------------------------------------------------------------------------ |
// called at CreateFile() |
NTSTATUS PCICC32Open(PDEVICE_OBJECT deviceObj, PIRP Irp) |
{ |
NTSTATUS result = STATUS_SUCCESS; |
ANSI_STRING name; |
int nCC32; |
int i; |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(deviceObj->DeviceExtension); |
PCIADA *pciada; |
FILE_OBJ *file_obj; |
name.Buffer = NULL; |
name.MaximumLength = 80; |
result = RtlUnicodeStringToAnsiString(&name, &(Irp->Tail.Overlay.OriginalFileObject->FileName), TRUE); |
if (result != STATUS_SUCCESS) goto fin; |
KdPrint(("PCICC32Open(%s)\n", name.Buffer)); |
result = InterpreteFileName(name.Buffer, &nCC32); |
if (result != STATUS_SUCCESS) goto fin; |
KdPrint(("PCICC32Open(%d)\n", nCC32)); |
RtlFreeAnsiString(&name); |
file_obj = (FILE_OBJ *)ExAllocatePool(NonPagedPool, sizeof(FILE_OBJ)); |
if (file_obj == (FILE_OBJ *)NULL) |
{ |
result = STATUS_NO_MEMORY; |
goto fin; |
} |
file_obj->uwAssociatedCC32 = (USHORT) nCC32; |
Irp->Tail.Overlay.OriginalFileObject->FsContext = (PVOID)file_obj; |
result = PCICC32ScanCC32(deviceObj); |
if (result != STATUS_SUCCESS) goto fin; |
for (i = 0; i < pDevExt->nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
if (pciada->wModuleNumber == nCC32) |
{ |
pDevExt->cc32[nCC32] = pciada; // create association |
pciada->dwLinkCount++; |
enableCC32(pciada); |
break; |
} |
} |
if (i >= pDevExt->nPCIADAs) |
{ |
result = STATUS_NO_SUCH_FILE; |
goto fin; |
} |
fin: |
Irp->IoStatus.Status = result; |
Irp->IoStatus.Information = 0; |
IoCompleteRequest(Irp, IO_NO_INCREMENT); |
return result; |
} |
//------------------------------------------------------------------------ |
// called at close() |
NTSTATUS PCICC32Close(PDEVICE_OBJECT deviceObj, PIRP Irp) |
{ |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(deviceObj->DeviceExtension); |
FILE_OBJ *file_obj = (FILE_OBJ *)NULL; |
PCIADA *pciada; |
file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
KdPrint(("PCICC32Close(%d)\n", file_obj->uwAssociatedCC32)); |
if (file_obj != (FILE_OBJ *)NULL) |
{ |
pciada = pDevExt->cc32[file_obj->uwAssociatedCC32]; |
pciada->dwLinkCount--; |
// disable interrupts when closing |
if (pciada->pIrqControlFile == file_obj) |
{ |
pciada->pIrqControlFile = (FILE_OBJ *)NULL; |
globalInterruptDisable(pciada); |
} |
// cancel any blocking Irp origin from this file |
if (file_obj->blockingIrp != (PIRP)NULL) |
file_obj->blockingIrp = (PIRP)NULL; |
if (pciada->pBlockingIrp == &file_obj->blockingIrp) |
pciada->pBlockingIrp = (PIRP *)NULL; |
if (!pciada->dwLinkCount) |
disableCC32(pciada); |
ExFreePool(file_obj); |
Irp->Tail.Overlay.OriginalFileObject->FsContext = (FILE_OBJ *)NULL; |
} |
KdPrint(("PCICC32Close OK\n")); |
Irp->IoStatus.Status = STATUS_SUCCESS; |
Irp->IoStatus.Information = 0; |
IoCompleteRequest(Irp, IO_NO_INCREMENT); |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// called at |
NTSTATUS PCICC32Shutdown(PDEVICE_OBJECT deviceObj, PIRP irp) |
{ |
UNREFERENCED_PARAMETER(irp); |
KdPrint(("PCICC32Shutdown()\n")); |
// deinit interfaces and interrupts |
PCICC32DeInitPCIADAs(deviceObj); |
KdPrint(("PCICC32Shutdown() OK\n")); |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// called at ioctl() |
NTSTATUS PCICC32DeviceControl(PDEVICE_OBJECT deviceObj, PIRP Irp) |
{ |
PIO_STACK_LOCATION IrpStack; |
int nIndex; |
IrpStack = IoGetCurrentIrpStackLocation(Irp); |
nIndex = CTL_INDEX(IrpStack->Parameters.DeviceIoControl.IoControlCode); |
KdPrint(("PCICC32DeviceControl(%d / 0x%08x)\n", nIndex, Irp->Tail.Overlay.OriginalFileObject)); |
if (nIndex > CTL_INDEX(PCICC32_LAST_CTL_CODE)) |
{ |
KdPrint(("LastIndex(%d)\n", CTL_INDEX(PCICC32_LAST_CTL_CODE))); |
Irp->IoStatus.Status = STATUS_UNSUCCESSFUL; |
Irp->IoStatus.Information = 0; |
IoCompleteRequest(Irp,IO_NO_INCREMENT); |
KdPrint(("PCICC32DeviceControl() FAIL.\n")); |
return STATUS_UNSUCCESSFUL; |
} |
return ioctl[nIndex](deviceObj, Irp, IrpStack); |
} |
//------------------------------------------------------------------------ |
// called at read() |
static BOOLEAN PCICC32Read_kernel(PVOID pvContext) |
{ |
register SYNC_CONTEXT *context = (SYNC_CONTEXT *)pvContext; |
register ULONG i = 0; |
USHORT wCntrl; |
wCntrl = READ_REGISTER_USHORT(context->pciada->pwCntrl); |
if (context->file_obj->wBlockTransfer & AUTOREAD) |
{ |
wCntrl &= ~0x0004; // enable autoread - set bit to 0 |
WRITE_REGISTER_USHORT(context->pciada->pwCntrl, wCntrl); |
} |
// do the read --- |
if (context->file_obj->wBlockTransfer & UNTIL_NOT_Q) |
{ |
// read first time to get Q information |
register ULONG tempBuffer = READ_REGISTER_ULONG((ULONG *)context->Address); |
if (context->file_obj->wAccessType == WORD_ACCESS) |
{ |
PUSHORT pwBuffer = (PUSHORT)context->pOutputBuffer; |
PUSHORT pwBufEnd = (PUSHORT)((PUCHAR)context->pOutputBuffer + context->Length); |
while ((tempBuffer & 0x80000000) && (pwBuffer < pwBufEnd)) |
{ |
*pwBuffer++ = (USHORT)tempBuffer; |
tempBuffer = READ_REGISTER_ULONG((ULONG *)context->Address); // read the same address multiple times as long to get Q |
i++; |
} |
} |
else |
{ |
// LONG_ACCESS |
PULONG pdwBuffer = (PULONG)context->pOutputBuffer; |
PULONG pdwBufEnd = (PULONG)((PUCHAR)context->pOutputBuffer + context->Length); |
while ((tempBuffer & 0x80000000) && (pdwBuffer < pdwBufEnd)) |
{ |
*pdwBuffer++ = tempBuffer; |
tempBuffer = READ_REGISTER_ULONG((ULONG *)context->Address); // read the same address multiple times as long to get Q |
i++; |
} |
} |
i *= context->file_obj->wAccessType; |
KdPrint(("UNTIL_NOT_Q, 0x%08x bytes read\n", i)); |
} |
else // no UNTIL_NOT_Q |
{ |
while (i < context->Length) |
{ |
context->file_obj->fRead((void *)((PUCHAR)context->pOutputBuffer + i), (void *)context->Address); // read the same address multiple times |
i += context->file_obj->wAccessType; |
} |
} |
// disable autoread unconditionally - set bit to 1 |
wCntrl |= 0x0004; |
WRITE_REGISTER_USHORT(context->pciada->pwCntrl, wCntrl); |
context->Length = i; |
return TRUE; |
} |
NTSTATUS PCICC32Read(PDEVICE_OBJECT device_Obj, PIRP Irp) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
PIO_STACK_LOCATION IrpStack = IoGetCurrentIrpStackLocation(Irp); |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
SYNC_CONTEXT context; |
context.file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
context.pciada = pDevExt->cc32[context.file_obj->uwAssociatedCC32]; |
context.pOutputBuffer = ((void *)(MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority))); |
context.Address = IrpStack->Parameters.Read.ByteOffset.LowPart; |
context.Length = 0; |
KdPrint(("PCICC32Read(%d)\n", context.file_obj->uwAssociatedCC32)); |
if (context.Address > IFR_SPACE) |
Status = STATUS_ACCESS_VIOLATION; |
else |
{ |
// do here in between what has to be done ----------------- |
context.Length = IrpStack->Parameters.Read.Length; |
KdPrint(("Address = 0x%08x, Length = 0x%08x\n", context.Address, context.Length)); |
context.Address = (ULONG)context.pciada->pvVirtIfr + context.Address; |
KeSynchronizeExecution(context.pciada->InterruptObject, PCICC32Read_kernel, &context); |
// do here in between what has to be done end ------------- |
} |
Irp->IoStatus.Status = Status; |
Irp->IoStatus.Information = context.Length; |
IoCompleteRequest(Irp,IO_NO_INCREMENT); |
KdPrint(("PCICC32Read(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// called at write() |
static BOOLEAN PCICC32Write_kernel(PVOID pvContext) |
{ |
register SYNC_CONTEXT *context = (SYNC_CONTEXT *)pvContext; |
register ULONG i = 0; |
// do the write --- |
while (i < context->Length) |
{ |
context->file_obj->fWrite((void *)context->Address, (void *)((PUCHAR)context->pInputBuffer + i)); // write the same address multiple times |
i += context->file_obj->wAccessType; |
} |
context->Length = i; |
return TRUE; |
} |
NTSTATUS PCICC32Write(PDEVICE_OBJECT device_Obj, PIRP Irp) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
PIO_STACK_LOCATION IrpStack = IoGetCurrentIrpStackLocation(Irp); |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
SYNC_CONTEXT context; |
context.file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
context.pciada = pDevExt->cc32[context.file_obj->uwAssociatedCC32]; |
context.pInputBuffer = ((void *)(MmGetSystemAddressForMdlSafe(Irp->MdlAddress, NormalPagePriority))); |
context.Address = IrpStack->Parameters.Read.ByteOffset.LowPart; |
context.Length = 0; |
KdPrint(("PCICC32Write(%d)\n", context.file_obj->uwAssociatedCC32)); |
if (context.Address > IFR_SPACE) |
Status = STATUS_ACCESS_VIOLATION; |
else |
{ |
// register ULONG i = 0; |
// do here in between what has to be done ----------------- |
context.Length = IrpStack->Parameters.Read.Length; |
KdPrint(("Address = 0x%08x, Length = 0x%08x\n", context.Address, context.Length)); |
context.Address = (ULONG)context.pciada->pvVirtIfr + context.Address; |
KeSynchronizeExecution(context.pciada->InterruptObject, PCICC32Write_kernel, &context); |
// do here in between what has to be done end ------------- |
} |
Irp->IoStatus.Status = Status; |
Irp->IoStatus.Information = context.Length; |
IoCompleteRequest(Irp,IO_NO_INCREMENT); |
KdPrint(("PCICC32Write(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// search for pciada's |
// |
NTSTATUS SearchDevices(PDEVICE_OBJECT device_Obj) |
{ |
PCI_SLOT_NUMBER SlotNumber; |
PCI_COMMON_CONFIG pci_config; |
PCIADA *pciada; |
ULONG length; |
int *found; |
int i,j,k; |
KdPrint(("SearchDevices()\n")); |
// prepare structures ---------------------------------------- |
found = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->nPCIADAs; |
*found = 0; |
for (i = 0; i < PCICC32_MAX_PCIADA; i++) |
{ |
pciada = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->pciada[i]; |
pciada->Bus = -1; |
pciada->Slot.u.AsULONG = 0xFFFFFFFF; |
} |
// search for pciada's --------------------------------------- |
SlotNumber.u.bits.Reserved = 0; |
for (j = 0; j < PCI_MAX_BUSES; j++) |
{ |
for (i = 0; i < PCI_MAX_DEVICES; i++) |
{ |
SlotNumber.u.bits.DeviceNumber = i; |
for (k = 0; k < PCI_MAX_FUNCTION; k++) |
{ |
SlotNumber.u.bits.FunctionNumber = k; |
length = HalGetBusData( PCIConfiguration, // Bustype |
j, // PCI-Busnumber |
SlotNumber.u.AsULONG, // Slotnumber |
(PVOID) &(pci_config), // Pointer for the PCI-Information |
sizeof(PCI_COMMON_CONFIG) ); |
if ((pci_config.VendorID == PCICC32_VENDOR_ID) && |
(pci_config.DeviceID == PCICC32_DEVICE_ID) && |
(pci_config.u.type0.SubSystemID == PCICC32_SUBSYS_ID) && |
(pci_config.u.type0.SubVendorID == PCICC32_SUBVEN_ID) && |
(pci_config.u.type0.BaseAddresses[3])) |
{ |
pciada = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->pciada[*found]; |
memcpy(&pciada->PCIDevice, &pci_config, sizeof(pci_config)); |
pciada->Slot = SlotNumber; |
pciada->Bus = j; |
KdPrint(("PCIADA found @ Bus/Slot %d/%d.\n", pciada->Bus, pciada->Slot.u.AsULONG)); |
(*found)++; |
if (*found >= PCICC32_MAX_PCIADA) return STATUS_SUCCESS; |
} |
} |
} |
} |
return STATUS_SUCCESS; |
} |
//--------------------------------------------------------------- |
// function to call for bug fix of PLX9050 build in bug |
// |
NTSTATUS PLX9050BugFix(PDEVICE_OBJECT device_Obj) |
{ |
DEVICE_EXT *DeviceExtension = (DEVICE_EXT*)device_Obj->DeviceExtension; |
int i; |
ULONG dwData; |
PCIADA *pciada; |
KdPrint(("PLX9050BugFix()\n")); |
for (i = 0; i < DeviceExtension->nPCIADAs; i++) |
{ |
pciada = &DeviceExtension->pciada[i]; |
if ((dwData = pciada->PCIDevice.u.type0.BaseAddresses[0]) & 0x80) |
{ |
KdPrint(("Changing address 0:0x%p with 4:0x%p\n", |
pciada->PCIDevice.u.type0.BaseAddresses[0], |
pciada->PCIDevice.u.type0.BaseAddresses[4])); |
pciada->PCIDevice.u.type0.BaseAddresses[0] = // exchange |
pciada->PCIDevice.u.type0.BaseAddresses[4]; |
pciada->PCIDevice.u.type0.BaseAddresses[4] = dwData; |
if (HalSetBusDataByOffset(PCIConfiguration, pciada->Bus, |
pciada->Slot.u.AsULONG, |
(PVOID)&pciada->PCIDevice.u.type0.BaseAddresses[0], |
0x10, 4) != 4) |
return STATUS_UNSUCCESSFUL; |
if (HalSetBusDataByOffset(PCIConfiguration, pciada->Bus, |
pciada->Slot.u.AsULONG, |
(PVOID)&pciada->PCIDevice.u.type0.BaseAddresses[4], |
0x20, 4) != 4) |
return STATUS_UNSUCCESSFUL; |
} |
if ((dwData = pciada->PCIDevice.u.type0.BaseAddresses[1]) & 0x80) |
{ |
KdPrint(("Changing address 1:0x%p with 5:0x%p\n", |
pciada->PCIDevice.u.type0.BaseAddresses[1], |
pciada->PCIDevice.u.type0.BaseAddresses[5])); |
pciada->PCIDevice.u.type0.BaseAddresses[1] = // exchange |
pciada->PCIDevice.u.type0.BaseAddresses[5]; |
pciada->PCIDevice.u.type0.BaseAddresses[5] = dwData; |
if (HalSetBusDataByOffset(PCIConfiguration, pciada->Bus, |
pciada->Slot.u.AsULONG, |
(PVOID)&pciada->PCIDevice.u.type0.BaseAddresses[1], |
0x14, 4) != 4) |
return STATUS_UNSUCCESSFUL; |
if (HalSetBusDataByOffset(PCIConfiguration, pciada->Bus, |
pciada->Slot.u.AsULONG, |
(PVOID)&pciada->PCIDevice.u.type0.BaseAddresses[5], |
0x24, 4) != 4) |
return STATUS_UNSUCCESSFUL; |
} |
} |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// reserve resources for PCIADAs |
// |
NTSTATUS PCICC32ExtractResources(PCIADA *pciada, PCM_RESOURCE_LIST pList) |
{ |
PCM_RESOURCE_LIST pResourceList; |
PCM_FULL_RESOURCE_DESCRIPTOR pFullDescriptor; |
PCM_PARTIAL_RESOURCE_LIST pPartialList; |
PCM_PARTIAL_RESOURCE_DESCRIPTOR pPartialDescriptor; |
int i; |
int bug = 0; |
KdPrint(("PCICC32ExtractResources()\n")); |
pResourceList = pList; |
pFullDescriptor = pResourceList->List; |
pPartialList = &pFullDescriptor->PartialResourceList; |
for (i=0; i<(int)pPartialList->Count; i++) |
{ |
pPartialDescriptor = &pPartialList->PartialDescriptors[i]; |
switch (pPartialDescriptor->Type) |
{ |
case CmResourceTypeInterrupt: |
pciada->Irql = (KIRQL)pPartialDescriptor->u.Interrupt.Level; |
pciada->Vector = pPartialDescriptor->u.Interrupt.Vector; |
pciada->Affinity = pPartialDescriptor->u.Interrupt.Affinity; |
KdPrint(("Irq : Irql: %d, Vector: %d, Affinity: %d\n", |
pciada->Irql, pciada->Vector, pciada->Affinity)); |
break; |
case CmResourceTypeDma: |
KdPrint(("Dma : \n")); |
break; |
case CmResourceTypePort: |
KdPrint(("Port : 0x%p\n", pPartialDescriptor->u.Port.Start)); |
break; |
case CmResourceTypeMemory: |
// special handling of PLXBUG here because of WIN2000 |
// WIN2000 doesn't recognize late address changes |
if (!bug) |
{ |
if (i == 0) |
{ |
pciada->pvPhysLcr = pPartialDescriptor->u.Memory.Start; |
if (pciada->pvPhysLcr.LowPart & 0x80) |
bug = 1; |
} |
} |
else |
{ |
if (i == 3) |
pciada->pvPhysLcr = pPartialDescriptor->u.Memory.Start; |
} |
if (i == 2) |
pciada->pvPhysIfr = pPartialDescriptor->u.Memory.Start; |
KdPrint(("Memory : 0x%p\n", (PUCHAR)pPartialDescriptor->u.Memory.Start.LowPart)); |
break; |
} |
} |
if (pciada->Irql == 0) |
return STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT; |
KdPrint(("PCICC32ExtractResources() OK.\n")); |
return STATUS_SUCCESS; |
} |
NTSTATUS PCICC32ReserveResources(PDEVICE_OBJECT device_Obj) |
{ |
PCM_RESOURCE_LIST pList = NULL; |
NTSTATUS result = STATUS_SUCCESS; |
int i; |
DEVICE_EXT *pDevExt = (DEVICE_EXT*)(device_Obj->DeviceExtension); |
int nPCIADAs = pDevExt->nPCIADAs; |
PCIADA *pciada; |
UNICODE_STRING DriverClassName; |
KdPrint(("PCICC32ReserveResources()\n")); |
// prepare resource claiming |
RtlInitUnicodeString(&DriverClassName, L"PCICC32"); |
// cycle through all busses and slots assigned to PCIADAs |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
result = HalAssignSlotResources(NULL, &DriverClassName, device_Obj->DriverObject, device_Obj, |
PCIBus, pciada->Bus, pciada->Slot.u.AsULONG, &pList); |
if (result != STATUS_SUCCESS) |
break; |
result = PCICC32ExtractResources(pciada, pList); |
if (result != STATUS_SUCCESS) |
break; |
} |
// its my part to free allocated resources |
ExFreePool(pList); |
KdPrint(("PCICC32ReserveResources(0x%08x)\n", result)); |
return result; |
}; |
//------------------------------------------------------------------------ |
// free resources from PCIADAs |
// |
NTSTATUS PCICC32FreeResources(PDEVICE_OBJECT device_Obj) |
{ |
CM_RESOURCE_LIST ResList; |
BOOLEAN bConflict; |
UNICODE_STRING DriverClassName; |
KdPrint(("PCICC32FreeResources()\n")); |
RtlInitUnicodeString(&DriverClassName, L"PCICC32"); |
ResList.Count = 0; |
IoReportResourceUsage(&DriverClassName, device_Obj->DriverObject, |
&ResList, sizeof(ResList), device_Obj, |
NULL, 0, FALSE, &bConflict); |
return STATUS_SUCCESS; |
}; |
//------------------------------------------------------------------------ |
// translate memory resources to neutral for PCIADAs |
// |
NTSTATUS PCICC32TranslateBusAddresses(PDEVICE_OBJECT device_Obj) |
{ |
int i; |
NTSTATUS result = STATUS_SUCCESS; |
int nPCIADAs = ((DEVICE_EXT*)(device_Obj->DeviceExtension))->nPCIADAs; |
ULONG memType0, memType2; |
PCIADA *pciada; |
KdPrint(("TranslateBusAddresseses()\n")); |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->pciada[i]; |
memType0 = memType2 = 0; |
if (!(HalTranslateBusAddress(PCIBus, pciada->Bus, pciada->pvPhysLcr, &memType0, |
&pciada->pvPhysLcr)) || |
!(HalTranslateBusAddress(PCIBus, pciada->Bus, pciada->pvPhysIfr, &memType2, |
&pciada->pvPhysIfr))) |
{ |
result = STATUS_UNSUCCESSFUL; |
break; |
} |
if ((memType0) || (memType2)) |
{ |
result = STATUS_UNSUCCESSFUL; |
break; |
} |
} |
return result; |
} |
//------------------------------------------------------------------------ |
// map address spaces to virtual addresses |
// |
NTSTATUS PCICC32MapIOspaces(PDEVICE_OBJECT device_Obj) |
{ |
int i; |
DEVICE_EXT *pDevExt = (DEVICE_EXT*)device_Obj->DeviceExtension; |
int nPCIADAs = pDevExt->nPCIADAs; |
PCIADA *pciada; |
KdPrint(("PCICC32MapIOspaces()\n")); |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
if ((pciada->pvVirtLcr = MmMapIoSpace(pciada->pvPhysLcr, LCR_SPACE, FALSE)) == NULL) |
return STATUS_UNSUCCESSFUL; |
if ((pciada->pvVirtIfr = MmMapIoSpace(pciada->pvPhysIfr, IFR_SPACE, FALSE)) == NULL) |
return STATUS_UNSUCCESSFUL; |
KdPrint(("PCIADA %d: LCR 0x%08x IFR 0x%08x\n", i, pciada->pvVirtLcr, pciada->pvVirtIfr)); |
pciada->pwIntCSR = (PUSHORT)((PUCHAR)pciada->pvVirtLcr + 0x4C); |
pciada->pwCntrl = (PUSHORT)((PUCHAR)pciada->pvVirtLcr + 0x50); |
} |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// initializes and registers a DPC routine for each pciada |
// |
NTSTATUS InitializeCustomDPCObjects(PDEVICE_OBJECT device_object) |
{ |
int i; |
DEVICE_EXT *pDevExt = (DEVICE_EXT*)(device_object->DeviceExtension); |
int nPCIADAs = pDevExt->nPCIADAs; |
PCIADA *pciada; |
KdPrint(("InitializeCustomDPCObject()\n")); |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
KeInitializeDpc(&pciada->kDPCobj, fMyDefferedRoutine, (PVOID)device_object); |
} |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// init structures a.s.o. |
// |
VOID PCICC32SoftInit(PDEVICE_OBJECT device_Obj) |
{ |
int i; |
PCIADA *pciada; |
for (i = 0; i < PCICC32_MAX_PCIADA; i++) |
{ |
pciada = &((DEVICE_EXT*)(device_Obj->DeviceExtension))->pciada[i]; |
pciada->pvPhysLcr.QuadPart = pciada->pvPhysIfr.QuadPart = 0; |
pciada->pvVirtLcr = pciada->pvVirtIfr = NULL; |
pciada->bConnected = FALSE; // connection still not verified |
pciada->wModuleNumber = 0xFFFF; |
pciada->wFPGAVersion = 0xFFFF; |
pciada->wModuleType = 1; // always CC32 |
pciada->InterruptObject = NULL; |
pciada->Irql = 0; |
pciada->Vector = 0; |
pciada->Affinity = 0; |
pciada->dwLinkCount = 0; |
pciada->dwIrqStatus = 0; |
pciada->pBlockingIrp = (PIRP *)NULL; |
pciada->pIrqControlFile = (FILE_OBJ *)NULL; |
} |
// no CC32 associated to any PCIADA |
for (i = 0; i < PCICC32_MAX_CC32; i++) |
((DEVICE_EXT*)(device_Obj->DeviceExtension))->cc32[i] = NULL; |
} |
//------------------------------------------------------------------------ |
// the ultimate starting point of a driver |
NTSTATUS DriverEntry(PDRIVER_OBJECT driverObj, PUNICODE_STRING regPath) |
{ |
int i; |
PDEVICE_OBJECT device_object; // pointer to the device object |
UNICODE_STRING device_name; |
UNICODE_STRING symbol_name; |
NTSTATUS result = STATUS_SUCCESS; |
PCIADA *pciada; // pointer to a PCIADA |
int nPCIADAs; // count of PCIADAs |
DEVICE_EXT *DeviceExtension = NULL; |
UNREFERENCED_PARAMETER(regPath); |
KdPrint(("DriverEntry() ----%d.%d-------------------------\n", (DRIVER_VERSION >> 16) & 0xFFFF, DRIVER_VERSION & 0xFFFF)); |
driverObj->DriverUnload = PCICC32Unload; |
driverObj->MajorFunction[IRP_MJ_CREATE] = PCICC32Open; |
driverObj->MajorFunction[IRP_MJ_CLOSE] = PCICC32Close; |
driverObj->MajorFunction[IRP_MJ_READ] = PCICC32Read; |
driverObj->MajorFunction[IRP_MJ_WRITE] = PCICC32Write; |
driverObj->MajorFunction[IRP_MJ_DEVICE_CONTROL] = PCICC32DeviceControl; |
driverObj->MajorFunction[IRP_MJ_SHUTDOWN] = PCICC32Shutdown; |
RtlInitUnicodeString(&device_name, L"\\Device\\CC32"); |
/* DeviceObject durch IO-Manager erzeugen */ |
result = IoCreateDevice( driverObj, // DriverObject received by the DriverEntry Call |
sizeof(DEVICE_EXT), // required Memory for the DeviceExtension |
&device_name, // Name of the device in the device-Directory |
FILE_DEVICE_UNKNOWN, // Device-ID |
0, // Device-Characteristics normal 0 |
FALSE, // TRUE : one Thread can open the driver |
&device_object); // DeviceObject returned from the IO-Manager |
// defines how the data are handled between user / kernel Adress-Space |
device_object->Flags |= DO_DIRECT_IO; |
// anounce driver as symbolic device --------------------------------- |
if (result == STATUS_SUCCESS) |
{ |
/* now the symbolic Link is created. If there is no S.L. a program cannot connect to the driver */ |
RtlInitUnicodeString(&symbol_name, DOS_DEVICE_NAME); |
result = IoCreateSymbolicLink(&symbol_name,&device_name); |
if (result != STATUS_SUCCESS) |
{ |
IoDeleteDevice(device_object); |
return result; |
} |
} |
else |
return result; |
DeviceExtension = (DEVICE_EXT*)device_object->DeviceExtension; |
DeviceExtension->actualIrp = NULL; |
DeviceExtension->nInitState = 0; |
// init pciada structures ------------------------------------ |
PCICC32SoftInit(device_object); |
// search for PCIADAs ---------------------------------------- |
result = SearchDevices(device_object); |
nPCIADAs = DeviceExtension->nPCIADAs; |
if ((result != STATUS_SUCCESS) || !(nPCIADAs)) |
{ |
PCICC32Unload(driverObj); |
return STATUS_DEVICE_DOES_NOT_EXIST; |
} |
// request exclusive ownership of .. --------------------------------- |
if ((result = PCICC32ReserveResources(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return result; |
} |
else |
DeviceExtension->nInitState++; |
// fix PLX9050 Bug ------------------------------------------- |
if ((result = PLX9050BugFix(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return result; |
} |
// translate BUS relative addresses ---------------------------------- |
if ((result = PCICC32TranslateBusAddresses(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return STATUS_DEVICE_DOES_NOT_EXIST; |
} |
else |
DeviceExtension->nInitState++; |
// translate Interrupt Resources used -------------------------------- |
if ((result = PCICC32TranslateInterrupt(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return STATUS_DEVICE_DOES_NOT_EXIST; |
} |
else |
DeviceExtension->nInitState++; |
// map address spaces to virtual addresses --------------------------- |
if ((result = PCICC32MapIOspaces(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return STATUS_DEVICE_DOES_NOT_EXIST; |
} |
else |
DeviceExtension->nInitState++; |
// initialze my custom DPC objects ----------------------------------- |
if ((result = InitializeCustomDPCObjects(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return result; |
} |
else |
DeviceExtension->nInitState++; |
// disable all interrupts -------------------------------------------- |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &DeviceExtension->pciada[i]; |
globalInterruptDisable(pciada); |
} |
// connect interrupts to service routines ---------------------------- |
if ((result = PCICC32ConnectInterrupt(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return STATUS_DEVICE_DOES_NOT_EXIST; |
} |
else |
DeviceExtension->nInitState++; |
// scan all connected CC32 for info and later use ------------------- |
if ((result = PCICC32ScanCC32(device_object)) != STATUS_SUCCESS) |
{ |
PCICC32Unload(driverObj); |
return STATUS_DEVICE_DOES_NOT_EXIST; |
} |
device_object->Flags &= ~DO_DEVICE_INITIALIZING; |
KdPrint(("DriverEntry() OK.\n")); |
return result; |
} |
/wiener_pcicc32/pcicc32/pcicc32/pcicc32_i.h |
---|
0,0 → 1,55 |
#ifndef __PCICC33_I_H__ |
#define __PCICC32_I_H__ |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32 interface from ARW Elektronik, Germany --------- |
// the header file to pcicc32_i.c - all around interrupt handling |
// |
// (c) 1999 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started AR 15.06.1999 |
// added globalInterruptEnabledStatus() AR 24.02.2001 |
// |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
#include <ntddk.h> |
#include <pcicc32_drv.h> |
//------------------------------------------------------------------------ |
// DEFINES |
// |
//------------------------------------------------------------------------ |
// PROTOTYPES |
// |
void globalInterruptEnable(PCIADA *pciada); |
void globalInterruptDisable(PCIADA *pciada); |
unsigned short globalInterruptEnabledStatus(PCIADA *pciada); |
NTSTATUS PCICC32TranslateInterrupt(PDEVICE_OBJECT device_Obj); |
NTSTATUS PCICC32ConnectInterrupt(PDEVICE_OBJECT device_Obj); |
NTSTATUS PCICC32DisConnectInterrupt(PDEVICE_OBJECT device_Obj); |
/* release all this procedures after init of the driver */ |
#ifdef ALLOC_PRAGMA |
#pragma alloc_text (init, PCICC32ConnectInterrupt) |
#pragma alloc_text (init, PCICC32TranslateInterrupt) |
#endif |
/* put all this procedures in the paged memory-pool, all called at passiv Level */ |
#ifdef ALLOC_PRAGMA |
#pragma alloc_text (page, PCICC32DisConnectInterrupt) |
#endif |
#endif //__PCICC32_I_H__ |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/vc120.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.20.51 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/stampinf.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/pcicc32_v.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/pcicc32.log |
---|
0,0 → 1,23 |
Build started 10.2.2014 7:32:20. |
1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32\pcicc32.vcxproj" on node 2 (Rebuild target(s)). |
1>StampInf: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\stampinf.exe -d "*" -a "x86" -v "*" -k "1.11" -u "1.11.0" -f Win7Release\pcicc32.inf |
Stamping Win7Release\pcicc32.inf [Version] section with DriverVer=02/10/2014,7.32.20.51 |
ClCompile: |
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /IWin7Release\ /Zi /nologo /W4 /WX /Ox /Os /Oy- /D _X86_=1 /D i386=1 /D STD_CALL /D _WIN32_WINNT=0x0601 /D WINVER=0x0601 /D WINNT=1 /D NTDDI_VERSION=0x06010000 /D KMDF_VERSION_MAJOR=1 /D KMDF_VERSION_MINOR=11 /GF /Gm- /Zp8 /GS /Gy /fp:precise /Zc:wchar_t- /Zc:forScope- /GR- /Fo"Win7Release\\" /Fd"Win7Release\vc120.pdb" /Gz /wd4603 /wd4627 /wd4986 /wd4987 /wd4996 /FI"C:\Program Files (x86)\Windows Kits\8.1\Include\Shared\warning.h" /analyze- /errorReport:prompt /kernel -cbstring /d1nodatetime /d1import_no_registry /d2AllowCompatibleILVersions /d2Zi+ pcicc32_drv.c pcicc32_i.c pcicc32_io.c pcicc32_v.c |
pcicc32_drv.c |
pcicc32_i.c |
pcicc32_io.c |
pcicc32_v.c |
Generating Code... |
Link: |
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win7Release\pcicc32.sys" /VERSION:"6.3" /INCREMENTAL:NO /NOLOGO /WX /SECTION:"INIT,d" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\memcmp.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\BufferOverflowK.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\ntoskrnl.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\hal.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\wmilib.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfLdr.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfDriverEntry.lib" /NODEFAULTLIB /MANIFEST:NO /DEBUG /PDB:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win7Release\pcicc32.pdb" /SUBSYSTEM:NATIVE,"6.01" /Driver /OPT:REF /OPT:ICF /ENTRY:"FxDriverEntry@8" /RELEASE /IMPLIB:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win7Release\pcicc32.lib" /MERGE:"_TEXT=.text;_PAGE=PAGE" /MACHINE:X86 /PROFILE /SAFESEH /kernel /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 /osversion:6.3 /pdbcompress /debugtype:pdata Win7Release\pcicc32_drv.obj |
Win7Release\pcicc32_i.obj |
Win7Release\pcicc32_io.obj |
Win7Release\pcicc32_v.obj |
pcicc32.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win7Release\pcicc32.sys |
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32\pcicc32.vcxproj" (Rebuild target(s)). |
Build succeeded. |
Time Elapsed 00:00:00.67 |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/pcicc32_io.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/pcicc32_i.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/pcicc32.tlog/link.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/pcicc32.tlog/pcicc32.lastbuildstate |
---|
0,0 → 1,2 |
#TargetFrameworkVersion=v4.5:PlatformToolSet=WindowsKernelModeDriver8.1:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit |
Win7 Release|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\| |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/pcicc32.tlog/CL.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/pcicc32.tlog/link.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/pcicc32.tlog/CL.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/pcicc32.tlog/link.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/pcicc32.tlog/cl.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/pcicc32_drv.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/stampinf.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Release/stampinf.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/vc120.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.17.794 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/stampinf.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/pcicc32_v.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/pcicc32.log |
---|
0,0 → 1,23 |
Build started 10.2.2014 7:32:17. |
1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32\pcicc32.vcxproj" on node 2 (Rebuild target(s)). |
1>StampInf: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\stampinf.exe -d "*" -a "x86" -v "*" -k "1.11" -u "1.11.0" -f Win8.1Release\pcicc32.inf |
Stamping Win8.1Release\pcicc32.inf [Version] section with DriverVer=02/10/2014,7.32.17.794 |
ClCompile: |
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /IWin8.1Release\ /Zi /nologo /W4 /WX /Ox /Os /Oy- /D _X86_=1 /D i386=1 /D STD_CALL /D _WIN32_WINNT=0x0603 /D WINVER=0x0603 /D WINNT=1 /D NTDDI_VERSION=0x06030000 /D KMDF_VERSION_MAJOR=1 /D KMDF_VERSION_MINOR=11 /GF /Gm- /Zp8 /GS /Gy /fp:precise /Zc:wchar_t- /Zc:forScope- /GR- /Fo"Win8.1Release\\" /Fd"Win8.1Release\vc120.pdb" /Gz /wd4603 /wd4627 /wd4986 /wd4987 /wd4996 /FI"C:\Program Files (x86)\Windows Kits\8.1\Include\Shared\warning.h" /analyze- /errorReport:prompt /kernel -cbstring /d1nodatetime /d1import_no_registry /d2AllowCompatibleILVersions /d2Zi+ pcicc32_drv.c pcicc32_i.c pcicc32_io.c pcicc32_v.c |
pcicc32_drv.c |
pcicc32_i.c |
pcicc32_io.c |
pcicc32_v.c |
Generating Code... |
Link: |
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8.1Release\pcicc32.sys" /VERSION:"6.3" /INCREMENTAL:NO /NOLOGO /WX /SECTION:"INIT,d" "C:\Program Files (x86)\Windows Kits\8.1\lib\winV6.3\KM\x86\BufferOverflowFastFailK.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\winV6.3\KM\x86\ntoskrnl.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\winV6.3\KM\x86\hal.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\winV6.3\KM\x86\wmilib.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfLdr.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfDriverEntry.lib" /NODEFAULTLIB /MANIFEST:NO /DEBUG /PDB:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8.1Release\pcicc32.pdb" /SUBSYSTEM:NATIVE,"6.03" /Driver /OPT:REF /OPT:ICF /ENTRY:"FxDriverEntry@8" /RELEASE /IMPLIB:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8.1Release\pcicc32.lib" /MERGE:"_TEXT=.text;_PAGE=PAGE" /MACHINE:X86 /PROFILE /SAFESEH /kernel /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 /osversion:6.3 /pdbcompress /debugtype:pdata Win8.1Release\pcicc32_drv.obj |
Win8.1Release\pcicc32_i.obj |
Win8.1Release\pcicc32_io.obj |
Win8.1Release\pcicc32_v.obj |
pcicc32.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8.1Release\pcicc32.sys |
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32\pcicc32.vcxproj" (Rebuild target(s)). |
Build succeeded. |
Time Elapsed 00:00:00.68 |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/pcicc32_io.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/pcicc32_i.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/pcicc32.tlog/link.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/pcicc32.tlog/pcicc32.lastbuildstate |
---|
0,0 → 1,2 |
#TargetFrameworkVersion=v4.5:PlatformToolSet=WindowsKernelModeDriver8.1:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit |
Win8.1 Release|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\| |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/pcicc32.tlog/CL.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/pcicc32.tlog/link.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/pcicc32.tlog/CL.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/pcicc32.tlog/link.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/pcicc32.tlog/cl.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/pcicc32_drv.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/stampinf.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Release/stampinf.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/pcicc32_local.h |
---|
0,0 → 1,36 |
#ifndef _PCICC32_LOCAL_H__ |
#define _PCICC32_LOCAL_H__ |
//----------------------------------------------------------------------- |
// Address definitions and constants for PCIADA of PCICC32 interface |
// designed by A.Rausch |
// |
// (c) 1999 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// first parts derived from PCIVME AR 10.03.2000 |
// added initialisation for AUTOREAD AR 17.03.2001 |
// |
/*-----------------------------------------------------------------------*/ |
/* all addresses relative to PCI-Window */ |
/*--------- some masks in CSR -------------------------------------------*/ |
#define MASK_MODNR (WORD)0x00F0 /* the mask to get the module No */ |
#define MASK_FPGA (WORD)0x0F00 /* the mask to get the FPGA rev. */ |
#define MASK_MODTYPE (WORD)0xF000 /* the mask to get type of module*/ |
/*---------- release und inhibit into 0x50 of PLX ------------------------*/ |
#define RELEASE_CC32 (WORD)0x4186 /* write this to release access ..*/ |
#define INHIBIT_CC32 (WORD)0x4086 /* write this to inhibit access ..*/ |
#define ENABLE_PCIADA_IRQS (WORD)0x0049 /* enable PCIADA IRQs */ |
#define DISABLE_PCIADA_IRQS (WORD)0x0009 /* disable PCIADA IRQs */ |
#endif // _PCICC32_LOCAL_H__ |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/vc120.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.18.506 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/stampinf.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/pcicc32_v.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/pcicc32.log |
---|
0,0 → 1,23 |
Build started 10.2.2014 7:32:18. |
1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32\pcicc32.vcxproj" on node 2 (Rebuild target(s)). |
1>StampInf: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\stampinf.exe -d "*" -a "x86" -v "*" -k "1.11" -u "1.11.0" -f Win8Release\pcicc32.inf |
Stamping Win8Release\pcicc32.inf [Version] section with DriverVer=02/10/2014,7.32.18.506 |
ClCompile: |
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /IWin8Release\ /Zi /nologo /W4 /WX /Ox /Os /Oy- /D _X86_=1 /D i386=1 /D STD_CALL /D _WIN32_WINNT=0x0602 /D WINVER=0x0602 /D WINNT=1 /D NTDDI_VERSION=0x06020000 /D KMDF_VERSION_MAJOR=1 /D KMDF_VERSION_MINOR=11 /GF /Gm- /Zp8 /GS /Gy /fp:precise /Zc:wchar_t- /Zc:forScope- /GR- /Fo"Win8Release\\" /Fd"Win8Release\vc120.pdb" /Gz /wd4603 /wd4627 /wd4986 /wd4987 /wd4996 /FI"C:\Program Files (x86)\Windows Kits\8.1\Include\Shared\warning.h" /analyze- /errorReport:prompt /kernel -cbstring /d1nodatetime /d1import_no_registry /d2AllowCompatibleILVersions /d2Zi+ pcicc32_drv.c pcicc32_i.c pcicc32_io.c pcicc32_v.c |
pcicc32_drv.c |
pcicc32_i.c |
pcicc32_io.c |
pcicc32_v.c |
Generating Code... |
Link: |
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8Release\pcicc32.sys" /VERSION:"6.3" /INCREMENTAL:NO /NOLOGO /WX /SECTION:"INIT,d" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\BufferOverflowFastFailK.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\ntoskrnl.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\hal.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\wmilib.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfLdr.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfDriverEntry.lib" /NODEFAULTLIB /MANIFEST:NO /DEBUG /PDB:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8Release\pcicc32.pdb" /SUBSYSTEM:NATIVE,"6.02" /Driver /OPT:REF /OPT:ICF /ENTRY:"FxDriverEntry@8" /RELEASE /IMPLIB:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8Release\pcicc32.lib" /MERGE:"_TEXT=.text;_PAGE=PAGE" /MACHINE:X86 /PROFILE /SAFESEH /kernel /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 /osversion:6.3 /pdbcompress /debugtype:pdata Win8Release\pcicc32_drv.obj |
Win8Release\pcicc32_i.obj |
Win8Release\pcicc32_io.obj |
Win8Release\pcicc32_v.obj |
pcicc32.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8Release\pcicc32.sys |
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32\pcicc32.vcxproj" (Rebuild target(s)). |
Build succeeded. |
Time Elapsed 00:00:00.65 |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/pcicc32_io.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/pcicc32_i.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/pcicc32.tlog/link.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/pcicc32.tlog/pcicc32.lastbuildstate |
---|
0,0 → 1,2 |
#TargetFrameworkVersion=v4.5:PlatformToolSet=WindowsKernelModeDriver8.1:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit |
Win8 Release|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\| |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/pcicc32.tlog/CL.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/pcicc32.tlog/link.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/pcicc32.tlog/CL.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/pcicc32.tlog/link.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/pcicc32.tlog/cl.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/pcicc32_drv.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/stampinf.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Release/stampinf.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/pcicc32.vcxproj.filters |
---|
0,0 → 1,26 |
<?xml version="1.0" encoding="utf-8"?> |
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
<ItemGroup> |
<Filter Include="Source Files"> |
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> |
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> |
</Filter> |
<Filter Include="Header Files"> |
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> |
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions> |
</Filter> |
<Filter Include="Resource Files"> |
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> |
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> |
</Filter> |
<Filter Include="Driver Files"> |
<UniqueIdentifier>{8E41214B-6785-4CFE-B992-037D68949A14}</UniqueIdentifier> |
<Extensions>inf;inv;inx;mof;mc;</Extensions> |
</Filter> |
</ItemGroup> |
<ItemGroup> |
<Inf Include="pcicc32.inf"> |
<Filter>Driver Files</Filter> |
</Inf> |
</ItemGroup> |
</Project> |
/wiener_pcicc32/pcicc32/pcicc32/pcicc32_drv.h |
---|
0,0 → 1,172 |
#ifndef __PCICC32_DRV_H__ |
#define __PCICC32_DRV_H__ |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32 interface from ARW Elektronik, Germany --------- |
// the main header file of the driver |
// |
// (c) 1999 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistribute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started AR 10.03.2000 |
// dwIrqStatus added, version 2 AR 24.02.2001 |
// with AUTOREAD, version 2.01 AR 17.03.2001 |
// with support for LCR_READ, version 2.02 AR 31.03.2001 |
// changed to VisualStudio 6.0 AR 30.09.2001 |
// compiled with DDK 1/2001 AR 20.11.2001 |
// removed alloc_text cause of WIN2000 problems AR 25.11.2001 |
// version 2.7 released AR 25.11.2001 |
// version 2.8 still experimental AR 26.05.2002 |
// version 2.16 eliminates PLXBUG in WIN2000 AR 05.06.2002 |
// version 2.17 added KeSynchronizeExecution AR 16.06.2002 |
// version 2.18 improved snchronisation AR 18.06.2002 |
// |
//------------------------------------------------------------------------- |
#define DRIVER_VERSION ((2 << 16) | 18) // the only place for version info |
#define DRIVER_VARIANT 0 // mark customisation here |
//------------------------------------------------------------------------- |
//------------------------------------------------------------------------- |
// precautions for debug compile |
#define PCICC32_DEBUG |
#ifndef PCICC32_DEBUG |
#ifdef KdPrint |
#undef KdPrint |
#define KdPrint(x) /* x */ |
#endif |
#endif |
//------------------------------------------------------------------------- |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
#define PCI_MAX_BUSES 4 // buses to search for pciada |
#define PCICC32_MAX_PCIADA 4 // maximum of PCIADA to search for |
#define PCICC32_MAX_CC32 16 // maximum number of CC32 modules connected |
//------------------------------------------------------------------------- |
// DEFINES |
// |
#define PCICC32_VENDOR_ID 0x10B5 |
#define PCICC32_DEVICE_ID 0x2258 |
#define PCICC32_SUBSYS_ID 0x2258 |
#define PCICC32_SUBVEN_ID 0x9050 |
#define LCR_SPACE 256 // space in bytes of LCR |
#define IFR_SPACE 32768 // space in bytes of IFR |
//---------------------------------------------------------------------------------------- |
// macros for simple address calculation |
// |
#define _WORD_NAF(base, n, a, f) ((USHORT *)((ULONG)base + (n << 10) + (a << 6) + ((f & 0xf) << 2))) |
#define _DWORD_NAF(base, n, a, f) ((ULONG *)((ULONG)base + (n << 10) + (a << 6) + ((f & 0xf) << 2))) |
//------------------------------------------------------------------------- |
// TYPEDEFS |
// |
typedef struct _FILE_OBJ |
{ |
USHORT uwAssociatedCC32; // which CC32 number it belongs |
USHORT wAccessType; // WORD or LONGWORD |
USHORT wBlockTransfer; // != 0 for block transfer |
void (*fRead)(void *to, void *from); // resulting read |
void (*fWrite)(void *to, void *from); // resulting write |
PIRP blockingIrp; // if != 0 then a blocking IRP is waiting |
} FILE_OBJ, *PFILE_OBJ; |
typedef struct |
{ |
int Bus; // bus number of pciada |
PCI_SLOT_NUMBER Slot; // slot + function number encoded |
PCI_COMMON_CONFIG PCIDevice; // content of pcr, only for direct HW related functions |
PHYSICAL_ADDRESS pvPhysLcr; // local config register, unmapped and mapped |
PHYSICAL_ADDRESS pvPhysIfr; // interface registers, unmapped and mapped |
PVOID pvVirtLcr; // virtual LCR space |
PVOID pvVirtIfr; // virtual IFR space |
PKINTERRUPT InterruptObject; // points to the associated interrupt obj |
KIRQL Irql; // virtual Irq level, unmapped and mapped |
ULONG Vector; // mapped system vector, unmapped and mapped |
KAFFINITY Affinity; // which processor uses this irq, unmapped and mapped |
PUSHORT pwCntrl; // LCR Cntrl Offset @ LCR + 0x50 |
PUSHORT pwIntCSR; // LCR IntCSR Offset @ LCR + 0x4C |
ULONG dwLinkCount; // how often this interface is requested |
BOOLEAN bConnected; // CC32 is connected and powered |
USHORT wModuleNumber; // Number (Jumper) of CC32 |
USHORT wFPGAVersion; // Revision of (CC32) FPGA |
USHORT wModuleType; // Type of (CC32) module |
KDPC kDPCobj; // custom DPC object for irq tunneling |
ULONG dwIrqStatus; // the last unrequested status of a interrupt |
PIRP *pBlockingIrp; // points to File or == NULL when no blocking in progress |
FILE_OBJ *pIrqControlFile; // this file controls the global enable / disable IRQ |
} PCIADA; |
typedef struct _DEVICE_EXT |
{ |
PDEVICE_OBJECT DeviceObject; // points to myself and carries the pointer to DriverObject |
PIRP actualIrp; // points to .. |
int nPCIADAs; // how many PCIADAs are found |
PCIADA pciada[PCICC32_MAX_PCIADA]; // for each PCIADA a descriptor |
PCIADA *cc32[PCICC32_MAX_CC32]; // points to PCIADA to which it belongs |
int nInitState; // tracks the state of initialisation |
} DEVICE_EXT; |
// Prototypes to support following pragmas |
NTSTATUS DriverEntry(PDRIVER_OBJECT driverObj, PUNICODE_STRING regPath); |
NTSTATUS PCICC32Open(PDEVICE_OBJECT deviceObj, PIRP irp); |
NTSTATUS PCICC32Close(PDEVICE_OBJECT deviceObj, PIRP irp); |
VOID PCICC32Unload(PDRIVER_OBJECT driverObj); |
NTSTATUS SearchDevices(PDEVICE_OBJECT device_Obj); |
NTSTATUS PLX9050BugFix(PDEVICE_OBJECT deviceObj); |
NTSTATUS PCICC32ReserveResources(PDEVICE_OBJECT device_Obj); |
NTSTATUS PCICC32ExtractResources(PCIADA *pciada, PCM_RESOURCE_LIST pList); |
NTSTATUS PCICC32FreeResources(PDEVICE_OBJECT device_Obj); |
NTSTATUS PCICC32TranslateBusAddress(PDEVICE_OBJECT device_Obj); |
NTSTATUS PCICC32MapIOspace(PDEVICE_OBJECT device_object); |
VOID PCICC32SoftInit(PDEVICE_OBJECT device_Obj); |
NTSTATUS InitializeCustomDPCObjects(PDEVICE_OBJECT device_object); |
/* release all this procedures after init of the driver */ |
#ifdef ALLOC_PRAGMA |
#pragma alloc_text (init, DriverEntry) |
#pragma alloc_text (init, SearchDevices) |
#pragma alloc_text (init, PLX9050BugFix) |
#pragma alloc_text (init, PCICC32ReserveResources) |
#pragma alloc_text (init, PCICC32ExtractResources) |
#pragma alloc_text (init, PCICC32TranslateBusAddress) |
#pragma alloc_text (init, PCICC32MapIOspace) |
#pragma alloc_text (init, PCICC32SoftInit) |
#pragma alloc_text (init, InitializeCustomDPCObjects) |
#endif |
/* put all this procedures in the paged memory-pool, all called at passiv Level */ |
#ifdef ALLOC_PRAGMA |
#pragma alloc_text (page, PCICC32Open) |
#pragma alloc_text (page, PCICC32Close) |
#pragma alloc_text (page, PCICC32Unload) |
#pragma alloc_text (page, PCICC32FreeResources) |
#endif |
#endif // __PCICC32_DRV_H__ |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/vc120.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.20.773 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/stampinf.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/pcicc32_v.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/pcicc32.log |
---|
0,0 → 1,28 |
Build started 10.2.2014 7:32:20. |
1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32\pcicc32.vcxproj" on node 2 (Rebuild target(s)). |
1>StampInf: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\stampinf.exe -d "*" -a "x86" -v "*" -k "1.11" -u "1.11.0" -f Win7Debug\pcicc32.inf |
Stamping Win7Debug\pcicc32.inf [Version] section with DriverVer=02/10/2014,7.32.20.773 |
ClCompile: |
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /IWin7Debug\ /Zi /nologo /W4 /WX /Od /Oi /Oy- /D _X86_=1 /D i386=1 /D STD_CALL /D DEPRECATE_DDK_FUNCTIONS=1 /D MSC_NOOPT /D _WIN32_WINNT=0x0601 /D WINVER=0x0601 /D WINNT=1 /D NTDDI_VERSION=0x06010000 /D DBG=1 /D KMDF_VERSION_MAJOR=1 /D KMDF_VERSION_MINOR=11 /GF /Gm- /Zp8 /GS /Gy /fp:precise /Zc:wchar_t- /Zc:forScope- /GR- /Fo"Win7Debug\\" /Fd"Win7Debug\vc120.pdb" /Gz /wd4748 /wd4603 /wd4627 /wd4986 /wd4987 /wd4996 /FI"C:\Program Files (x86)\Windows Kits\8.1\Include\Shared\warning.h" /analyze- /errorReport:prompt /kernel -cbstring /d1import_no_registry /d2AllowCompatibleILVersions /d2Zi+ pcicc32_drv.c pcicc32_i.c pcicc32_io.c pcicc32_v.c |
pcicc32_drv.c |
pcicc32_i.c |
pcicc32_io.c |
pcicc32_v.c |
Generating Code... |
Link: |
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win7Debug\pcicc32.sys" /VERSION:"6.3" /INCREMENTAL:NO /NOLOGO /WX /SECTION:"INIT,d" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\memcmp.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\BufferOverflowK.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\ntoskrnl.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\hal.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win7\KM\x86\wmilib.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfLdr.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfDriverEntry.lib" /NODEFAULTLIB /MANIFEST:NO /DEBUG /PDB:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win7Debug\pcicc32.pdb" /SUBSYSTEM:NATIVE,"6.01" /Driver /OPT:REF /OPT:ICF /ENTRY:"FxDriverEntry@8" /RELEASE /IMPLIB:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win7Debug\pcicc32.lib" /MERGE:"_TEXT=.text;_PAGE=PAGE" /MACHINE:X86 /PROFILE /kernel /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 /osversion:6.3 /pdbcompress /debugtype:pdata Win7Debug\pcicc32_drv.obj |
Win7Debug\pcicc32_i.obj |
Win7Debug\pcicc32_io.obj |
Win7Debug\pcicc32_v.obj |
pcicc32.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win7Debug\pcicc32.sys |
DriverTestSign: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe sign /ph /sha1 "582A29F728D647902CAA175FC6F560D6BB7011DD" |
Done Adding Additional Store |
Successfully signed: C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win7Debug\pcicc32.sys |
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32\pcicc32.vcxproj" (Rebuild target(s)). |
Build succeeded. |
Time Elapsed 00:00:00.76 |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/pcicc32_io.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/pcicc32_i.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/pcicc32.tlog/link.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/pcicc32.tlog/pcicc32.lastbuildstate |
---|
0,0 → 1,2 |
#TargetFrameworkVersion=v4.5:PlatformToolSet=WindowsKernelModeDriver8.1:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit |
Win7 Debug|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\| |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/pcicc32.tlog/CL.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/pcicc32.tlog/link.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/pcicc32.tlog/CL.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/pcicc32.tlog/link.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/pcicc32.tlog/cl.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/pcicc32_drv.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/signtool.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/signtool.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/stampinf.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/signtool.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win7Debug/stampinf.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/vc120.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.19.198 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/stampinf.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/pcicc32_v.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/pcicc32.log |
---|
0,0 → 1,28 |
Build started 10.2.2014 7:32:19. |
1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32\pcicc32.vcxproj" on node 2 (Rebuild target(s)). |
1>StampInf: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\stampinf.exe -d "*" -a "x86" -v "*" -k "1.11" -u "1.11.0" -f Win8.1Debug\pcicc32.inf |
Stamping Win8.1Debug\pcicc32.inf [Version] section with DriverVer=02/10/2014,7.32.19.198 |
ClCompile: |
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /IWin8.1Debug\ /Zi /nologo /W4 /WX /Od /Oi /Oy- /D _X86_=1 /D i386=1 /D STD_CALL /D DEPRECATE_DDK_FUNCTIONS=1 /D MSC_NOOPT /D _WIN32_WINNT=0x0603 /D WINVER=0x0603 /D WINNT=1 /D NTDDI_VERSION=0x06030000 /D DBG=1 /D KMDF_VERSION_MAJOR=1 /D KMDF_VERSION_MINOR=11 /GF /Gm- /Zp8 /GS /Gy /fp:precise /Zc:wchar_t- /Zc:forScope- /GR- /Fo"Win8.1Debug\\" /Fd"Win8.1Debug\vc120.pdb" /Gz /wd4748 /wd4603 /wd4627 /wd4986 /wd4987 /wd4996 /FI"C:\Program Files (x86)\Windows Kits\8.1\Include\Shared\warning.h" /analyze- /errorReport:prompt /kernel -cbstring /d1import_no_registry /d2AllowCompatibleILVersions /d2Zi+ pcicc32_drv.c pcicc32_i.c pcicc32_io.c pcicc32_v.c |
pcicc32_drv.c |
pcicc32_i.c |
pcicc32_io.c |
pcicc32_v.c |
Generating Code... |
Link: |
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8.1Debug\pcicc32.sys" /VERSION:"6.3" /INCREMENTAL:NO /NOLOGO /WX /SECTION:"INIT,d" "C:\Program Files (x86)\Windows Kits\8.1\lib\winV6.3\KM\x86\BufferOverflowFastFailK.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\winV6.3\KM\x86\ntoskrnl.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\winV6.3\KM\x86\hal.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\winV6.3\KM\x86\wmilib.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfLdr.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfDriverEntry.lib" /NODEFAULTLIB /MANIFEST:NO /DEBUG /PDB:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8.1Debug\pcicc32.pdb" /SUBSYSTEM:NATIVE,"6.03" /Driver /OPT:REF /OPT:ICF /ENTRY:"FxDriverEntry@8" /RELEASE /IMPLIB:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8.1Debug\pcicc32.lib" /MERGE:"_TEXT=.text;_PAGE=PAGE" /MACHINE:X86 /PROFILE /kernel /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 /osversion:6.3 /pdbcompress /debugtype:pdata Win8.1Debug\pcicc32_drv.obj |
Win8.1Debug\pcicc32_i.obj |
Win8.1Debug\pcicc32_io.obj |
Win8.1Debug\pcicc32_v.obj |
pcicc32.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8.1Debug\pcicc32.sys |
DriverTestSign: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe sign /ph /sha1 "582A29F728D647902CAA175FC6F560D6BB7011DD" |
Done Adding Additional Store |
Successfully signed: C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8.1Debug\pcicc32.sys |
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32\pcicc32.vcxproj" (Rebuild target(s)). |
Build succeeded. |
Time Elapsed 00:00:00.81 |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/pcicc32_io.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/pcicc32_i.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/pcicc32.tlog/link.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/pcicc32.tlog/pcicc32.lastbuildstate |
---|
0,0 → 1,2 |
#TargetFrameworkVersion=v4.5:PlatformToolSet=WindowsKernelModeDriver8.1:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit |
Win8.1 Debug|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\| |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/pcicc32.tlog/CL.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/pcicc32.tlog/link.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/pcicc32.tlog/CL.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/pcicc32.tlog/link.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/pcicc32.tlog/cl.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/pcicc32_drv.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/signtool.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/signtool.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/stampinf.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/signtool.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8.1Debug/stampinf.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/pcicc32_v.c |
---|
0,0 → 1,196 |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32 interface from ARW Elektronik, Germany -------- |
// all around recognition and basic services of VMEMM |
// |
// (c) 2000-2002 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started from pcivme_v.c AR 02.07.2000 |
// changed making procedure (only VCC > 6.0) AR 30.05.2002 |
// |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
#include <ntddk.h> |
#include <pcicc32_drv.h> |
#include <pcicc32_v.h> |
#include <pcicc32_local.h> // all around the pciada interface |
#ifndef WORD // don't touch include files of WIN95 driver |
#define WORD USHORT |
#endif |
#ifndef DWORD |
#define DWORD ULONG |
#endif |
//------------------------------------------------------------------------ |
// PROTOTYPES |
// |
//------------------------------------------------------------------------ |
// GLOBALS |
// |
//------------------------------------------------------------------------ |
// FUNCTIONS |
// |
//------------------------------------------------------------------------ |
// test connection to VMEMM devices without disturbing anything |
// |
//--------------------------------------------------------------------- |
// checks a connection with a small test pattern |
// |
NTSTATUS TestConnection(PCIADA *pciada) |
{ |
USHORT *pwADRH = (USHORT *)_WORD_NAF(pciada->pvVirtIfr, 30, 1, 0); |
USHORT *pwADRL = (USHORT *)_WORD_NAF(pciada->pvVirtIfr, 30, 0, 0); |
int i; |
USHORT wRet; |
USHORT wADRHContent; |
USHORT wADRLContent; |
KdPrint(("TestConnection()\n")); |
wADRHContent = READ_REGISTER_USHORT(pwADRH); // save previous content |
wADRLContent = READ_REGISTER_USHORT(pwADRL); |
for (i = 0; i < 10000; i++) |
{ |
WRITE_REGISTER_USHORT(pwADRH, 0x5555); |
WRITE_REGISTER_USHORT(pwADRL, 0xAAAA); |
wRet = READ_REGISTER_USHORT(pwADRH); |
if (wRet != 0x5555) return STATUS_UNSUCCESSFUL; |
WRITE_REGISTER_USHORT(pwADRH, 0xAAAA); |
WRITE_REGISTER_USHORT(pwADRL, 0x5555); |
wRet = READ_REGISTER_USHORT(pwADRH); |
if (wRet != 0xAAAA) return STATUS_UNSUCCESSFUL; |
WRITE_REGISTER_USHORT(pwADRH, 0x0000); |
WRITE_REGISTER_USHORT(pwADRL, 0xFFFF); |
wRet = READ_REGISTER_USHORT(pwADRH); |
if (wRet != 0x0000) return STATUS_UNSUCCESSFUL; |
WRITE_REGISTER_USHORT(pwADRH, 0xFFFF); |
WRITE_REGISTER_USHORT(pwADRL, 0x0000); |
wRet = READ_REGISTER_USHORT(pwADRH); |
if (wRet != 0xFFFF) return STATUS_UNSUCCESSFUL; |
} |
WRITE_REGISTER_USHORT(pwADRH, wADRHContent); // restore previous content |
WRITE_REGISTER_USHORT(pwADRL, wADRLContent); |
KdPrint(("TestConnection() OK.\n")); |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// scan VMEMM devices without disturbing anything |
// |
NTSTATUS PCICC32ScanCC32(PDEVICE_OBJECT deviceObj) |
{ |
int i; |
int nPCIADAs = ((DEVICE_EXT*)(deviceObj->DeviceExtension))->nPCIADAs; |
PCIADA *pciada; |
USHORT wCntrl; |
USHORT wIntCSR; |
USHORT wModuleStatus; |
KdPrint(("PCICC32ScanCC32(nPCIADAs = %d)\n", nPCIADAs)); |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &((DEVICE_EXT*)(deviceObj->DeviceExtension))->pciada[i]; |
wCntrl = READ_REGISTER_USHORT(pciada->pwCntrl); // save it for later use |
wIntCSR = READ_REGISTER_USHORT(pciada->pwIntCSR); |
KdPrint(("wCntrl = 0x%04x, wIntCSR = 0x%04x\n", wCntrl, wIntCSR)); |
WRITE_REGISTER_USHORT(pciada->pwCntrl, INHIBIT_CC32); // switch off before open |
WRITE_REGISTER_USHORT(pciada->pwIntCSR, DISABLE_PCIADA_IRQS); |
WRITE_REGISTER_USHORT(pciada->pwCntrl, RELEASE_CC32); // open it for test |
if (wCntrl & 0x0800) |
{ |
if (TestConnection(pciada) == STATUS_SUCCESS) |
{ |
wModuleStatus = READ_REGISTER_USHORT(pciada->pvVirtIfr); |
pciada->bConnected = TRUE; |
// interpret the content |
pciada->wModuleNumber = (wModuleStatus & MASK_MODNR) >> 4; |
pciada->wFPGAVersion = (wModuleStatus & MASK_FPGA) >> 8; |
pciada->wModuleType = (wModuleStatus & MASK_MODTYPE) >> 12; |
KdPrint(("PCIADA %d <-> CC32 %d\n", i, pciada->wModuleNumber)); |
} |
else |
pciada->wModuleNumber = 0xFFFF; // not recognized, take it out |
} |
else |
pciada->wModuleNumber = 0xFFFF; // not recognized, take it out |
if (pciada->wModuleNumber != 0xFFFF) |
WRITE_REGISTER_USHORT(pciada->pwCntrl, wCntrl); // restore state |
else |
WRITE_REGISTER_USHORT(pciada->pwCntrl, INHIBIT_CC32); |
WRITE_REGISTER_USHORT(pciada->pwIntCSR, wIntCSR); // restore interrupt masks |
} |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// deinit all PCIADAs in a passive state |
// |
NTSTATUS PCICC32DeInitPCIADAs(PDEVICE_OBJECT deviceObj) |
{ |
int i; |
DEVICE_EXT *pDevExt = (DEVICE_EXT*)deviceObj->DeviceExtension; |
int nPCIADAs = pDevExt->nPCIADAs; |
PCIADA *pciada; |
KdPrint(("PCICC32DeInitPCIADAs()\n")); |
// dis connect the interrupts to service routines |
for (i = 0; i < nPCIADAs; i++) |
{ |
pciada = &pDevExt->pciada[i]; |
WRITE_REGISTER_USHORT(pciada->pwCntrl, INHIBIT_CC32); |
// this is the same as globalInterruptDisable(pciada); |
WRITE_REGISTER_USHORT(pciada->pwIntCSR, DISABLE_PCIADA_IRQS); |
} |
return STATUS_SUCCESS; |
} |
//------------------------------------------------------------------------ |
// switches pciada on or off |
// |
void enableCC32(PCIADA *pciada) |
{ |
WRITE_REGISTER_USHORT(pciada->pwCntrl, RELEASE_CC32); |
} |
void disableCC32(PCIADA *pciada) |
{ |
WRITE_REGISTER_USHORT(pciada->pwCntrl, INHIBIT_CC32); |
} |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/vc120.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.21.688 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/stampinf.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/pcicc32_v.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/pcicc32.log |
---|
0,0 → 1,28 |
Build started 10.2.2014 7:32:21. |
1>Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32\pcicc32.vcxproj" on node 2 (Rebuild target(s)). |
1>StampInf: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\stampinf.exe -d "*" -a "x86" -v "*" -k "1.11" -u "1.11.0" -f Win8Debug\pcicc32.inf |
Stamping Win8Debug\pcicc32.inf [Version] section with DriverVer=02/10/2014,7.32.21.688 |
ClCompile: |
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /IWin8Debug\ /Zi /nologo /W4 /WX /Od /Oi /Oy- /D _X86_=1 /D i386=1 /D STD_CALL /D DEPRECATE_DDK_FUNCTIONS=1 /D MSC_NOOPT /D _WIN32_WINNT=0x0602 /D WINVER=0x0602 /D WINNT=1 /D NTDDI_VERSION=0x06020000 /D DBG=1 /D KMDF_VERSION_MAJOR=1 /D KMDF_VERSION_MINOR=11 /GF /Gm- /Zp8 /GS /Gy /fp:precise /Zc:wchar_t- /Zc:forScope- /GR- /Fo"Win8Debug\\" /Fd"Win8Debug\vc120.pdb" /Gz /wd4748 /wd4603 /wd4627 /wd4986 /wd4987 /wd4996 /FI"C:\Program Files (x86)\Windows Kits\8.1\Include\Shared\warning.h" /analyze- /errorReport:prompt /kernel -cbstring /d1import_no_registry /d2AllowCompatibleILVersions /d2Zi+ pcicc32_drv.c pcicc32_i.c pcicc32_io.c pcicc32_v.c |
pcicc32_drv.c |
pcicc32_i.c |
pcicc32_io.c |
pcicc32_v.c |
Generating Code... |
Link: |
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8Debug\pcicc32.sys" /VERSION:"6.3" /INCREMENTAL:NO /NOLOGO /WX /SECTION:"INIT,d" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\BufferOverflowFastFailK.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\ntoskrnl.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\hal.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\win8\KM\x86\wmilib.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfLdr.lib" "C:\Program Files (x86)\Windows Kits\8.1\lib\wdf\kmdf\x86\1.11\WdfDriverEntry.lib" /NODEFAULTLIB /MANIFEST:NO /DEBUG /PDB:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8Debug\pcicc32.pdb" /SUBSYSTEM:NATIVE,"6.02" /Driver /OPT:REF /OPT:ICF /ENTRY:"FxDriverEntry@8" /RELEASE /IMPLIB:"C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8Debug\pcicc32.lib" /MERGE:"_TEXT=.text;_PAGE=PAGE" /MACHINE:X86 /PROFILE /kernel /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221 /osversion:6.3 /pdbcompress /debugtype:pdata Win8Debug\pcicc32_drv.obj |
Win8Debug\pcicc32_i.obj |
Win8Debug\pcicc32_io.obj |
Win8Debug\pcicc32_v.obj |
pcicc32.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8Debug\pcicc32.sys |
DriverTestSign: |
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\signtool.exe sign /ph /sha1 "582A29F728D647902CAA175FC6F560D6BB7011DD" |
Done Adding Additional Store |
Successfully signed: C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\Win8Debug\pcicc32.sys |
1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\pcicc32\pcicc32.vcxproj" (Rebuild target(s)). |
Build succeeded. |
Time Elapsed 00:00:01.03 |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/pcicc32_io.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/pcicc32_i.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/pcicc32.tlog/link.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/pcicc32.tlog/pcicc32.lastbuildstate |
---|
0,0 → 1,2 |
#TargetFrameworkVersion=v4.5:PlatformToolSet=WindowsKernelModeDriver8.1:EnableManagedIncrementalBuild=false:VCToolArchitecture=Native32Bit |
Win8 Debug|Win32|C:\Users\f9daq\rok\wienerpciada\PciCamac\WIN2000-XP\DRIVER\pcicc32\| |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/pcicc32.tlog/CL.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/pcicc32.tlog/link.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/pcicc32.tlog/CL.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/pcicc32.tlog/link.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/pcicc32.tlog/cl.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/pcicc32_drv.obj |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/signtool.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/signtool.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/stampinf.write.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/signtool.command.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/Win8Debug/stampinf.read.1.tlog |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/pcicc32/pcicc32_io.c |
---|
0,0 → 1,770 |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32 interface from ARW Elektronik, Germany --------- |
// the ioctl functions |
// |
// (c) 1999-2002 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started AR 03.07.1999 |
// first release 1.0 AR 17.10.1999 |
// added access to PLX LC-Register AR 30.03.2001 |
// changed making procedure (only VCC > 6.0) AR 30.05.2002 |
// multiple interrupt enable allowed AR 01.06.2002 |
// added KeSynchronizeExecution for interrupt sync AR 16.06.2002 |
// extended ioctl_irq_status_kernel AR 18.06.2002 |
// |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
#include <ntddk.h> |
#include <devioctl.h> |
#include <pcicc32_drv.h> |
#include <pcicc32.h> |
#include <pcicc32_v.h> |
#include <pcicc32_io.h> |
#include <pcicc32_local.h> |
#include <pcicc32_i.h> |
//------------------------------------------------------------------------ |
// DEFINES |
// |
// buffers usage must match the corresponding ioctl code! |
#define SET_BUFFERS_METHOD_OUT_DIRECT \ |
{\ |
InputLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;\ |
OutputLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;\ |
pInputBuffer = ((void *)(Irp->AssociatedIrp.SystemBuffer));\ |
pOutputBuffer = ((void *)(MmGetSystemAddressForMdl(Irp->MdlAddress)));\ |
} |
#define SET_BUFFERS_METHOD_IN_DIRECT \ |
{\ |
InputLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;\ |
OutputLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;\ |
pInputBuffer = ((void *)(MmGetSystemAddressForMdl(Irp->MdlAddress)));\ |
pOutputBuffer = ((void *)(Irp->AssociatedIrp.SystemBuffer));\ |
} |
#define SET_BUFFERS_METHOD_BUFFERED \ |
{\ |
InputLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength;\ |
OutputLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength;\ |
pInputBuffer = pOutputBuffer = ((void *)(Irp->AssociatedIrp.SystemBuffer));\ |
} |
#define COMPLETE_REQUEST \ |
{\ |
if (Status != STATUS_PENDING)\ |
{\ |
Irp->IoStatus.Status = Status; \ |
Irp->IoStatus.Information = irp_info; \ |
IoCompleteRequest(Irp,IO_NO_INCREMENT); \ |
}\ |
} |
// compatibilty issues to WIN95 driver calls |
#ifndef WORD |
#define WORD USHORT |
#endif |
#ifndef DWORD |
#define DWORD ULONG |
#endif |
#ifndef BYTE |
#define BYTE UCHAR |
#endif |
#ifndef BOOL |
#define BOOL BOOLEAN |
#endif |
//------------------------------------------------------------------------- |
// TYPEDEFS |
// |
typedef struct |
{ |
FILE_OBJ *file_obj; |
PCIADA *pciada; |
PCICC32_IRQ_RESPONSE *pIrqStatus; |
PIRP *Irp; |
ULONG *irp_info; |
NTSTATUS *Status; |
} IOCTL_IRQ_STATUS_CONTEXT; |
//-------------------------------------------------------------------------- |
// LOCAL FUNCTIONS |
// |
//-------------------------------------------------------------------------- |
// fast read or write functions - portable - |
static void readWord(void *to, void *from) |
{ |
*(PUSHORT)to = READ_REGISTER_USHORT((PUSHORT)from); |
} |
static void readLong(void *to, void *from) |
{ |
*(PULONG)to = READ_REGISTER_ULONG((PULONG)from); |
} |
static void writeWord(void *to, void *from) |
{ |
WRITE_REGISTER_USHORT((PUSHORT)to, *(PUSHORT)from); |
} |
static void writeLong(void *to, void *from) |
{ |
WRITE_REGISTER_ULONG((PULONG)to, *(PULONG)from); |
} |
//------------------------------------------------------------------------ |
// init the interface with build in and user supplied constants |
static BOOLEAN InitInterface(PVOID pvLcr, PVOID pvIfr) |
{ |
UNREFERENCED_PARAMETER(pvLcr); |
UNREFERENCED_PARAMETER(pvIfr); |
return TRUE; |
} |
// deinit the interface with user supplied and build in constants |
static BOOLEAN DeInitInterface(PVOID pvLcr, PVOID pvIfr) |
{ |
UNREFERENCED_PARAMETER(pvLcr); |
UNREFERENCED_PARAMETER(pvIfr); |
return TRUE; |
} |
//------------------------------------------------------------------------ |
// the default cancel routine for an queued Irp |
// |
void CancelRequest(PDEVICE_OBJECT device_Obj, PIRP Irp) |
{ |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
PCIADA *pciada = pDevExt->cc32[file_obj->uwAssociatedCC32]; |
if (pciada->pBlockingIrp == (PIRP *)NULL) |
{ |
IoReleaseCancelSpinLock(Irp->CancelIrql); |
KdPrint(("Nothing to do: CancelRequest(0x%08x)\n", Irp)); |
return; |
} |
else |
{ |
// release control of interrupt |
if (pciada->pIrqControlFile == file_obj) |
{ |
pciada->pIrqControlFile = (FILE_OBJ *)NULL; |
globalInterruptDisable(pciada); |
} |
// cancel any blocking Irp origin from this file |
if (file_obj->blockingIrp != (PIRP)NULL) |
file_obj->blockingIrp = (PIRP)NULL; |
if (pciada->pBlockingIrp == &file_obj->blockingIrp) |
pciada->pBlockingIrp = (PIRP *)NULL; |
IoReleaseCancelSpinLock(Irp->CancelIrql); |
KdPrint(("Done: CancelRequest(0x%08x)\n", Irp)); |
Irp->IoStatus.Status = STATUS_CANCELLED; |
Irp->IoStatus.Information = 0; |
IoCompleteRequest(Irp, IO_NO_INCREMENT); |
} |
} |
//------------------------------------------------------------------------ |
// the custom deffered routine to finish blocking io on irq_block |
void fMyDefferedRoutine(PKDPC Dpc, PVOID pvDevice_object, PVOID pvPciada, PVOID pdwIrqStatus) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = sizeof(PCICC32_IRQ_RESPONSE); |
PIRP Irp = (PIRP)NULL; |
PCIADA *pciada = (PCIADA *)pvPciada; |
KIRQL oldIrqlCancel; |
UNREFERENCED_PARAMETER(Dpc); |
UNREFERENCED_PARAMETER(pdwIrqStatus); |
UNREFERENCED_PARAMETER(pvDevice_object); |
KdPrint(("fMyDefferedRoutine(0x%08x)\n", pciada->dwIrqStatus)); |
// beware off damage due to intercept at cancel of thread |
IoAcquireCancelSpinLock(&oldIrqlCancel); |
// get my associated packet |
if (pciada->pBlockingIrp != (PIRP *)NULL) |
{ |
Irp = *pciada->pBlockingIrp; |
if (Irp != (PIRP)NULL) // then a blcoking Irp is waiting |
{ |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
PCICC32_IRQ_RESPONSE *pIrqStatus = (PCICC32_IRQ_RESPONSE *)(Irp->AssociatedIrp.SystemBuffer); |
// fill the response structure |
pIrqStatus->dwInterruptFlags = pciada->dwIrqStatus; |
pciada->dwIrqStatus = 0; // to prevent a following direct return |
pIrqStatus->dwInterface = file_obj->uwAssociatedCC32; |
// release the cancel routine from this Irp |
IoSetCancelRoutine(Irp, NULL); |
COMPLETE_REQUEST; |
file_obj->blockingIrp = (PIRP)NULL; |
} |
pciada->pBlockingIrp = (PIRP *)NULL; |
} |
// release the spin locks |
IoReleaseCancelSpinLock(oldIrqlCancel); |
} |
//------------------------------------------------------------------------ |
// if the interrupt is disabled for a blocking path, cancel the block |
static void ReleaseBlockingIrp(PDEVICE_OBJECT device_Obj, PCIADA *pciada, PFILE_OBJ pFile_obj) |
{ |
NTSTATUS Status = STATUS_CANCELLED; |
ULONG irp_info = sizeof(PCICC32_IRQ_RESPONSE); |
PIRP Irp = (PIRP)NULL; |
KIRQL oldIrqlCancel; |
UNREFERENCED_PARAMETER(device_Obj); |
UNREFERENCED_PARAMETER(pFile_obj); |
UNREFERENCED_PARAMETER(irp_info); |
KdPrint(("ReleaseBlockingIrp()\n")); |
// beware off damage due to intercept with cancel of thread |
IoAcquireCancelSpinLock(&oldIrqlCancel); |
if (pciada->pBlockingIrp != (PIRP *)NULL) |
{ |
// get my associated packet |
Irp = *pciada->pBlockingIrp; |
if (Irp != (PIRP)NULL) |
{ |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
PCICC32_IRQ_RESPONSE *pIrqStatus = (PCICC32_IRQ_RESPONSE *)(Irp->AssociatedIrp.SystemBuffer); |
ULONG irp_info = sizeof(PCICC32_IRQ_RESPONSE); |
pIrqStatus->dwInterruptFlags = pciada->dwIrqStatus; |
pIrqStatus->dwInterface = file_obj->uwAssociatedCC32; |
// release the cancel routine from this Irp |
IoSetCancelRoutine(Irp, NULL); |
COMPLETE_REQUEST; |
file_obj->blockingIrp = (PIRP)NULL; |
} |
pciada->pBlockingIrp = (PIRP *)NULL; // mark the storage for blocking Irp free |
} |
// release the spin locks |
IoReleaseCancelSpinLock(oldIrqlCancel); |
} |
//------------------------------------------------------------------------ |
// all functions called from ioctl jump table |
// |
//------------------------------------------------------------------------ |
// a dummy entry because of compatibiltiy (near) WIN95 driver |
static NTSTATUS ioctl_dummy(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = 0; |
PVOID pInputBuffer,pOutputBuffer; |
ULONG InputLength, OutputLength; |
char *pCommand; |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
#ifndef _DEBUG |
UNREFERENCED_PARAMETER(file_obj); |
#endif |
SET_BUFFERS_METHOD_BUFFERED; |
UNREFERENCED_PARAMETER(device_Obj); |
pCommand = (char *)pInputBuffer; |
KdPrint(("ioctl_dummy(%d)\n", file_obj->uwAssociatedCC32)); |
// do what must be here in between ----------- |
// do what must be here in between --- end --- |
COMPLETE_REQUEST; |
KdPrint(("ioctl_dummy(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// requests status |
static NTSTATUS ioctl_get_status(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = sizeof(PCICC32_STATUS); |
PVOID pInputBuffer,pOutputBuffer; |
ULONG InputLength, OutputLength; |
PCIADA *pciada; |
DEVICE_EXT *pDevExt; |
PCICC32_STATUS *pStatus; |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
USHORT wModuleNumber = file_obj->uwAssociatedCC32; |
// do what must be here in between ----------- |
pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
SET_BUFFERS_METHOD_BUFFERED; |
KdPrint(("ioctl_get_status(%d)\n", wModuleNumber)); |
// do what must be here in between ----------- |
if (OutputLength >= sizeof(PCICC32_STATUS)) |
{ |
USHORT temp; |
pStatus = (PCICC32_STATUS *)pOutputBuffer; |
pciada = pDevExt->cc32[wModuleNumber]; |
pStatus->dwInterface = wModuleNumber; |
temp = READ_REGISTER_USHORT(pciada->pwIntCSR); |
pStatus->bTimeout = (temp & 0x0020) ? 1 : 0; |
pStatus->bInterrupt = (temp & 0x0004) ? 1 : 0; |
} |
else |
Status = STATUS_BUFFER_TOO_SMALL; |
// do what must be here in between --- end --- |
COMPLETE_REQUEST; |
KdPrint(("ioctl_get_status(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// clears status |
static BOOLEAN ioctl_clear_status_kernel(PVOID pvContext) |
{ |
PCIADA *pciada = (PCIADA *)pvContext; |
USHORT wCntrl; |
// get current Cntrl - and clear interrupt |
wCntrl = READ_REGISTER_USHORT(pciada->pwCntrl); |
wCntrl &= ~0x0100; // disable |
WRITE_REGISTER_USHORT(pciada->pwCntrl, wCntrl); |
wCntrl |= 0x0100; // enable again |
WRITE_REGISTER_USHORT(pciada->pwCntrl, wCntrl); |
return TRUE; |
} |
static NTSTATUS ioctl_clear_status(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = 0; |
PVOID pInputBuffer,pOutputBuffer; |
ULONG InputLength, OutputLength; |
PCIADA *pciada; |
DEVICE_EXT *pDevExt; |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
USHORT wModuleNumber = file_obj->uwAssociatedCC32; |
// do what must be here in between ----------- |
pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
SET_BUFFERS_METHOD_BUFFERED; |
KdPrint(("ioctl_clear_status(%d)\n", wModuleNumber)); |
// do what must be here in between ----------- |
pciada = pDevExt->cc32[wModuleNumber]; |
KeSynchronizeExecution(pciada->InterruptObject, ioctl_clear_status_kernel, pciada); |
// do what must be here in between --- end --- |
COMPLETE_REQUEST; |
KdPrint(("ioctl_clear_status() OK\n")); |
return Status; |
} |
//------------------------------------------------------------------------ |
// set parameter for this path for future access to CC32 |
static NTSTATUS ioctl_access_para(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = 0; |
PVOID pInputBuffer,pOutputBuffer; |
ULONG InputLength, OutputLength; |
PCICC32_ACCESS_COMMAND *pAccessPara; |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
USHORT wModuleNumber = file_obj->uwAssociatedCC32; |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
PCIADA *pciada = pDevExt->cc32[wModuleNumber]; |
UNREFERENCED_PARAMETER(pciada); |
SET_BUFFERS_METHOD_BUFFERED; |
KdPrint(("ioctl_access_para(%d)\n", wModuleNumber)); |
pAccessPara = (PCICC32_ACCESS_COMMAND *)pInputBuffer; |
// do here in between what has to be done ----------------- |
file_obj->wAccessType = pAccessPara->wAccessType; |
file_obj->wBlockTransfer = pAccessPara->wBlockTransfer; |
pAccessPara->dwInterface = wModuleNumber; |
switch (pAccessPara->wAccessType) |
{ |
case WORD_ACCESS: file_obj->fRead = readWord; |
file_obj->fWrite = writeWord; |
break; |
case LONG_ACCESS: file_obj->fRead = readLong; |
file_obj->fWrite = writeLong; |
break; |
default: Status = STATUS_UNSUCCESSFUL; |
break; |
} |
// do here in between what has to be done end ------------- |
COMPLETE_REQUEST; |
KdPrint(("ioctl_access_para(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// allow or inhibit interrupt requests from either CC32 or thru local timeout |
static NTSTATUS ioctl_control_interrupts(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = 0; |
PVOID pInputBuffer,pOutputBuffer; |
ULONG InputLength, OutputLength; |
PCICC32_IRQ_CONTROL *pIrqControlIn, *pIrqControlOut; |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
USHORT wModuleNumber = file_obj->uwAssociatedCC32; |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
PCIADA *pciada = pDevExt->cc32[wModuleNumber]; |
SET_BUFFERS_METHOD_BUFFERED; |
KdPrint(("ioctl_control_interrupts(%d)\n", wModuleNumber)); |
pIrqControlIn = (PCICC32_IRQ_CONTROL *)pInputBuffer; |
pIrqControlOut = (PCICC32_IRQ_CONTROL *)pOutputBuffer; |
// do here in between what has to be done ----------------- |
if (pIrqControlIn->wEnable) |
{ |
// reserve the controlling of interrupts for this path |
if ((pciada->pIrqControlFile == (FILE_OBJ *)NULL) || |
(pciada->pIrqControlFile == file_obj)) |
{ |
pciada->pIrqControlFile = file_obj; |
globalInterruptEnable(pciada); |
} |
else |
Status = STATUS_DEVICE_BUSY; |
} |
else |
{ |
// nobody else is allowed to disable interrupts |
if (pciada->pIrqControlFile == file_obj) |
{ |
pciada->pIrqControlFile = (FILE_OBJ *)NULL; |
globalInterruptDisable(pciada); |
} |
else |
Status = STATUS_DEVICE_BUSY; |
} |
// give back if the user grants space |
if (OutputLength >= sizeof(PCICC32_IRQ_CONTROL)) |
{ |
pIrqControlOut->dwInterface = wModuleNumber; |
pIrqControlOut->wEnable = globalInterruptEnabledStatus(pciada); |
} |
// do here in between what has to be done end ------------- |
COMPLETE_REQUEST; |
KdPrint(("ioctl_control_interrupts(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// implements a blocking io-call to get irq status. |
static BOOLEAN ioctl_irq_status_kernel(PVOID pvContext) |
{ |
IOCTL_IRQ_STATUS_CONTEXT *context = (IOCTL_IRQ_STATUS_CONTEXT *)pvContext; |
KIRQL oldIrql; |
if (context->pciada->dwIrqStatus) |
{ |
// there is a pending interrupt - return immediately |
KdPrint(("ioctl_irq_status(), direct return (0x%08x)\n", context->pciada->dwIrqStatus)); |
context->pIrqStatus->dwInterruptFlags = context->pciada->dwIrqStatus; |
context->pciada->dwIrqStatus = 0; // release pending status |
*context->irp_info = sizeof(PCICC32_IRQ_RESPONSE); |
} |
else |
{ |
// make the request blocking |
IoAcquireCancelSpinLock(&oldIrql); |
if ((*context->Irp)->Cancel) // cancel while doing |
{ |
KdPrint(("ioctl_irq_status(), canceled return\n")); |
*context->Status = STATUS_CANCELLED; |
} |
else |
{ |
KdPrint(("ioctl_irq_status(), blocking\n")); |
if (context->pciada->pBlockingIrp != (PIRP *)NULL) |
{ |
// a Irp is still waiting |
*context->Status = STATUS_DEVICE_BUSY; |
} |
else |
{ |
context->file_obj->blockingIrp = *context->Irp; |
context->pciada->pBlockingIrp = &context->file_obj->blockingIrp; |
*context->Status = STATUS_PENDING; |
// mark irp as pending and return |
IoMarkIrpPending(*context->Irp); |
IoSetCancelRoutine(*context->Irp, CancelRequest); |
} |
} // if (Irp->Cancel) ... |
} |
return TRUE; |
} |
static NTSTATUS ioctl_irq_status(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = 0; |
PVOID pInputBuffer,pOutputBuffer; |
ULONG InputLength, OutputLength; |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
USHORT wModuleNumber; |
IOCTL_IRQ_STATUS_CONTEXT context; |
SET_BUFFERS_METHOD_BUFFERED; |
context.file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
wModuleNumber = context.file_obj->uwAssociatedCC32; |
context.pciada = pDevExt->cc32[wModuleNumber]; |
context.pIrqStatus = (PCICC32_IRQ_RESPONSE *)pOutputBuffer; |
context.Status = &Status; |
context.irp_info = &irp_info; |
context.Irp = &Irp; |
KdPrint(("ioctl_irq_status(%d)\n", wModuleNumber)); |
// do here in between what has to be done ----------------- |
if (OutputLength < sizeof(PCICC32_IRQ_RESPONSE)) |
Status = STATUS_BUFFER_TOO_SMALL; |
else |
{ |
context.pIrqStatus->dwInterface = wModuleNumber; |
KeSynchronizeExecution(context.pciada->InterruptObject, ioctl_irq_status_kernel, &context); |
} |
// do here in between what has to be done end ------------- |
COMPLETE_REQUEST; |
KdPrint(("ioctl_irq_status(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// for test and debug purposes: direkt access to PLX LCR space |
static NTSTATUS ioctl_access_lcr(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) |
{ |
NTSTATUS Status = STATUS_SUCCESS; |
ULONG irp_info = 0; |
PVOID pInputBuffer,pOutputBuffer; |
ULONG InputLength, OutputLength; |
FILE_OBJ *file_obj = (FILE_OBJ *)Irp->Tail.Overlay.OriginalFileObject->FsContext; |
USHORT wModuleNumber = file_obj->uwAssociatedCC32; |
DEVICE_EXT *pDevExt = (DEVICE_EXT *)(device_Obj->DeviceExtension); |
PCIADA *pciada = pDevExt->cc32[wModuleNumber]; |
PCICC32_LCR_ACCESS *pAccessOut; |
PCICC32_LCR_ACCESS *pAccessIn; |
SET_BUFFERS_METHOD_BUFFERED; |
KdPrint(("ioctl_access_lcr(%d)\n", wModuleNumber)); |
pAccessOut = (PCICC32_LCR_ACCESS *)pOutputBuffer; |
pAccessIn = (PCICC32_LCR_ACCESS *)pInputBuffer; |
// do here in between what has to be done ----------------- |
if (OutputLength < sizeof(PCICC32_LCR_ACCESS)) |
Status = STATUS_BUFFER_TOO_SMALL; |
else |
{ |
*pAccessOut = *pAccessIn; |
pAccessOut->dwInterface = wModuleNumber; |
if (pAccessIn->wRegisterAddress <= 0x52) |
{ |
// 1st part: long word accesses |
if (pAccessIn->bBytesLane == LONG_ACCESS) |
{ |
if (pAccessIn->wRegisterAddress & 0x0003) |
Status = STATUS_INSTRUCTION_MISALIGNMENT; |
else |
{ |
ULONG *pdwVirtAddress; |
ULONG dwDummy; |
pdwVirtAddress = (ULONG *)((ULONG)pciada->pvVirtLcr + pAccessIn->wRegisterAddress); |
switch (pAccessIn->bAccessMode) |
{ |
case LCR_WRITE: |
WRITE_REGISTER_ULONG(pdwVirtAddress, pAccessIn->dwContent); |
pAccessOut->dwContent = READ_REGISTER_ULONG(pdwVirtAddress); |
break; |
case LCR_OR: |
dwDummy = READ_REGISTER_ULONG(pdwVirtAddress); |
dwDummy |= pAccessIn->dwContent; |
WRITE_REGISTER_ULONG(pdwVirtAddress, dwDummy); |
pAccessOut->dwContent = READ_REGISTER_ULONG(pdwVirtAddress); |
break; |
case LCR_AND: |
dwDummy = READ_REGISTER_ULONG(pdwVirtAddress); |
dwDummy &= pAccessIn->dwContent; |
WRITE_REGISTER_ULONG(pdwVirtAddress, dwDummy); |
pAccessOut->dwContent = READ_REGISTER_ULONG(pdwVirtAddress); |
break; |
case LCR_WRITE_ONLY: |
WRITE_REGISTER_ULONG(pdwVirtAddress, pAccessIn->dwContent); |
break; |
case LCR_READ: |
pAccessOut->dwContent = READ_REGISTER_ULONG(pdwVirtAddress); |
break; |
default: Status = STATUS_ILLEGAL_INSTRUCTION; |
} |
} |
} |
// 2nd part: short word accesses |
if (pAccessIn->bBytesLane == WORD_ACCESS) |
{ |
if (pAccessIn->wRegisterAddress & 0x0001) |
Status = STATUS_INSTRUCTION_MISALIGNMENT; |
else |
{ |
USHORT *pwVirtAddress; |
USHORT wDummy; |
pwVirtAddress = (USHORT *)((ULONG)pciada->pvVirtLcr + pAccessIn->wRegisterAddress); |
switch (pAccessIn->bAccessMode) |
{ |
case LCR_WRITE: |
WRITE_REGISTER_USHORT(pwVirtAddress, (USHORT)pAccessIn->dwContent); |
pAccessOut->dwContent = READ_REGISTER_USHORT(pwVirtAddress); |
break; |
case LCR_OR: |
wDummy = READ_REGISTER_USHORT(pwVirtAddress); |
wDummy |= (USHORT)pAccessIn->dwContent; |
WRITE_REGISTER_USHORT(pwVirtAddress, wDummy); |
pAccessOut->dwContent = READ_REGISTER_USHORT(pwVirtAddress); |
break; |
case LCR_AND: |
wDummy = READ_REGISTER_USHORT(pwVirtAddress); |
wDummy &= (USHORT)pAccessIn->dwContent; |
WRITE_REGISTER_USHORT(pwVirtAddress, wDummy); |
pAccessOut->dwContent = READ_REGISTER_USHORT(pwVirtAddress); |
break; |
case LCR_WRITE_ONLY: |
WRITE_REGISTER_USHORT(pwVirtAddress, (USHORT)pAccessIn->dwContent); |
break; |
case LCR_READ: |
pAccessOut->dwContent = READ_REGISTER_USHORT(pwVirtAddress); |
break; |
default: Status = STATUS_ILLEGAL_INSTRUCTION; |
break; |
} |
} |
} |
// 3rd part: check illegal byte lanes |
if (!((pAccessIn->bBytesLane == LONG_ACCESS) || (pAccessIn->bBytesLane == WORD_ACCESS))) |
Status = STATUS_ILLEGAL_INSTRUCTION; |
} |
else |
Status = STATUS_ILLEGAL_INSTRUCTION; |
} |
// do here in between what has to be done end ------------- |
if (Status == STATUS_SUCCESS) |
irp_info = sizeof(PCICC32_LCR_ACCESS); |
COMPLETE_REQUEST; |
KdPrint(("ioctl_access_lcr(), Status = 0x%08x\n", Status)); |
return Status; |
} |
//------------------------------------------------------------------------ |
// the ultimate jumptable for ioctl |
// |
NTSTATUS (*ioctl[])(PDEVICE_OBJECT device_Obj, PIRP Irp, PIO_STACK_LOCATION IrpStack) = |
{ |
ioctl_dummy, // 0 |
ioctl_dummy, // 4 |
ioctl_get_status, // 8 |
ioctl_clear_status, // 0x0c |
ioctl_access_para, // 0x10 |
ioctl_control_interrupts, // 0x14 |
ioctl_dummy, // 0x18 |
ioctl_irq_status, // 0x1c |
ioctl_access_lcr // 0x20 |
}; |
/wiener_pcicc32/pcicc32/pcicc32/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer= ; TODO: set DriverVer in stampinf property pages |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NT$ARCH$ |
[Standard.NT$ARCH$] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll |
[SourceDisksFiles] |
WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = $KMDFVERSION$ |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/pcicc32/pcicc32_v.h |
---|
0,0 → 1,34 |
#ifndef __PCICC32_V_H__ |
#define __PCICC32_V_H__ |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32terface from ARW Elektronik, Germany --------- |
// header file belonging to pcicc32_v.c |
// |
// (c) 1999 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started AR 02.07.2000 |
// |
//------------------------------------------------------------------------- |
// DEFINES |
// |
#include <pcicc32_drv.h> |
//------------------------------------------------------------------------- |
// PROTOTYPES |
// |
NTSTATUS PCICC32ScanCC32(PDEVICE_OBJECT deviceObj); |
NTSTATUS PCICC32DeInitPCIADAs(PDEVICE_OBJECT deviceObj); |
void enableCC32(PCIADA *pciada); |
void disableCC32(PCIADA *pciada); |
#endif // __PCICC32_V_H__ |
/wiener_pcicc32/pcicc32/pcicc32/pcicc32_io.h |
---|
0,0 → 1,30 |
#ifndef __PCIVME_IO_H__ |
#define __PCIVME_IO_H__ |
//------------------------------------------------------------------------- |
// WINNT driver for PCIVME interface from ARW Elektronik, Germany --------- |
// the ioctl functions header file |
// |
// (c) 1999 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// ntddk.h must included first! |
// |
// what who when |
// started AR 03.07.99 |
// |
//------------------------------------------------------------------------ |
// FUNCTIONS + EXTERNALS |
// |
NTSTATUS (*ioctl[])(PDEVICE_OBJECT device_Obj, PIRP irp, PIO_STACK_LOCATION IrpStack); |
void fMyDefferedRoutine(PKDPC Dpc, PVOID pvDevice_object, PVOID pvPciada, PVOID Nothing); |
void CancelRequest(PDEVICE_OBJECT device_Obj, PIRP Irp); |
#endif // __PCIVME_IO_H__ |
/wiener_pcicc32/pcicc32/pcicc32/pcicc32.h |
---|
0,0 → 1,157 |
#ifndef __PCICC32_H__ |
#define __PCICC32_H__ |
//------------------------------------------------------------------------- |
// WINNT driver for PCICC32 interface from ARW Elektronik, Germany -------- |
// IO definitions and common data structures between application and driver |
// |
// (c) 2000,2001 ARW Elektronik |
// |
// this source code is published under GPL (Open Source). You can use, redistrubute and |
// modify it unless this header is not modified or deleted. No warranty is given that |
// this software will work like expected. |
// This product is not authorized for use as critical component in life support systems |
// wihout the express written approval of ARW Elektronik Germany. |
// |
// Please announce changes and hints to ARW Elektronik |
// |
// what who when |
// started AR 16.04.2000 |
// added irq functionality AR 24.02.2001 |
// added until 'not Q' read/write mode AR 03.03.2001 |
// added AUTOREAD AR 17.03.2001 |
// |
//------------------------------------------------------------------------- |
// INCLUDES |
// |
// #include <devioctl.h> must be declared before inclusion when used for driver |
// #include <winioctl.h> must be declared before inclusion when used for applications |
//------------------------------------------------------------------------- |
// DEFINES |
// |
//---------------------------------------------------------------------------------------- |
// macros for simple CAMAC NAF address calculation |
// |
#define NAF(n, a, f) ((ULONG)((n << 10) + (a << 6) + ((f & 0xf) << 2))) |
// to get a compatible view to WIN95 driver |
#define USER_CONTROL_CODE(x) (x) |
// VPCIC32D_ATTACH_CC32 and VPCIC32D_DETACH_CC32 are incompatible to WINNT - please use read and write commands |
// get the interrupt and timeout status from a CC32 interface (0x00220008) |
#define PCICC32_GET_STATUS CTL_CODE(\ |
FILE_DEVICE_UNKNOWN,\ |
USER_CONTROL_CODE(2),\ |
METHOD_BUFFERED,\ |
FILE_ANY_ACCESS) |
// clear the timeout status of a CC32 interface (0x0022000C) |
#define PCICC32_CLEAR_STATUS CTL_CODE(\ |
FILE_DEVICE_UNKNOWN,\ |
USER_CONTROL_CODE(3),\ |
METHOD_BUFFERED,\ |
FILE_ANY_ACCESS) |
// set the access parameter for this file (0x00220010) |
#define PCICC32_SET_ACCESS_PARA CTL_CODE(\ |
FILE_DEVICE_UNKNOWN,\ |
USER_CONTROL_CODE(4),\ |
METHOD_BUFFERED,\ |
FILE_ANY_ACCESS) |
// allow or inhibit CC32 interrupt requests (0x00220014) |
#define PCICC32_CONTROL_INTERRUPTS CTL_CODE(\ |
FILE_DEVICE_UNKNOWN,\ |
USER_CONTROL_CODE(5),\ |
METHOD_BUFFERED,\ |
FILE_ANY_ACCESS) |
// requests thru blocking io the status of a pending or a rising interrupt (0x0022001C) |
#define PCICC32_INSTALL_IRQ_BLOCK CTL_CODE(\ |
FILE_DEVICE_UNKNOWN,\ |
USER_CONTROL_CODE(7),\ |
METHOD_BUFFERED,\ |
FILE_ANY_ACCESS) |
// requests to access the PLX LCR for test and debug (0x00220020) |
#define PCICC32_ACCESS_LCR CTL_CODE(\ |
FILE_DEVICE_UNKNOWN,\ |
USER_CONTROL_CODE(8),\ |
METHOD_BUFFERED,\ |
FILE_ANY_ACCESS) |
// set to check for control-code overflow |
#define PCICC32_LAST_CTL_CODE PCICC32_ACCESS_LCR |
// mask bits for interrupt status |
#define LAM_IRQ 0x00FFFFFF // there was a LAM responible for the timeout |
#define CONNECTION_TIMEOUT 0x08000000 // irq raised through a connection timout |
#define LAM_BUS_OR 0x10000000 // a LAM-BUS-OR is pending |
#define LAM_NOT_OR 0x20000000 // a LAM-NOT-OR is pending |
#define LAM_AND_OR 0x40000000 // a LAM-AND-OR is pending |
#define LAM_FF 0x80000000 // the LAM-Flip-Flop was set |
// switches for PCICC32_ACCESS_COMMAND.wAccessType |
#define WORD_ACCESS (UCHAR)2 // word |
#define LONG_ACCESS (UCHAR)4 // long |
// define bits for PCICC32_ACCESS_COMMAND.wBlockTransfer |
#define UNTIL_NOT_Q 0x0001 // read/write unttil 'not Q' switch |
#define AUTOREAD 0x0002 // PCIADA data pipelining access tuner switch |
// data lane size constants for PCICC32_ACCESS_LCR |
#define BYTE_ACCESS (UCHAR)1 // write byte wise (illegal) |
#define WORD_ACCESS (UCHAR)2 // word |
#define LONG_ACCESS (UCHAR)4 // long |
// PCICC32_ACCESS_LCR access constants |
#define LCR_READ 0 // read only access |
#define LCR_WRITE 1 // write and read back access |
#define LCR_OR 2 // read, bitwise 'or' content and read back access |
#define LCR_AND 3 // read, bitwise 'and' content and read back access |
#define LCR_WRITE_ONLY 4 // do not read back after write |
// this structure is output from VPCIC32_GET_STATUS call |
typedef struct |
{ |
ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used) |
USHORT bTimeout; // denotes a pending PCIADA timeout |
USHORT bInterrupt; // denotes a pending LAM interrupt |
} PCICC32_STATUS; |
// this structure sets the access parameter for following reads or writes to this path |
typedef struct |
{ |
ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used) |
USHORT wAccessType; // set the current access type (WORD_ACCESS, LONG_ACCESS) |
USHORT wBlockTransfer; // set AUTOREAD or UNTIL_NOT_Q |
} PCICC32_ACCESS_COMMAND; |
// this structure is used to control the interrupts |
typedef struct |
{ |
ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used) |
USHORT wEnable; // a 1 allows, a 0 inhibits interrupt requests |
} PCICC32_IRQ_CONTROL; |
// this structure returns from a blocking interrupt status call |
typedef struct |
{ |
ULONG dwInterface; // CC32 module number (for compatibility to win95/98 only - not used) |
ULONG dwInterruptFlags; // the return status at the return of the blocking call |
} PCICC32_IRQ_RESPONSE; |
// structure to access the local configuration space of PLX chip (test / debug only) with PCICC32_ACCESS_LCR |
typedef struct |
{ |
ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
ULONG dwContent; // content to write, and, or |
USHORT wRegisterAddress; // address offset of LCR register |
UCHAR bAccessMode; // LCR_READ, write, or, and |
UCHAR bBytesLane; // the data access width |
} PCICC32_LCR_ACCESS; |
#endif // __PCICC32_H__ |
/wiener_pcicc32/pcicc32/pcicc32/guid.h |
---|
0,0 → 1,6 |
INTERFACENAME = { /* c4ad1dfa-3e35-4659-bf2b-c83cda6833e1 */ |
0xc4ad1dfa, |
0x3e35, |
0x4659, |
{0xbf, 0x2b, 0xc8, 0x3c, 0xda, 0x68, 0x33, 0xe1} |
}; |
/wiener_pcicc32/pcicc32/Win7Debug/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.20.773 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/Win7Debug/pcicc32 Package/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.20.773 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/Win7Debug/pcicc32 Package/pcicc32.sys |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win7Debug/pcicc32 Package/pcicc32.cat |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win7Debug/pcicc32 Package/WdfCoinstaller01011.dll |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win7Debug/pcicc32.sys |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win7Debug/pcicc32.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win7Debug/pcicc32Package.cer |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win7Debug/pcicc32.cer |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8.1Debug/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.19.198 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/Win8.1Debug/pcicc32 Package/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.19.198 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/Win8.1Debug/pcicc32 Package/pcicc32.sys |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8.1Debug/pcicc32 Package/pcicc32.cat |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8.1Debug/pcicc32 Package/WdfCoinstaller01011.dll |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8.1Debug/pcicc32.sys |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8.1Debug/pcicc32.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8.1Debug/pcicc32Package.cer |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8.1Debug/pcicc32.cer |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8Debug/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.21.688 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/Win8Debug/pcicc32 Package/pcicc32.inf |
---|
0,0 → 1,91 |
; |
; pcicc32.inf |
; |
[Version] |
Signature="$WINDOWS NT$" |
Class=Sample ; TODO: edit Class |
ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid |
Provider=%ManufacturerName% |
CatalogFile=pcicc32.cat |
DriverVer=02/10/2014,7.32.21.688 |
[DestinationDirs] |
DefaultDestDir = 12 |
; ================= Class section ===================== |
[ClassInstall32] |
Addreg=SampleClassReg |
[SampleClassReg] |
HKR,,,0,%ClassName% |
HKR,,Icon,,-5 |
[SourceDisksNames] |
1 = %DiskName%,,,"" |
[SourceDisksFiles] |
pcicc32.sys = 1,, |
;***************************************** |
; Install Section |
;***************************************** |
[Manufacturer] |
%ManufacturerName%=Standard,NTx86 |
[Standard.NTx86] |
%pcicc32.DeviceDesc%=pcicc32_Device, Root\pcicc32 ; TODO: edit hw-id |
[pcicc32_Device.NT] |
CopyFiles=Drivers_Dir |
[Drivers_Dir] |
pcicc32.sys |
;-------------- Service installation |
[pcicc32_Device.NT.Services] |
AddService = pcicc32,%SPSVCINST_ASSOCSERVICE%, pcicc32_Service_Inst |
; -------------- pcicc32 driver install sections |
[pcicc32_Service_Inst] |
DisplayName = %pcicc32.SVCDESC% |
ServiceType = 1 ; SERVICE_KERNEL_DRIVER |
StartType = 3 ; SERVICE_DEMAND_START |
ErrorControl = 1 ; SERVICE_ERROR_NORMAL |
ServiceBinary = %12%\pcicc32.sys |
LoadOrderGroup = Extended Base |
; |
;--- pcicc32_Device Coinstaller installation ------ |
; |
[DestinationDirs] |
pcicc32_Device_CoInstaller_CopyFiles = 11 |
[pcicc32_Device.NT.CoInstallers] |
AddReg=pcicc32_Device_CoInstaller_AddReg |
CopyFiles=pcicc32_Device_CoInstaller_CopyFiles |
[pcicc32_Device_CoInstaller_AddReg] |
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller01011.dll,WdfCoInstaller" |
[pcicc32_Device_CoInstaller_CopyFiles] |
WdfCoInstaller01011.dll |
[SourceDisksFiles] |
WdfCoInstaller01011.dll=1 ; make sure the number matches with SourceDisksNames |
[pcicc32_Device.NT.Wdf] |
KmdfService = pcicc32, pcicc32_wdfsect |
[pcicc32_wdfsect] |
KmdfLibraryVersion = 1.11 |
[Strings] |
SPSVCINST_ASSOCSERVICE= 0x00000002 |
ManufacturerName="" ; TODO: add ManufacturerName |
ClassName="Samples" ; TODO: edit ClassName |
DiskName = "pcicc32 Installation Disk" |
pcicc32.DeviceDesc = "pcicc32 Device" |
pcicc32.SVCDESC = "pcicc32 Service" |
/wiener_pcicc32/pcicc32/Win8Debug/pcicc32 Package/pcicc32.sys |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8Debug/pcicc32 Package/pcicc32.cat |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8Debug/pcicc32 Package/WdfCoinstaller01011.dll |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8Debug/pcicc32.sys |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8Debug/pcicc32.pdb |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8Debug/pcicc32Package.cer |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |
/wiener_pcicc32/pcicc32/Win8Debug/pcicc32.cer |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
Property changes: |
Added: svn:mime-type |
+application/octet-stream |
\ No newline at end of property |