| /drivers/wiener_pcivme_dll/Release/pcivme_ni.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 |
| /drivers/wiener_pcivme_dll/Release/pcivme_ni_NT.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 |
| /drivers/wiener_pcivme_dll/Release/pcivme_ni.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 |
| /drivers/wiener_pcivme_dll/Release/pcivme_ni.log |
|---|
| 0,0 → 1,17 |
| Build started 14.4.2014 15:35:41. |
| 1>Project "C:\home\rok\wiener_pcivme_dll\pcivme_ni.vcxproj" on node 2 (Build target(s)). |
| 1>ClCompile: |
| C:\Program Files\Microsoft Visual Studio 12.0\VC\bin\CL.exe /c /I. /Zi /nologo /W3 /WX- /O2 /Oy- /D WIN32 /D NDEBUG /D _WINDOWS /D _VC80_UPGRADE=0x0600 /D _WINDLL /GF /Gm- /EHsc /MT /GS /Gy /fp:precise /Zc:wchar_t /Zc:forScope /Fo".\Release\\" /Fd".\Release\vc120.pdb" /Gd /TC /analyze- /errorReport:prompt pcivme_ni.c |
| pcivme_ni.c |
| Link: |
| C:\Program Files\Microsoft Visual Studio 12.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:".\Release\pcivme_ni.dll" /INCREMENTAL:NO /NOLOGO odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:".\Release\pcivme_ni.pdb" /SUBSYSTEM:WINDOWS /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\Release\pcivme_ni.lib" /MACHINE:X86 /SAFESEH /DLL .\Release\Klist.obj |
| .\Release\os_info.obj |
| .\Release\pcivme_ni.obj |
| .\Release\pcivme_ni_NT.obj |
| Creating library .\Release\pcivme_ni.lib and object .\Release\pcivme_ni.exp |
| pcivme_ni.vcxproj -> C:\home\rok\wiener_pcivme_dll\.\Release\pcivme_ni.dll |
| 1>Done Building Project "C:\home\rok\wiener_pcivme_dll\pcivme_ni.vcxproj" (Build target(s)). |
| Build succeeded. |
| Time Elapsed 00:00:01.53 |
| /drivers/wiener_pcivme_dll/Release/Klist.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 |
| /drivers/wiener_pcivme_dll/Release/pcivme_ni.exp |
|---|
| 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 |
| /drivers/wiener_pcivme_dll/Release/os_info.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 |
| /drivers/wiener_pcivme_dll/Release/pcivme_ni.lib |
|---|
| 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 |
| /drivers/wiener_pcivme_dll/Release/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 |
| /drivers/wiener_pcivme_dll/Release/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 |
| /drivers/wiener_pcivme_dll/Release/link-rc.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 |
| /drivers/wiener_pcivme_dll/Release/pcivme_ni.lastbuildstate |
|---|
| 0,0 → 1,2 |
| #v4.0:v110:false |
| Release|Win32|C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\| |
| /drivers/wiener_pcivme_dll/Release/link-cvtres.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 |
| /drivers/wiener_pcivme_dll/Release/vc110.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 |
| /drivers/wiener_pcivme_dll/Release/pcivme_ni.write.1.tlog |
|---|
| 0,0 → 1,5 |
| ^C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\pcivme_ni.vcxproj |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.lib |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.lib |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.exp |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.exp |
| /drivers/wiener_pcivme_dll/Release/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 |
| /drivers/wiener_pcivme_dll/Release/pcivme_ni.Build.CppClean.log |
|---|
| 0,0 → 1,25 |
| C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCIVME\DLL-SOURCE\RELEASE\PCIVME_NI_NT.OBJ |
| C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCIVME\DLL-SOURCE\RELEASE\PCIVME_NI.OBJ |
| C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCIVME\DLL-SOURCE\RELEASE\OS_INFO.OBJ |
| C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCIVME\DLL-SOURCE\RELEASE\KLIST.OBJ |
| C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCIVME\DLL-SOURCE\RELEASE\VC110.PDB |
| C:\USERS\F9DAQ\ROK\WIENERPCIADA\PCIVME\DLL-SOURCE\RELEASE\PCIVME_NI.DLL |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.lib |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.exp |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\Klist.obj |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\os_info.obj |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.obj |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni_NT.obj |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\cl.command.1.tlog |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\CL.read.1.tlog |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\CL.write.1.tlog |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\link-cvtres.read.1.tlog |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\link-cvtres.write.1.tlog |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\link-rc.read.1.tlog |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\link-rc.write.1.tlog |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\link.command.1.tlog |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\link.read.1.tlog |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\link.write.1.tlog |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\pcivme_ni.write.1.tlog |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Release\vc110.pdb |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\.\Release\pcivme_ni.dll |
| /drivers/wiener_pcivme_dll/Release/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 |
| /drivers/wiener_pcivme_dll/Release/link-rc.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 |
| /drivers/wiener_pcivme_dll/Release/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 |
| /drivers/wiener_pcivme_dll/Release/link-cvtres.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 |
| /drivers/wiener_pcivme_dll/Release/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 |
| /drivers/wiener_pcivme_dll/pcivme_ni.c |
|---|
| 0,0 → 1,148 |
| //------------------------------------------------------------------------------------------- |
| // pcivme_ni.c - a ni labview dll skeleton for the ARW pcivme interface |
| // |
| // (c) 1999-2004 ARW Elektronik, Germany |
| // |
| // 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 |
| // |
| // |
| // $Log: pcivme_ni.c,v $ |
| // Revision 1.2 2004/07/24 07:47:00 klaus |
| // Update copyright to 2004 |
| // |
| // Revision 1.1.1.1 2003/11/14 23:17:18 klaus |
| // First put into repository |
| // |
| // Revision 1.2 2002/10/27 17:05:33 klaus |
| // CVS log added, file addressing bug > 2 Gbtye circumvent |
| // |
| // what who when |
| // first steps AR 07.11.1999 |
| // |
| //------------------------------------------------------------------------------------------- |
| // INCLUDES |
| // |
| #include <windows.h> |
| #include <os_info.h> |
| #include <pcivme_ni_NT.h> |
| #include <pcivme_ni.h> |
| #include <stdio.h> |
| //------------------------------------------------------------------------------------------- |
| // DEFINES |
| // |
| //------------------------------------------------------------------------------------------- |
| // TYPEDEFS |
| // |
| typedef struct |
| { |
| int (*VMEinit)(const char *cszDeviceName, unsigned short nVMEMM, unsigned char ubAddressModifier, int *pnHandle); |
| int (*VMEread)(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer); |
| int (*VMEwrite)(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer); |
| int (*VMEaccessVIC)(int Handle, unsigned char ubAccessMode, unsigned short uwAddress, unsigned char *ubContent); |
| int (*VMEreset)(int Handle); |
| int (*VMETAS)(int Handle, unsigned long ulAddress, unsigned char *ubResult); |
| int (*VMEinterrupt)(int Handle, unsigned char *ubVector); |
| int (*VMEsysfailGet)(int nHandle, BOOLEAN *bResult); |
| int (*VMEsysfailSet)(int nHandle, BOOLEAN bForce); |
| int (*VMEclose)(int nHandle); |
| } MY_ACTIONS; |
| //------------------------------------------------------------------------------------------- |
| // LOCALS |
| // |
| static MY_ACTIONS ma; // the selected actions |
| static BOOLEAN firstTime = TRUE; |
| //------------------------------------------------------------------------------------------- |
| // EXTERNALS |
| // |
| //------------------------------------------------------------------------------------------- |
| // GLOBALS |
| // |
| //------------------------------------------------------------------------------------------- |
| // FUNCTIONS |
| // |
| int __declspec(dllexport) VMEinit(const char *cszDeviceName, unsigned short nVMEMM, unsigned char ubAddressModifier, int *pnHandle) |
| { |
| if (firstTime) |
| { |
| if (IsWindowsNT()) |
| { |
| ma.VMEinit = VMEinitNT; |
| ma.VMEread = VMEreadNT; |
| ma.VMEwrite = VMEwriteNT; |
| ma.VMEaccessVIC = VMEaccessVICNT; |
| ma.VMEreset = VMEresetNT; |
| ma.VMETAS = VMETASNT; |
| ma.VMEinterrupt = VMEinterruptNT; |
| ma.VMEsysfailGet = VMEsysfailGetNT; |
| ma.VMEsysfailSet = VMEsysfailSetNT; |
| ma.VMEclose = VMEcloseNT; |
| } |
| else |
| return -1; |
| firstTime = FALSE; |
| } |
| return ma.VMEinit(cszDeviceName, nVMEMM, ubAddressModifier, pnHandle); |
| } |
| int __declspec(dllexport) VMEread(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer) |
| { |
| return ma.VMEread(nHandle, ulAddress, ubAccessWidth, ulElementCount, pvBuffer); |
| } |
| int __declspec(dllexport) VMEwrite(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer) |
| { |
| return ma.VMEwrite(nHandle, ulAddress, ubAccessWidth, ulElementCount, pvBuffer); |
| } |
| int __declspec(dllexport) VMEaccessVIC(int nHandle, unsigned char ubAccessMode, unsigned short uwAddress, unsigned char *ubContent) |
| { |
| return ma.VMEaccessVIC(nHandle, ubAccessMode, uwAddress, ubContent); |
| } |
| int __declspec(dllexport) VMEreset(int nHandle) |
| { |
| return ma.VMEreset(nHandle); |
| } |
| int __declspec(dllexport) VMETAS(int nHandle, unsigned long ulAddress, unsigned char *ubResult) |
| { |
| return ma.VMETAS(nHandle, ulAddress, ubResult); |
| } |
| int __declspec(dllexport) VMEsysfailGet(int nHandle, BOOLEAN *bResult) |
| { |
| return ma.VMEsysfailGet(nHandle, bResult); |
| } |
| int __declspec(dllexport) VMEsysfailSet(int nHandle, BOOLEAN bForce) |
| { |
| return ma.VMEsysfailSet(nHandle, bForce); |
| } |
| int __declspec(dllexport) VMEinterrupt(int nHandle, unsigned char *ubVector) |
| { |
| return ma.VMEinterrupt(nHandle, ubVector); |
| } |
| int __declspec(dllexport) VMEclose(int nHandle) |
| { |
| return ma.VMEclose(nHandle); |
| } |
| /drivers/wiener_pcivme_dll/pcivme_ni_NT.c |
|---|
| 0,0 → 1,458 |
| //------------------------------------------------------------------------------------------- |
| // pcivme_ni_NT.c - a ni labview dll skeleton for the ARW pcivme interface, winNT |
| // |
| // (c) 1999-2004 ARW Elektronik, Germany |
| // |
| // 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 |
| // |
| // $Log: pcivme_ni_NT.c,v $ |
| // Revision 1.2 2004/07/24 07:47:00 klaus |
| // Update copyright to 2004 |
| // |
| // Revision 1.1.1.1 2003/11/14 23:17:18 klaus |
| // First put into repository |
| // |
| // Revision 1.4 2002/10/27 21:32:35 klaus |
| // compatibility improved |
| // |
| // Revision 1.3 2002/10/27 19:22:58 klaus |
| // backward compatibilty problem for 2 Gbyte limit solved |
| // |
| // Revision 1.2 2002/10/27 17:05:33 klaus |
| // CVS log added, file addressing bug > 2 Gbtye circumvent |
| // |
| // what who when |
| // first steps AR 07.11.1999 |
| // |
| //------------------------------------------------------------------------------------------- |
| // INCLUDES |
| // |
| #include <windows.h> |
| #include <winioctl.h> |
| #include <pcivme.h> // header for win-NT |
| #include <vic.h> |
| #include <vme.h> |
| #include <pcivme_ni_NT.h> |
| #include <Klist.h> |
| #include <stdio.h> |
| FILE *vmefp; |
| //------------------------------------------------------------------------------------------- |
| // DEFINES |
| // |
| #define DEFDEVICENAME "\\\\.\\PCIVME:\\VMEMMxx" |
| #define LIMIT_2GBYTE 0x80000000 // 2 GByte addressing limit of WINNT ... |
| //------------------------------------------------------------------------------------------- |
| // TYPEDEFS |
| // |
| typedef struct // a element associated to a open path (between VMEinit and VMEclose) |
| { |
| HANDLE nHandle; |
| PCIVME_ACCESS_COMMAND access; |
| } OPEN_PATH; |
| //------------------------------------------------------------------------------------------- |
| // LOCALS |
| // |
| // user initialisation table for pcivme |
| static PCIVME_INIT_COMMAND sUserInitStruct = {2, {{STOP, WORD_ACCESS, 0, 0}}}; |
| // user deinitialisation table |
| static PCIVME_INIT_COMMAND sUserDeInitStruct = {2, {{STOP, WORD_ACCESS, 0, 0}}}; |
| // the list of Path specific data (a element lives between VMEinit and VMEclose) |
| static LIST liPathList = (LIST)NULL; |
| //------------------------------------------------------------------------------------------- |
| // EXTERNALS |
| // |
| //------------------------------------------------------------------------------------------- |
| // GLOBALS |
| // |
| //------------------------------------------------------------------------------------------- |
| // FUNCTIONS |
| // |
| // not only delete a element - even remove the whole list if it is empty |
| static void removeListElement(OPEN_PATH *open_path) |
| { |
| List_Delete((LPVOID)open_path); |
| // remove the list if the last item was deleted ---- |
| if ((liPathList != NULL) && (List_IsEmpty(liPathList) == TRUE)) |
| { |
| List_Destroy(&liPathList); |
| liPathList = (LIST)NULL; |
| } |
| } |
| //------------------------------------------------------------------------- |
| // create a DeviceName out of cszDeviceName and nIfcNum |
| static char *DeviceName(const char *cszDeviceName, int nIfcNum) |
| { |
| static char buffer[255]; |
| char *ptr = buffer; |
| if (cszDeviceName == NULL) |
| strcpy_s(buffer, 255 , DEFDEVICENAME); |
| else |
| strcpy_s(buffer, 255 , cszDeviceName); |
| while (*ptr) ptr++; |
| do |
| { |
| ptr--; |
| } while (*ptr != 'M'); |
| ptr++; |
| if (nIfcNum >= 10) |
| { |
| *ptr++ = '1'; |
| nIfcNum -= 10; |
| } |
| *ptr++ = '0' + nIfcNum; |
| *ptr = 0; |
| return buffer; |
| } |
| int VMEinitNT(const char *cszDeviceName, unsigned short nVMEMM, unsigned char ubAddressModifier, int *pnHandle) |
| { |
| OPEN_PATH *open_path; |
| DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
| DWORD result = 0; |
| vmefp = fopen("pcivme_ni.log","w"); |
| fprintf(vmefp, "VMEinitNT\n"); |
| if (liPathList == NULL) // create a list to hold the paths and its variables |
| { |
| liPathList = List_Create(); |
| if (liPathList == (LIST)NULL) |
| return GetLastError(); |
| } |
| open_path = (OPEN_PATH *)List_NewFirst(liPathList, sizeof(OPEN_PATH)); |
| *pnHandle = -1; |
| if ((open_path->nHandle = CreateFile( |
| DeviceName(cszDeviceName, nVMEMM), |
| GENERIC_READ | GENERIC_WRITE, |
| 0, |
| NULL, |
| OPEN_EXISTING, |
| FILE_ATTRIBUTE_NORMAL, |
| NULL)) != ((HANDLE)-1)) |
| { |
| // init hardware (only one time after the first init it works OK) |
| result = DeviceIoControl(open_path->nHandle, |
| PCIVME_INIT_HARDWARE, |
| &sUserInitStruct, |
| (DWORD)sizeof(sUserInitStruct), |
| NULL, |
| (DWORD)0, |
| &DIOC_count, |
| NULL); |
| // set the current access parameters ------------------ |
| open_path->access.bAddressModifier = ubAddressModifier; |
| open_path->access.bAccessType = |
| open_path->access.bIncrement = BYTE_ACCESS; |
| open_path->access.dwAccessBase = 0; |
| result = DeviceIoControl(open_path->nHandle, |
| PCIVME_SET_ACCESS_PARA, |
| &open_path->access, |
| (DWORD)sizeof(open_path->access), |
| NULL, |
| 0, |
| &DIOC_count, |
| NULL); |
| if (!result) |
| { |
| result = GetLastError(); |
| fprintf(vmefp, "DeviceIoControl result=%d\n", result); |
| fclose(vmefp); |
| CloseHandle(open_path->nHandle); |
| removeListElement(open_path); |
| return result; |
| } |
| *pnHandle = (int)open_path; |
| return 0; |
| } |
| else |
| { |
| result = GetLastError(); |
| fprintf(vmefp, "CreateFile error result=%d %s\n", result, DeviceName(cszDeviceName, nVMEMM)); |
| fclose(vmefp); |
| removeListElement(open_path); |
| return result; |
| } |
| } |
| int VMEreadNT(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer) |
| { |
| DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
| unsigned long ulNumberOfBytes = ulElementCount * ubAccessWidth; |
| unsigned long bytesRead; |
| OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
| if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
| // set the current access parameters ------------------ |
| open_path->access.bAccessType = |
| open_path->access.bIncrement = ubAccessWidth; |
| // take care of only 2 Gbyte addressing capabilities of WINNT ... |
| if (ulAddress >= LIMIT_2GBYTE) |
| { |
| ulAddress -= LIMIT_2GBYTE; |
| open_path->access.dwAccessBase = LIMIT_2GBYTE; |
| } |
| else |
| open_path->access.dwAccessBase = 0; |
| if (!DeviceIoControl(open_path->nHandle, |
| PCIVME_SET_ACCESS_PARA, |
| &open_path->access, |
| (DWORD)sizeof(open_path->access), |
| NULL, |
| 0, |
| &DIOC_count, |
| NULL)) |
| return GetLastError(); |
| SetFilePointer(open_path->nHandle, ulAddress, NULL, FILE_BEGIN); |
| if (!ReadFile(open_path->nHandle, pvBuffer, ulNumberOfBytes, &bytesRead, NULL)) |
| return GetLastError(); |
| return 0; |
| } |
| int VMEwriteNT(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer) |
| { |
| DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
| unsigned long ulNumberOfBytes = ulElementCount * ubAccessWidth; |
| unsigned long bytesRead; |
| OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
| if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
| // set the current access parameters ------------------ |
| open_path->access.bAccessType = |
| open_path->access.bIncrement = ubAccessWidth; |
| // take care of only 2 Gbyte addressing capabilities of WINNT ... |
| if (ulAddress >= LIMIT_2GBYTE) |
| { |
| ulAddress -= LIMIT_2GBYTE; |
| open_path->access.dwAccessBase = LIMIT_2GBYTE; |
| } |
| else |
| open_path->access.dwAccessBase = 0; |
| if (!DeviceIoControl(open_path->nHandle, |
| PCIVME_SET_ACCESS_PARA, |
| &open_path->access, |
| (DWORD)sizeof(open_path->access), |
| NULL, |
| 0, |
| &DIOC_count, |
| NULL)) |
| return GetLastError(); |
| SetFilePointer(open_path->nHandle, ulAddress, NULL, FILE_BEGIN); |
| if (!WriteFile(open_path->nHandle, pvBuffer, ulNumberOfBytes, &bytesRead, NULL)) |
| return GetLastError(); |
| return 0; |
| } |
| int VMEaccessVICNT(int nHandle, unsigned char ubAccessMode, unsigned short uwAddress, unsigned char *ubContent) |
| { |
| DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
| OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
| PCIVME_VIC68A_ACTION sAction; // structure to access vic chip |
| DWORD result; |
| if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
| sAction.wRegisterAddress = uwAddress; |
| sAction.wAccessMode = ubAccessMode; |
| sAction.bContent = *ubContent; |
| result = DeviceIoControl(open_path->nHandle, PCIVME_ACCESS_VIC68A, |
| &sAction, sizeof(sAction), &sAction, |
| sizeof(sAction), &DIOC_count, NULL); |
| *ubContent = sAction.bContent; |
| if (!result) |
| return GetLastError(); |
| else |
| return 0; |
| } |
| int VMEresetNT(int nHandle) |
| { |
| DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
| OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
| DWORD result; |
| PCIVME_RESET_COMMAND reset_command; |
| PCIVME_RESET_RESULT reset_result; |
| if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
| reset_command.wCommand = VME_RESET_CMD; |
| reset_result.wResult = 0; |
| result = DeviceIoControl(open_path->nHandle, PCIVME_RESET, |
| &reset_command, sizeof(reset_command), |
| &reset_result, sizeof(reset_result), |
| &DIOC_count, NULL); |
| if (!result) |
| return GetLastError(); |
| else |
| { |
| result = 1; |
| while (reset_result.wResult && result) |
| { |
| reset_command.wCommand = POLL_RESET_CMD; |
| result = DeviceIoControl(open_path->nHandle, PCIVME_RESET, |
| &reset_command, sizeof(reset_command), |
| &reset_result, sizeof(reset_result), |
| &DIOC_count, NULL); |
| Sleep(10); |
| } |
| } |
| if (!result) |
| return GetLastError(); |
| else |
| return 0; |
| } |
| int VMETASNT(int nHandle, unsigned long ulAddress, unsigned char *ubResult) |
| { |
| DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
| OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
| PCIVME_TAS_STRUCT sTAS; // structure to do a Test and Set |
| DWORD result; |
| if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
| sTAS.wModifier = open_path->access.bAddressModifier; |
| sTAS.dwAddress = ulAddress; |
| sTAS.bContent = 0x80; |
| result = DeviceIoControl(open_path->nHandle, PCIVME_TAS, |
| &sTAS, (DWORD)sizeof(sTAS), &sTAS, |
| (DWORD)sizeof(sTAS), &DIOC_count, NULL); |
| *ubResult = sTAS.bContent; |
| if (!result) |
| return GetLastError(); |
| else |
| return 0; |
| } |
| int VMEinterruptNT(int nHandle, unsigned char *ubVector) |
| { |
| // DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
| OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
| if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
| return 0; |
| } |
| int VMEsysfailGetNT(int nHandle, BOOLEAN *bResult) |
| { |
| DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
| OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
| PCIVME_VIC68A_ACTION sAction; // structure to access vic chip |
| DWORD result; |
| if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
| sAction.wRegisterAddress = EGICR; |
| sAction.wAccessMode = VIC68A_READ; |
| sAction.bContent = 0; |
| result = DeviceIoControl(open_path->nHandle, PCIVME_ACCESS_VIC68A, |
| &sAction, sizeof(sAction), &sAction, |
| sizeof(sAction), &DIOC_count, NULL); |
| *bResult = (sAction.bContent & 0x08) ? FALSE : TRUE; |
| if (!result) |
| return GetLastError(); |
| else |
| return 0; |
| } |
| int VMEsysfailSetNT(int nHandle, BOOLEAN bForce) |
| { |
| DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
| OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
| PCIVME_VIC68A_ACTION sAction; // structure to access vic chip |
| DWORD result; |
| if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
| sAction.wRegisterAddress = ICR7; |
| sAction.wAccessMode = (bForce == TRUE) ? VIC68A_AND : VIC68A_OR; |
| sAction.bContent = (bForce == TRUE) ? 0x3F : 0x80; |
| result = DeviceIoControl(open_path->nHandle, PCIVME_ACCESS_VIC68A, |
| &sAction, (DWORD)sizeof(sAction), &sAction, |
| (DWORD)sizeof(sAction), &DIOC_count, NULL); |
| if (!result) |
| return GetLastError(); |
| else |
| return 0; |
| } |
| int VMEcloseNT(int nHandle) |
| { |
| DWORD DIOC_count; // count of returned bytes of DeviceIoControl |
| OPEN_PATH *open_path = (OPEN_PATH *)nHandle; |
| if (nHandle == -1) return ERROR_PATH_NOT_FOUND; |
| DeviceIoControl(open_path->nHandle, |
| PCIVME_DEINIT_HARDWARE, |
| &sUserDeInitStruct, |
| (DWORD)sizeof(sUserDeInitStruct), |
| NULL, |
| 0, |
| &DIOC_count, |
| NULL); |
| CloseHandle(open_path->nHandle); |
| removeListElement(open_path); |
| return 0; |
| } |
| /drivers/wiener_pcivme_dll/pcivme_ni.vcxproj |
|---|
| 0,0 → 1,150 |
| <?xml version="1.0" encoding="utf-8"?> |
| <Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
| <ItemGroup Label="ProjectConfigurations"> |
| <ProjectConfiguration Include="Debug|Win32"> |
| <Configuration>Debug</Configuration> |
| <Platform>Win32</Platform> |
| </ProjectConfiguration> |
| <ProjectConfiguration Include="Release|Win32"> |
| <Configuration>Release</Configuration> |
| <Platform>Win32</Platform> |
| </ProjectConfiguration> |
| </ItemGroup> |
| <PropertyGroup Label="Globals"> |
| <SccProjectName>pcivme_ni</SccProjectName> |
| <SccLocalPath>.</SccLocalPath> |
| <ProjectGuid>{A549E673-98F7-439F-8F28-CDE063B35DD5}</ProjectGuid> |
| </PropertyGroup> |
| <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
| <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> |
| <ConfigurationType>DynamicLibrary</ConfigurationType> |
| <PlatformToolset>v120</PlatformToolset> |
| <UseOfMfc>false</UseOfMfc> |
| </PropertyGroup> |
| <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> |
| <ConfigurationType>DynamicLibrary</ConfigurationType> |
| <PlatformToolset>v120</PlatformToolset> |
| <UseOfMfc>false</UseOfMfc> |
| </PropertyGroup> |
| <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
| <ImportGroup Label="ExtensionSettings"> |
| </ImportGroup> |
| <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> |
| <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
| <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" /> |
| </ImportGroup> |
| <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> |
| <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
| <Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" /> |
| </ImportGroup> |
| <PropertyGroup Label="UserMacros" /> |
| <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
| <OutDir>.\Debug\</OutDir> |
| <IntDir>.\Debug\</IntDir> |
| <LinkIncremental>true</LinkIncremental> |
| </PropertyGroup> |
| <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
| <OutDir>.\Release\</OutDir> |
| <IntDir>.\Release\</IntDir> |
| <LinkIncremental>false</LinkIncremental> |
| </PropertyGroup> |
| <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> |
| <ClCompile> |
| <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> |
| <InlineFunctionExpansion>Default</InlineFunctionExpansion> |
| <FunctionLevelLinking>false</FunctionLevelLinking> |
| <Optimization>Disabled</Optimization> |
| <SuppressStartupBanner>true</SuppressStartupBanner> |
| <WarningLevel>Level3</WarningLevel> |
| <MinimalRebuild>true</MinimalRebuild> |
| <DebugInformationFormat>EditAndContinue</DebugInformationFormat> |
| <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> |
| <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
| <AssemblerListingLocation>.\Debug\</AssemblerListingLocation> |
| <PrecompiledHeaderOutputFile>.\Debug\pcivme_ni.pch</PrecompiledHeaderOutputFile> |
| <ObjectFileName>.\Debug\</ObjectFileName> |
| <ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName> |
| </ClCompile> |
| <Midl> |
| <SuppressStartupBanner>true</SuppressStartupBanner> |
| <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
| <TypeLibraryName>.\Debug\pcivme_ni.tlb</TypeLibraryName> |
| <MkTypLibCompatible>true</MkTypLibCompatible> |
| <RedirectOutputAndErrors>NUL</RedirectOutputAndErrors> |
| <TargetEnvironment>Win32</TargetEnvironment> |
| </Midl> |
| <ResourceCompile> |
| <Culture>0x0407</Culture> |
| <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
| </ResourceCompile> |
| <Bscmake> |
| <SuppressStartupBanner>true</SuppressStartupBanner> |
| <OutputFile>.\Debug\pcivme_ni.bsc</OutputFile> |
| </Bscmake> |
| <Link> |
| <SuppressStartupBanner>true</SuppressStartupBanner> |
| <LinkDLL>true</LinkDLL> |
| <GenerateDebugInformation>true</GenerateDebugInformation> |
| <SubSystem>Windows</SubSystem> |
| <OutputFile>.\Debug\pcivme_ni.dll</OutputFile> |
| <ImportLibrary>.\Debug\pcivme_ni.lib</ImportLibrary> |
| <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
| </Link> |
| </ItemDefinitionGroup> |
| <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> |
| <ClCompile> |
| <RuntimeLibrary>MultiThreaded</RuntimeLibrary> |
| <InlineFunctionExpansion>Default</InlineFunctionExpansion> |
| <StringPooling>true</StringPooling> |
| <FunctionLevelLinking>true</FunctionLevelLinking> |
| <Optimization>MaxSpeed</Optimization> |
| <SuppressStartupBanner>true</SuppressStartupBanner> |
| <WarningLevel>Level3</WarningLevel> |
| <AdditionalIncludeDirectories>.;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> |
| <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
| <AssemblerListingLocation>.\Release\</AssemblerListingLocation> |
| <PrecompiledHeaderOutputFile>.\Release\pcivme_ni.pch</PrecompiledHeaderOutputFile> |
| <ObjectFileName>.\Release\</ObjectFileName> |
| <ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName> |
| </ClCompile> |
| <Midl> |
| <SuppressStartupBanner>true</SuppressStartupBanner> |
| <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
| <TypeLibraryName>.\Release\pcivme_ni.tlb</TypeLibraryName> |
| <MkTypLibCompatible>true</MkTypLibCompatible> |
| <RedirectOutputAndErrors>NUL</RedirectOutputAndErrors> |
| <TargetEnvironment>Win32</TargetEnvironment> |
| </Midl> |
| <ResourceCompile> |
| <Culture>0x0407</Culture> |
| <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> |
| </ResourceCompile> |
| <Bscmake> |
| <SuppressStartupBanner>true</SuppressStartupBanner> |
| <OutputFile>.\Release\pcivme_ni.bsc</OutputFile> |
| </Bscmake> |
| <Link> |
| <SuppressStartupBanner>true</SuppressStartupBanner> |
| <LinkDLL>true</LinkDLL> |
| <SubSystem>Windows</SubSystem> |
| <OutputFile>.\Release\pcivme_ni.dll</OutputFile> |
| <ImportLibrary>.\Release\pcivme_ni.lib</ImportLibrary> |
| <AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies> |
| </Link> |
| </ItemDefinitionGroup> |
| <ItemGroup> |
| <ClCompile Include="Klist.c" /> |
| <ClCompile Include="os_info.c" /> |
| <ClCompile Include="pcivme_ni.c" /> |
| <ClCompile Include="pcivme_ni_NT.c" /> |
| </ItemGroup> |
| <ItemGroup> |
| <ClInclude Include="Klist.h" /> |
| <ClInclude Include="os_info.h" /> |
| <ClInclude Include="pcivme_ni.h" /> |
| <ClInclude Include="pcivme_ni_NT.h" /> |
| </ItemGroup> |
| <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
| <ImportGroup Label="ExtensionTargets"> |
| </ImportGroup> |
| </Project> |
| /drivers/wiener_pcivme_dll/os_info.h |
|---|
| 0,0 → 1,32 |
| #ifndef __OS_INFO_H__ |
| #define __OS_INFO_H__ |
| //------------------------------------------------------------------------------------------- |
| // os_info.h - request the OS type and version - the prototypes |
| // |
| // (c) 1999-2004 ARW Elektronik, Germany |
| // |
| // |
| // 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 |
| // |
| // |
| // $Log: os_info.h,v $ |
| // Revision 1.2 2004/07/24 08:05:31 klaus |
| // Update copyright to 2004 |
| // |
| // |
| // what who when |
| // first steps AR 07.11.1999 |
| // |
| BOOLEAN IsWindowsNT(void); |
| BOOLEAN IsWindows98(void); |
| BOOLEAN IsWindows95(void); |
| #endif |
| /drivers/wiener_pcivme_dll/pcivme_ni.v11.suo |
|---|
| 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 |
| /drivers/wiener_pcivme_dll/Debug/pcivme_ni.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 |
| /drivers/wiener_pcivme_dll/Debug/pcivme_ni_NT.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 |
| /drivers/wiener_pcivme_dll/Debug/pcivme_ni.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 |
| /drivers/wiener_pcivme_dll/Debug/vc110.idb |
|---|
| 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 |
| /drivers/wiener_pcivme_dll/Debug/pcivme_ni.ilk |
|---|
| 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 |
| /drivers/wiener_pcivme_dll/Debug/pcivme_ni.log |
|---|
| 0,0 → 1,18 |
| Build started 10.2.2014 9:28:27. |
| 1>Project "C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\pcivme_ni.vcxproj" on node 2 (Build target(s)). |
| 1>ClCompile: |
| C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\CL.exe /c /I. /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _WINDOWS /D _VC80_UPGRADE=0x0600 /D _WINDLL /Gm /EHsc /MTd /GS /Gy- /fp:precise /Zc:wchar_t /Zc:forScope /Fo".\Debug\\" /Fd".\Debug\vc110.pdb" /Gd /TC /analyze- /errorReport:prompt pcivme_ni.c |
| pcivme_ni.c |
| Link: |
| C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:".\Debug\pcivme_ni.dll" /INCREMENTAL /NOLOGO odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:".\Debug\pcivme_ni.pdb" /SUBSYSTEM:WINDOWS /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\Debug\pcivme_ni.lib" /MACHINE:X86 /SAFESEH /DLL .\Debug\Klist.obj |
| .\Debug\os_info.obj |
| .\Debug\pcivme_ni.obj |
| .\Debug\pcivme_ni_NT.obj |
| 1>Klist.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/SAFESEH' specification |
| Creating library .\Debug\pcivme_ni.lib and object .\Debug\pcivme_ni.exp |
| pcivme_ni.vcxproj -> C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\.\Debug\pcivme_ni.dll |
| 1>Done Building Project "C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\pcivme_ni.vcxproj" (Build target(s)). |
| Build succeeded. |
| Time Elapsed 00:00:00.64 |
| /drivers/wiener_pcivme_dll/Debug/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 |
| /drivers/wiener_pcivme_dll/Debug/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 |
| /drivers/wiener_pcivme_dll/Debug/link-rc.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 |
| /drivers/wiener_pcivme_dll/Debug/pcivme_ni.lastbuildstate |
|---|
| 0,0 → 1,2 |
| #v4.0:v110:false |
| Debug|Win32|C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\| |
| /drivers/wiener_pcivme_dll/Debug/link-cvtres.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 |
| /drivers/wiener_pcivme_dll/Debug/vc110.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 |
| /drivers/wiener_pcivme_dll/Debug/Klist.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 |
| /drivers/wiener_pcivme_dll/Debug/pcivme_ni.exp |
|---|
| 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 |
| /drivers/wiener_pcivme_dll/Debug/pcivme_ni.write.1.tlog |
|---|
| 0,0 → 1,5 |
| ^C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\pcivme_ni.vcxproj |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Debug\pcivme_ni.lib |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Debug\pcivme_ni.lib |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Debug\pcivme_ni.exp |
| C:\Users\f9daq\rok\wienerpciada\PciVme\Dll-source\Debug\pcivme_ni.exp |
| /drivers/wiener_pcivme_dll/Debug/os_info.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 |
| /drivers/wiener_pcivme_dll/Debug/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 |
| /drivers/wiener_pcivme_dll/Debug/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 |
| /drivers/wiener_pcivme_dll/Debug/link-rc.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 |
| /drivers/wiener_pcivme_dll/Debug/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 |
| /drivers/wiener_pcivme_dll/Debug/pcivme_ni.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 |
| /drivers/wiener_pcivme_dll/Debug/link-cvtres.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 |
| /drivers/wiener_pcivme_dll/Debug/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 |
| /drivers/wiener_pcivme_dll/Debug/pcivme_ni.lib |
|---|
| 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 |
| /drivers/wiener_pcivme_dll/pcivme_ni.plg |
|---|
| 0,0 → 1,37 |
| <html> |
| <body> |
| <pre> |
| <h1>Erstellungsprotokoll</h1> |
| <h3> |
| --------------------Konfiguration: pcivme_ni - Win32 Release-------------------- |
| </h3> |
| <h3>Befehlszeilen</h3> |
| Erstellen der temporären Datei "E:\DOKUME~1\klaus\LOKALE~1\Temp\RSPD7.tmp" mit Inhalten |
| [ |
| /nologo /MT /W3 /GX /O2 /I "." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fp"Release/pcivme_ni.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c |
| "E:\Work\projects\pcivme_ni\pcivme_ni.c" |
| ] |
| Creating command line "cl.exe @E:\DOKUME~1\klaus\LOKALE~1\Temp\RSPD7.tmp" |
| Erstellen der temporären Datei "E:\DOKUME~1\klaus\LOKALE~1\Temp\RSPD8.tmp" mit Inhalten |
| [ |
| 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 /dll /incremental:no /pdb:"Release/pcivme_ni.pdb" /machine:I386 /out:"Release/pcivme_ni.dll" /implib:"Release/pcivme_ni.lib" |
| .\Release\Klist.obj |
| .\Release\os_info.obj |
| .\Release\pcivme_ni.obj |
| .\Release\pcivme_ni_95.obj |
| .\Release\pcivme_ni_NT.obj |
| ] |
| Erstellen der Befehlzeile "link.exe @E:\DOKUME~1\klaus\LOKALE~1\Temp\RSPD8.tmp" |
| <h3>Ausgabefenster</h3> |
| Kompilierung läuft... |
| pcivme_ni.c |
| Linker-Vorgang läuft... |
| Bibliothek Release/pcivme_ni.lib und Objekt Release/pcivme_ni.exp wird erstellt |
| <h3>Ergebnisse</h3> |
| pcivme_ni.dll - 0 Fehler, 0 Warnung(en) |
| </pre> |
| </body> |
| </html> |
| /drivers/wiener_pcivme_dll/pcivme_ni.h |
|---|
| 0,0 → 1,56 |
| #ifndef __PCIVME_NI_H__ |
| #define __PCIVME_NI_H__ |
| //------------------------------------------------------------------------------------------- |
| // pcivme_ni.h - header for ni-labview dll for ARW pcivme interface |
| // |
| // (c) 1999-2004 ARW Elektronik, Germany |
| // |
| // 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 |
| // |
| // |
| // $Log: pcivme_ni.h,v $ |
| // Revision 1.2 2004/07/24 08:05:31 klaus |
| // Update copyright to 2004 |
| // |
| // Revision 1.1.1.1 2003/11/14 23:17:18 klaus |
| // First put into repository |
| // |
| // Revision 1.2 2002/10/27 17:05:33 klaus |
| // CVS log added, file addressing bug > 2 Gbtye circumvent |
| // |
| // what who when |
| // first steps AR 17.11.1999 |
| // modified for use with C++ AR 08.06.2002 |
| // |
| //------------------------------------------------------------------------------------------- |
| // FUNCTIONS |
| // |
| #ifdef __cplusplus |
| extern "C" |
| { |
| #endif |
| int __declspec(dllexport) VMEinit(const char *cszDeviceName, unsigned short nVMEMM, unsigned char ubAddressModifier, int *pnHandle); |
| int __declspec(dllexport) VMEread(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer); |
| int __declspec(dllexport) VMEwrite(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer); |
| int __declspec(dllexport) VMEaccessVIC(int nHandle, unsigned char ubAccessMode, unsigned short uwAddress, unsigned char *ubContent); |
| int __declspec(dllexport) VMEreset(int nHandle); |
| int __declspec(dllexport) VMETAS(int nHandle, unsigned long ulAddress, unsigned char *ubResult); |
| int __declspec(dllexport) VMEinterrupt(int nHandle, unsigned char *ubVector); |
| int __declspec(dllexport) VMEsysfailGet(int nHandle, BOOLEAN *bResult); |
| int __declspec(dllexport) VMEsysfailSet(int nHandle, BOOLEAN bForce); |
| int __declspec(dllexport) VMEclose(int nHandle); |
| #ifdef __cplusplus |
| } |
| #endif |
| #endif /* __PCIVME_NI_H__ */ |
| /drivers/wiener_pcivme_dll/pcivme_ni_NT.h |
|---|
| 0,0 → 1,51 |
| #ifndef __PCIVME_NI_NT_H__ |
| #define __PCIVME_NI_NT_H__ |
| //------------------------------------------------------------------------------------------- |
| // pcivme_ni_NT.c - a ni labview dll skeleton for the ARW pcivme interface, winNT |
| // |
| // (c) 1999-2004 ARW Elektronik, Germany |
| // |
| // 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 |
| // |
| // |
| // $Log: pcivme_ni_NT.h,v $ |
| // Revision 1.2 2004/07/24 07:47:00 klaus |
| // Update copyright to 2004 |
| // |
| // Revision 1.1.1.1 2003/11/14 23:17:18 klaus |
| // First put into repository |
| // |
| // Revision 1.2 2002/10/27 17:05:33 klaus |
| // CVS log added, file addressing bug > 2 Gbtye circumvent |
| // |
| // what who when |
| // first steps AR 07.11.1999 |
| // |
| //------------------------------------------------------------------------------------------- |
| // FUNCTIONS |
| // |
| #include <windows.h> |
| //------------------------------------------------------------------------------------------- |
| // FUNCTIONS |
| // |
| int VMEinitNT(const char *cszDeviceName, unsigned short nVMEMM, unsigned char ubAddressModifier, int *pnHandle); |
| int VMEreadNT(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer); |
| int VMEwriteNT(int nHandle, unsigned long ulAddress, unsigned char ubAccessWidth, unsigned long ulElementCount, void *pvBuffer); |
| int VMEaccessVICNT(int nHandle, unsigned char ubAccessMode, unsigned short uwAddress, unsigned char *ubContent); |
| int VMEresetNT(int nHandle); |
| int VMETASNT(int nHandle, unsigned long ulAddress, unsigned char *ubResult); |
| int VMEinterruptNT(int nHandle, unsigned char *ubVector); |
| int VMEsysfailGetNT(int nHandle, BOOLEAN *bResult); |
| int VMEsysfailSetNT(int nHandle, BOOLEAN bForce); |
| int VMEcloseNT(int nHandle); |
| #endif /* __PCIVME_NI_NT_H__ */ |
| /drivers/wiener_pcivme_dll/pcivme_ni.sln |
|---|
| 0,0 → 1,20 |
| |
| Microsoft Visual Studio Solution File, Format Version 12.00 |
| # Visual Studio Express 2012 for Windows Desktop |
| Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pcivme_ni", "pcivme_ni.vcxproj", "{A549E673-98F7-439F-8F28-CDE063B35DD5}" |
| EndProject |
| Global |
| GlobalSection(SolutionConfigurationPlatforms) = preSolution |
| Debug|Win32 = Debug|Win32 |
| Release|Win32 = Release|Win32 |
| EndGlobalSection |
| GlobalSection(ProjectConfigurationPlatforms) = postSolution |
| {A549E673-98F7-439F-8F28-CDE063B35DD5}.Debug|Win32.ActiveCfg = Debug|Win32 |
| {A549E673-98F7-439F-8F28-CDE063B35DD5}.Debug|Win32.Build.0 = Debug|Win32 |
| {A549E673-98F7-439F-8F28-CDE063B35DD5}.Release|Win32.ActiveCfg = Release|Win32 |
| {A549E673-98F7-439F-8F28-CDE063B35DD5}.Release|Win32.Build.0 = Release|Win32 |
| EndGlobalSection |
| GlobalSection(SolutionProperties) = preSolution |
| HideSolutionNode = FALSE |
| EndGlobalSection |
| EndGlobal |
| /drivers/wiener_pcivme_dll/Vic.h |
|---|
| 0,0 → 1,116 |
| #ifndef __VIC_H__ |
| #define __VIC_H__ |
| //------------------------------------------------------------------------------------------ |
| // vic.h - some constants about the VIC68A chip from cypress semiconductor |
| // |
| // (c) 1999-2004 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 |
| // |
| // |
| // $Log: Vic.h,v $ |
| // Revision 1.3 2004/07/24 07:07:26 klaus |
| // Update copyright to 2004 |
| // |
| // Revision 1.2 2003/11/15 19:12:51 klaus |
| // Update copyright to 2003 |
| // |
| // Revision 1.1.1.1 2003/11/14 23:16:33 klaus |
| // First put into repository |
| // |
| // Revision 1.3 2002/10/27 16:17:48 klaus |
| // Typing bug fixed caused at log addition |
| // |
| // Revision 1.2 2002/10/27 16:11:03 klaus |
| // Added CVS log into header |
| // |
| // what who when |
| // finished first release to use with the PCIVME interface of ARW AR 24.11.1997 |
| // SRR corrected from SSR AR 18.04.1999 |
| // |
| /* all address offsets relative to vic base */ |
| #define VICR1 (WORD)0x07 /* VMEbus Interrupt Control Register #.. */ |
| #define VICR2 (WORD)0x0b |
| #define VICR3 (WORD)0x0f |
| #define VICR4 (WORD)0x13 |
| #define VICR5 (WORD)0x17 |
| #define VICR6 (WORD)0x1b |
| #define VICR7 (WORD)0x1f |
| #define LICR1 (WORD)0x27 /* Local interrupt control register .. */ |
| #define LICR2 (WORD)0x2b |
| #define LICR3 (WORD)0x2f |
| #define LICR4 (WORD)0x33 |
| #define LICR5 (WORD)0x37 |
| #define LICR6 (WORD)0x3b |
| #define LICR7 (WORD)0x3f |
| #define LIVBR (WORD)0x57 /* Local interrupt vector base register */ |
| #define ICGSICR (WORD)0x43 /* ICGS interrupt control register */ |
| #define ICGSVBR (WORD)0x4f /* ICGS vector base register */ |
| #define ICMSICR (WORD)0x47 /* ICMS interrupt control register */ |
| #define ICMSVBR (WORD)0x53 /* ICMS vector base register */ |
| #define EGICR (WORD)0x4b /* Error group interrupt control register */ |
| #define EGIVBR (WORD)0x5b /* Error group interrupt vector base rg */ |
| #define ICSR (WORD)0x5f /* Interprozessor communication switch rg */ |
| #define ICR0 (WORD)0x63 |
| #define ICR1 (WORD)0x67 |
| #define ICR2 (WORD)0x6b |
| #define ICR3 (WORD)0x6f |
| #define ICR4 (WORD)0x73 |
| #define ICR5 (WORD)0x77 |
| #define ICR6 (WORD)0x7b |
| #define ICR7 (WORD)0x7f |
| #define VIICR (WORD)0x03 /* VMEbus Interrupter Interrupt Control */ |
| #define VIRSR (WORD)0x83 /* VMEbus interrupt request status reg */ |
| #define VIVR1 (WORD)0x87 /* VMEbus interrupt vector register .. */ |
| #define VIVR2 (WORD)0x8b |
| #define VIVR3 (WORD)0x8f |
| #define VIVR4 (WORD)0x93 |
| #define VIVR5 (WORD)0x97 |
| #define VIVR6 (WORD)0x9b |
| #define VIVR7 (WORD)0x9f |
| #define TTR (WORD)0xa3 /* transfer timeout register */ |
| #define LTR (WORD)0xa7 /* local timing register */ |
| #define ICR (WORD)0xaf /* interface configuration register */ |
| #define ARCR (WORD)0xb3 /* arbiter/requester configuration register*/ |
| #define AMSR (WORD)0xb7 /* address modifier source register */ |
| #define BESR (WORD)0xbb /* bus error source register */ |
| #define DSICR (WORD)0x23 /* DMA status interrupt control register */ |
| #define DSR (WORD)0xbf /* DMA status register */ |
| #define SSCR00 (WORD)0xc3 /* slave select 0 control register 0 */ |
| #define SSCR01 (WORD)0xc7 /* slave select 0 control register 1 */ |
| #define SSCR10 (WORD)0xcb /* slave select 1 control register 0 */ |
| #define SSCR11 (WORD)0xcf /* slave select 1 control register 1 */ |
| #define RCR (WORD)0xd3 /* release control register */ |
| #define BTDR (WORD)0xab /* block transfer definition register */ |
| #define BTCR (WORD)0xd7 /* block transfer control register */ |
| #define BTLR0 (WORD)0xdb /* block transfer length register 0 */ |
| #define BTLR1 (WORD)0xdf /* block transfer length register 1 */ |
| #define SRR (WORD)0xe3 /* system reset register */ |
| #endif |
| //------------------------------------------------------------------------------------------- |
| //------------------------------------------------------------------------------------------- |
| //------------------------------------------------------------------------------------------- |
| /drivers/wiener_pcivme_dll/Klist.c |
|---|
| 0,0 → 1,337 |
| //------------------------------------------------------------------------------------------- |
| // klist.c - parts to maintain a doubly linked list (org microsoft) |
| // |
| // Please announce changes and hints to ARW Elektronik |
| // |
| // |
| // $Log: Klist.c,v $ |
| // Revision 1.2 2004/07/24 07:47:46 klaus |
| // revised, removed wrong license terms |
| // |
| // Revision 1.1.1.1 2003/11/14 23:17:18 klaus |
| // First put into repository |
| // |
| // Revision 1.2 2002/10/27 17:05:33 klaus |
| // CVS log added, file addressing bug > 2 Gbtye circumvent |
| // |
| // what who when |
| // first steps AR 07.11.1999 |
| // |
| //------------------------------------------------------------------------------------------- |
| // INCLUDES |
| // |
| #include <memory.h> |
| #include <windows.h> |
| #include <Klist.h> |
| //------------------------------------------------------------------------------------------- |
| // DEFINES |
| // |
| #define memcpy memcpy |
| #define BLOCKSIZE 0x4000 |
| //------------------------------------------------------------------------------------------- |
| // TYPEDEFS |
| // |
| typedef struct |
| { |
| HANDLE hMem; // memory handle for this block |
| int iInUse; // number of allocations taken out of it. 0 => free it |
| int iNext; // next byte to use |
| char chData[BLOCKSIZE]; |
| } BLOCK, FAR *PBLOCK; |
| /* The following definition tells the truth about what an ITEM is. The |
| | header file says only that there's a structure with the tag item_tag and |
| | that a LIST is a pointer to one. Here we spell out what that structure |
| | is (and a LIST is still a pointer to one). A PLIST is defined as a |
| | pointer to one of those, but is only really used because the C |
| | parameter mechanism demands an extra level of indirection for a |
| | parameter that can be updated. (Modula-2 VAR parameter). |
| */ |
| typedef struct item_tag |
| { |
| struct item_tag FAR *pitNext; /* to next in circular list */ |
| struct item_tag FAR *pitPrev; /* to prev in circular list */ |
| PBLOCK pBlock; /* to memory block */ |
| BOOL bAnchor; /* TRUE iff an anchor block */ |
| BOOL bOK; /* true unless a list op has failed */ |
| int iLen; /* length of data only */ |
| char Data[1]; /* the caller's data. The '1' is a lie */ |
| } ITEM; |
| /* For an anchor block, only the fields pitNext thru bAnchor are allocated. |
| | For a normal list element, Data may well be longer than 1 byte. |
| | The bOK flag is to support a style of programming where several |
| | successive operations can be done without having to check the return |
| | code at each stage. At the end, the list can be examined to see if |
| | the data in it is valid or if it has been made invalid by the failure |
| | of any of the previous operations. Certain operations may result in |
| | having no list at all if they fail (e.g. create) and for these, you'd |
| | better check the result at once! |
| | ??? Some of this screed belongs in the header!!! |
| */ |
| //------------------------------------------------------------------------------------------- |
| // LOCALS |
| // |
| static CRITICAL_SECTION CritSec; /* to protect pCurrent */ |
| #define List_Enter_Crit(x) EnterCriticalSection(x) |
| #define List_Leave_Crit(x) LeaveCriticalSection(x) |
| static PBLOCK pCurrent = NULL; // block currently in use |
| // must always be either NULL or valid |
| static int iAnchorSize; /* Size of anchor block (no data, no dummy) */ |
| static int iHeaderSize; /* Size of data block not counting Data |
| and offset from cursor back to item. */ |
| static BOOL bInited = FALSE; /* TRUE <=> iAnchorSize and iHeaderSize are OK*/ |
| #define MOVEBACK(Curs) \ |
| { Curs = ((char FAR *)Curs-iHeaderSize); } /*move from Data to pitNext*/ |
| //------------------------------------------------------------------------------------------- |
| // EXTERNALS |
| // |
| //------------------------------------------------------------------------------------------- |
| // GLOBALS |
| // |
| //------------------------------------------------------------------------------------------- |
| // FUNCTIONS |
| // |
| /* Allocate storage for List elements. n.b. after a call to this |
| you MUST record the value of pCurrent as you need to hand that in |
| to Free. You don't hand in the value of the actual storage. |
| See screed above. |
| This function Enters the critical section. The caller must Leave it. |
| */ |
| static LPVOID Alloc(int size) |
| { |
| HANDLE hMem; |
| LPVOID pRet; |
| List_Enter_Crit(&CritSec); |
| if ((pCurrent==NULL)||(pCurrent->iNext+size>BLOCKSIZE+1)) |
| { |
| hMem = GlobalAlloc(GMEM_MOVEABLE|GMEM_SHARE,(DWORD)(sizeof(BLOCK))); |
| if (hMem==NULL) |
| { |
| pCurrent = NULL; |
| OutputDebugString("GlobalAlloc failed!!\n"); |
| return NULL; |
| } |
| pCurrent = (PBLOCK)GlobalLock(hMem); |
| if (pCurrent==NULL) |
| { |
| OutputDebugString("GlobalLock failed!!\n"); |
| return NULL; |
| } |
| pCurrent->hMem = hMem; |
| pCurrent->iInUse = 0; |
| pCurrent->iNext = 0; |
| } |
| pRet = &(pCurrent->chData[pCurrent->iNext]); |
| ++(pCurrent->iInUse); |
| pCurrent->iNext += size; |
| // ensure that the data is aligned 4 byte |
| pCurrent->iNext += 3; |
| pCurrent->iNext -= pCurrent->iNext % 4; |
| return pRet; |
| } |
| static void Free(PBLOCK pBlock, LPVOID p) |
| { |
| HANDLE hMem; |
| List_Enter_Crit(&CritSec); |
| --pBlock->iInUse; |
| if (pBlock->iInUse<=0) |
| { |
| if (pBlock->iInUse<0) |
| { |
| // don't know what to do with it |
| } |
| hMem = pBlock->hMem; |
| GlobalUnlock(hMem); |
| GlobalFree(hMem); |
| if (pCurrent==pBlock) pCurrent = NULL; /* defend the invariant */ |
| } |
| List_Leave_Crit(&CritSec); |
| } |
| /*================================================================== |
| || Lists are circular, doubly linked with an anchor block which holds |
| || pointers to both ends. Every block has a flag which shows whether |
| || it's an anchor or not. |
| || |
| || Empty list: |
| || |
| || ------------- |
| || | | |
| || | Anchor | |
| || v ------- | |
| || Ul--->| Next--+--| |
| || |-------| | |
| || | Prev--+-- |
| || ------- |
| || |
| || One entry list: |
| || |
| || ------------------------------------ |
| || | | |
| || | Anchor | |
| || v ------- ------ | |
| || Ul--->| Next--+------------->| Next-+---| |
| || |-------| | |------| | |
| || | Prev--+---- | Prev-+--- |
| || ------- |------| |
| || | Len | |
| || |------| |
| || | Data | |
| || ------ |
| || Two entry list: |
| || |
| || ------------------------------------------------- |
| || | --------------- --------------- | |
| || || | | | | |
| || || Anchor | | | | |
| || vv -------- | v ------ | ------ | |
| || Ul--->| Next--+-----+----->| Next-+----+-->| Next-+-- |
| || |-------| | |------| | | |------| |
| || | Prev--+-- ------+-Prev | | ---+-Prev | |
| || ------- | |------| | |------| |
| || | | Len | | | Len | |
| || | |------| | |------|<----Cursor |
| || | | Data | | | Data | |
| || | ------ | ------ |
| || | | |
| || ------------------- |
| || |
| || etc. |
| || |
| || Note that an external cursor (i.e one which is seen by the caller) |
| || points to the Data field, not to the start of the structure. |
| || This allows easy access to the data by the user at the cost of a |
| || slightly slower traverse. |
| || Within this module, we may sometimes traverse a list with a cursor |
| || that points to the start of an item. This is called an item cursor. |
| È===================================================================*/ |
| /*------------------------------------------------------------------ |
| | Set iAnchorSize and iHeaderSize. Implementation independent! |
| -------------------------------------------------------------------*/ |
| void APIENTRY List_Init(void) |
| { |
| LIST P; |
| P = (LIST)&P; /* really any old address will do */ |
| iAnchorSize = (char FAR *)&(P->iLen) - (char FAR *)&(P->pitNext); |
| iHeaderSize = (char FAR *)&(P->Data) - (char FAR *)&(P->pitNext); |
| InitializeCriticalSection(&CritSec); |
| /* assumes layout in storage is linear */ |
| } |
| /*------------------------------------------------------------------ |
| | Create a list. It will be initially empty |
| -------------------------------------------------------------------*/ |
| LIST APIENTRY List_Create(void) |
| { |
| LIST lst; |
| if (!bInited) {List_Init(); } /* prevent some silly errors */ |
| lst = Alloc(iAnchorSize); |
| if (lst==NULL) { return NULL; } |
| lst->pBlock = pCurrent; |
| List_Leave_Crit(&CritSec); |
| lst->bOK = TRUE; |
| lst->pitNext = lst; |
| lst->pitPrev = lst; |
| lst->bAnchor = TRUE; |
| /* no length field set in an anchor block */ |
| return lst; |
| } |
| /*------------------------------------------------------------------ |
| | Destroy *plst. It does not need to be empty first |
| -------------------------------------------------------------------*/ |
| void APIENTRY List_Destroy(PLIST plst) |
| { |
| LIST pitP; /* item cursor on * plst */ |
| LIST pitQ; /* item cursor runs one step ahead of pitQ */ |
| if (plst==NULL) |
| return; |
| /* There is at least an anchor block to destroy */ |
| pitP = *plst; |
| do |
| { |
| pitQ = pitP->pitNext; |
| Free(pitP->pBlock, pitP); |
| pitP = pitQ; |
| }while(pitP != *plst); |
| *plst = NULL; |
| } |
| /*------------------------------------------------------------------ |
| | Return the address of the place for Len bytes of data in a new |
| | item at the start of lst |
| -------------------------------------------------------------------*/ |
| LPVOID APIENTRY List_NewFirst(LIST lst, UINT uLen) |
| { |
| LIST pit; |
| if (lst==NULL) |
| return NULL; |
| pit = Alloc(iHeaderSize+uLen); |
| if (pit==NULL) { lst->bOK = FALSE; return NULL; } |
| pit->pBlock = pCurrent; |
| List_Leave_Crit(&CritSec); |
| pit->iLen = uLen; |
| pit->pitPrev = lst; |
| pit->pitNext = lst->pitNext; |
| lst->pitNext->pitPrev = pit; /* for empty list that set lst->pitPrev */ |
| lst->pitNext = pit; |
| pit->bAnchor = FALSE; |
| return (char FAR *)&(pit->Data); |
| } |
| /*------------------------------------------------------------------ |
| | Delete the item that Curs identifies. |
| | This will be only a few (maybe as little as 3) machine instructions |
| | quicker than DeleteForwards or DeleteBackwards but leaves Curs dangling. |
| | It is therefore NOT usually to be preferred. |
| | It may be useful when you have a function which returns an LPVOID |
| | since the argument does not need to be a variable. |
| | Trivial example: List_Delete(List_First(L)); |
| -------------------------------------------------------------------*/ |
| void APIENTRY List_Delete(LPVOID Curs) |
| { |
| LIST pit; |
| if(Curs==NULL) |
| return; |
| MOVEBACK(Curs) |
| pit = (LIST)Curs; |
| pit->pitNext->pitPrev = pit->pitPrev; |
| pit->pitPrev->pitNext = pit->pitNext; |
| Free(pit->pBlock, pit); |
| } |
| /*--------------------------------------------------------------------- |
| | Return TRUE if and only if lst is empty |
| ----------------------------------------------------------------------*/ |
| BOOL APIENTRY List_IsEmpty(LIST lst) |
| { |
| if (lst==NULL) |
| return TRUE; /* well it's sort of true isn't it? */ |
| return lst->pitNext ==lst; |
| } |
| /drivers/wiener_pcivme_dll/pcivme.h |
|---|
| 0,0 → 1,289 |
| #ifndef __PCIVME_H__ |
| #define __PCIVME_H__ |
| //------------------------------------------------------------------------- |
| // WINNT driver for PCIVME interface from ARW Elektronik, Germany --------- |
| // IO definitions and common data structures between application and driver |
| // |
| // (c) 1999-2004 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 |
| // |
| // $Log: pcivme.h,v $ |
| // Revision 1.3 2004/07/24 07:07:26 klaus |
| // Update copyright to 2004 |
| // |
| // Revision 1.2 2003/11/15 19:12:50 klaus |
| // Update copyright to 2003 |
| // |
| // Revision 1.1.1.1 2003/11/14 23:16:33 klaus |
| // First put into repository |
| // |
| // Revision 1.4 2002/10/27 17:02:30 klaus |
| // File addressing bug > 2 Gbtye circumvent |
| // |
| // Revision 1.3 2002/10/27 16:17:48 klaus |
| // Typing bug fixed caused at log addition |
| // |
| // Revision 1.2 2002/10/27 16:11:02 klaus |
| // Added CVS log into header |
| // |
| // what who when |
| // started AR 15.06.99 |
| // |
| //------------------------------------------------------------------------- |
| // 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 |
| // |
| // to get a compatible view to WIN95 driver |
| #define USER_CONTROL_CODE(x) (0x800 + x) |
| // initialise a dedicated VMEMM hardware |
| #define PCIVME_INIT_HARDWARE CTL_CODE(\ |
| FILE_DEVICE_UNKNOWN,\ |
| USER_CONTROL_CODE(0),\ |
| METHOD_BUFFERED,\ |
| FILE_ANY_ACCESS) |
| // de-initialise a dedicated VMEMM hardware |
| #define PCIVME_DEINIT_HARDWARE CTL_CODE(\ |
| FILE_DEVICE_UNKNOWN,\ |
| USER_CONTROL_CODE(1),\ |
| METHOD_BUFFERED,\ |
| FILE_ANY_ACCESS) |
| // get a static status info from a dedicted VMEMM+PCIADA hardware |
| #define PCIVME_GET_STATIC_STATUS CTL_CODE(\ |
| FILE_DEVICE_UNKNOWN,\ |
| USER_CONTROL_CODE(4),\ |
| METHOD_BUFFERED,\ |
| FILE_ANY_ACCESS) |
| // get dynamically changing status from PCIADA+VMEMM |
| #define PCIVME_GET_DYNAMIC_STATUS CTL_CODE(\ |
| FILE_DEVICE_UNKNOWN,\ |
| USER_CONTROL_CODE(5),\ |
| METHOD_BUFFERED,\ |
| FILE_ANY_ACCESS) |
| // read a vector in case of interrupt from VMEMM or PCIADA |
| #define PCIVME_READ_VECTOR CTL_CODE(\ |
| FILE_DEVICE_UNKNOWN,\ |
| USER_CONTROL_CODE(6),\ |
| METHOD_BUFFERED,\ |
| FILE_ANY_ACCESS) |
| // access VIC68A registers direct |
| #define PCIVME_ACCESS_VIC68A CTL_CODE(\ |
| FILE_DEVICE_UNKNOWN,\ |
| USER_CONTROL_CODE(7),\ |
| METHOD_BUFFERED,\ |
| FILE_ANY_ACCESS) |
| // enable or disable interrupts from user space |
| #define PCIVME_CONTROL_INTERRUPTS CTL_CODE(\ |
| FILE_DEVICE_UNKNOWN,\ |
| USER_CONTROL_CODE(9),\ |
| METHOD_BUFFERED,\ |
| FILE_ANY_ACCESS) |
| // generate a (undivisible) test-and-set instruction |
| #define PCIVME_TAS CTL_CODE(\ |
| FILE_DEVICE_UNKNOWN,\ |
| USER_CONTROL_CODE(10),\ |
| METHOD_BUFFERED,\ |
| FILE_ANY_ACCESS) |
| // generate a reset on VME BUS for a dedicated VMEMM interface |
| #define PCIVME_RESET CTL_CODE(\ |
| FILE_DEVICE_UNKNOWN,\ |
| USER_CONTROL_CODE(12),\ |
| METHOD_BUFFERED,\ |
| FILE_ANY_ACCESS) |
| // set the access parameter for this file (vmemm) |
| #define PCIVME_SET_ACCESS_PARA CTL_CODE(\ |
| FILE_DEVICE_UNKNOWN,\ |
| USER_CONTROL_CODE(13),\ |
| METHOD_BUFFERED,\ |
| FILE_ANY_ACCESS) |
| // my last usefull control code - change each time you add a ctl_code |
| #define PCIVME_LAST_CTL_CODE PCIVME_SET_ACCESS_PARA |
| // to make standard entries for not compatible WIN95 call codes |
| #define PCIVME_INCOMPATIBLE CTL_CODE(\ |
| FILE_DEVICE_UNKNOWN,\ |
| USER_CONTROL_CODE(255),\ |
| METHOD_BUFFERED,\ |
| FILE_ANY_ACCESS) |
| // to get a compatible view to WIN95 driver |
| #define VPCIVMED_INIT_HARDWARE PCIVME_INIT_HARDWARE |
| #define VPCIVMED_DEINIT_HARDWARE PCIVME_DEINIT_HARDWARE |
| #define VPCIVMED_ATTACH_WINDOW PCIVME_INCOMPATIBLE // no compatibility! |
| #define VPCIVMED_DETACH_WINDOW PCIVME_INCOMPATIBLE // no compatibility! |
| #define VPCIVMED_GET_STATIC_STATUS PCIVME_GET_STATIC_STATUS |
| #define VPCIVMED_GET_DYNAMIC_STATUS PCIVME_GET_DYNAMIC_STATUS |
| #define VPCIVMED_READ_VECTOR PCIVME_READ_VECTOR |
| #define VPCIVMED_ACCESS_VIC68A PCIVME_ACCESS_VIC68A |
| #define VPCIVMED_CONTROL_INTERRUPTS PCIVME_CONTROL_INTERRUPTS |
| #define VPCIVMED_TAS PCIVME_TAS |
| #define VPCIVMED_GET_PCIADA_STATUS PCIVME_GET_PCIADA_STATUS |
| #define VPCIVMED_RESET PCIVME_RESET |
| // switches for PCIVME_(DE)INIT_HARDWARE ------------------------ |
| #define LCR (UCHAR)0 // destination is LCR register |
| #define IFR (UCHAR)1 // destination is VME-Interface register |
| #define VIC (UCHAR)2 // destination is VIC68A register |
| #define STOP (UCHAR)255 // this command stops the init machine |
| #define BYTE_ACCESS (UCHAR)1 // write byte wise |
| #define WORD_ACCESS (UCHAR)2 // word |
| #define LONG_ACCESS (UCHAR)4 // long |
| // switches for PCIVME_ACCESS_VIC68A -------------------------- |
| #define VIC68A_READ 0 // read only access |
| #define VIC68A_WRITE 1 // write and read back access |
| #define VIC68A_OR 2 // read, bitwise 'or' content and read back access |
| #define VIC68A_AND 3 // read, bitwise 'and' content and read back access |
| #define VIC68A_WRITE_ONLY 4 // do not read back after write |
| // switches for the PCIVME_RESET ------------------------------ |
| #define VME_RESET_CMD 0 // raise a VME reset only |
| #define LOCAL_RESET_CMD 1 // raise a local reset only |
| #define GLOBAL_RESET_CMD 2 // raise a global reset |
| #define POLL_RESET_CMD 3 // ask if reset is finished |
| #define BOGUSADDRESS 0xFFFFFFFF // compatibilty to WIN95 |
| #ifndef PHYSICAL_ADDRESS |
| #define PHYSICAL_ADDRESS LARGE_INTEGER |
| #endif |
| //------------------------------------------------------------------------- |
| // TYPEDEFS |
| // |
| typedef struct // one command element to initialize interface or deinitialize |
| { |
| UCHAR range; // 0 = lcr, 1 = vme-interface, -1 = stop, default = vme-if |
| UCHAR type; // 1 = byte access, 2 = word access, 4 = dword access, default byte |
| USHORT offset; // offset into interface address range for initialisation |
| ULONG value; // value to initialize |
| } PCIVME_INIT_ELEMENT; |
| typedef struct |
| { |
| ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
| PCIVME_INIT_ELEMENT sVie[8]; // at least one zero element must be the last |
| } PCIVME_INIT_COMMAND; |
| typedef struct |
| { |
| ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
| UCHAR bAddressModifier; // set the current modifier |
| UCHAR bAccessType; // set the current access type (1,2,4) |
| UCHAR bIncrement; // set the current byte increment count |
| ULONG dwAccessBase; // base address of seek operation (extended modifiers only, else must = 0) |
| } PCIVME_ACCESS_COMMAND; |
| typedef struct |
| { |
| ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
| USHORT wRegisterAddress; // address offset of vic68a register |
| USHORT wAccessMode; // read, write, or, and |
| UCHAR bContent; // content to write, and, or |
| } PCIVME_VIC68A_ACTION; |
| // includes static information about driver parameters ------ |
| typedef struct |
| { |
| ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
| ULONG dwLinkCount; // how often this interface is requested |
| USHORT wNumMemWindows; // aus der aktuellen konfiguration |
| USHORT wNumIOPorts; |
| USHORT wNumIRQs; |
| USHORT wNumDMAs; |
| USHORT wModuleType; // von der angeschlossenen hardware gelesen |
| USHORT wFPGAVersion; |
| USHORT wModuleNumber; |
| USHORT wWordMode; |
| USHORT wSysControl; // if the associated VMEMM has slot 1 function |
| USHORT wConnected; // is the VMEMM connected (obsolete sometimes) |
| PHYSICAL_ADDRESS pvLcr; // physikalische adresse des lcr |
| PHYSICAL_ADDRESS pvIfr; // physikalische adresse des interfaces ohne vme |
| ULONG dwDriverVersion; // highWord.lowWord |
| ULONG dwDriverVariant; // show customized variants here |
| } PCIVME_STATIC_STATUS; |
| typedef struct |
| { |
| ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
| USHORT wVMEMM_connected; // status: VMEMM is connected and powered |
| USHORT wVMEMM_enable; // status: VMEMM access is enabled |
| USHORT wPCIADAIrq; // status: PCIADA timeout IRQ pending |
| USHORT wVMEMMIrq; // status: VMEMM IRQ pending |
| } PCIVME_DYNAMIC_STATUS; |
| typedef struct |
| { |
| ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
| ULONG dwAddress; // tas to address |
| USHORT wModifier; // VME address modifier for this window |
| UCHAR bContent; // byte content to store and get back |
| } PCIVME_TAS_STRUCT; |
| typedef struct |
| { |
| ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
| USHORT wCommand; // the appropriate reset command |
| } PCIVME_RESET_COMMAND; |
| typedef struct |
| { |
| ULONG dwInterface; // here dummy 'cause of compatibility to WIN95 |
| USHORT wResult; |
| } PCIVME_RESET_RESULT; // polling result: in progress if (wResult != 0) |
| typedef struct |
| { |
| ULONG dwInterface; // here dummy 'cause of compatibility to WIN95.. |
| USHORT wEnable; // a 1 enables the queue filling, a 0 disables |
| } PCIVME_IRQ_CONTROL; |
| typedef struct // to request vectors from a interface |
| { |
| ULONG dwInterface; // here dummy 'cause of compatibility to WIN95.. |
| USHORT wRequestCount; // maximum number of vectors to requests |
| BOOLEAN bPoll; // no blocking allowed - poll always |
| } PCIVME_VECTOR_REQUEST; |
| typedef struct // the response to the above request |
| { |
| ULONG dwInterface; // here dummy 'cause of compatibility to WIN95.. |
| USHORT wPendingCount; // represents the number of vectors pending |
| USHORT wCount; // actual delivered count of vectors |
| BOOLEAN bOverflow; // there was a irq overflow @ this channel |
| UCHAR bStatusID; // base of following vector array |
| } PCIVME_VECTOR_RESPONSE; |
| #endif // __PCIVME_H__ |
| /drivers/wiener_pcivme_dll/pcivme_ni.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 |
| /drivers/wiener_pcivme_dll/pcivme_ni.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 |
| /drivers/wiener_pcivme_dll/Klist.h |
|---|
| 0,0 → 1,52 |
| #ifndef __KLIST_H__ |
| #define __KLIST_H__ |
| //------------------------------------------------------------------------------------------- |
| // klist.h - header parts to maintain a doubly linked list (org microsoft) |
| // |
| // Please announce changes and hints to ARW Elektronik |
| // |
| // |
| // $Log: Klist.h,v $ |
| // Revision 1.2 2004/07/24 07:47:46 klaus |
| // revised, removed wrong license terms |
| // |
| // |
| // what who when |
| // first steps AR 07.11.1999 |
| // |
| typedef struct item_tag FAR * LIST; |
| typedef LIST FAR * PLIST; |
| void APIENTRY List_Init(void); |
| /* MUST BE CALLED BEFORE ANY OF THE OTHER FUNCTIONS. */ |
| LIST APIENTRY List_Create(void); |
| /* Create a list. It will be initially empty */ |
| void APIENTRY List_Destroy(PLIST plst); |
| /* Destroy *plst. It does not need to be empty first. |
| | All storage directly in the list wil be freed. |
| */ |
| LPVOID APIENTRY List_NewFirst(LIST lst, UINT uLen); |
| /* Return the address of the place for Len bytes of data in a new |
| | item at the start of *plst |
| */ |
| void APIENTRY List_Delete(LPVOID Curs); |
| /*------------------------------------------------------------------ |
| | Delete the item that Curs identifies. |
| | This will be only a few (maybe as little as 3) machine instructions |
| | quicker than DeleteAndNext or DeleteAndPrev but leaves Curs dangling. |
| | It is therefore NOT usually to be preferred. |
| | It may be useful when you have a function which returns an LPVOID |
| | since the argument does not need to be a variable. |
| | Trivial example: List_Delete(List_First(L)); |
| -------------------------------------------------------------------*/ |
| BOOL APIENTRY List_IsEmpty(LIST lst); |
| /* Return TRUE if and only if lst is empty */ |
| #endif /* __KLIST_H__ */ |
| /drivers/wiener_pcivme_dll/os_info.c |
|---|
| 0,0 → 1,116 |
| //------------------------------------------------------------------------------------------- |
| // os_info.c - request the OS type and version |
| // |
| // (c) 1999-2004 ARW Elektronik, Germany |
| // |
| // 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 |
| // |
| // |
| // $Log: os_info.c,v $ |
| // Revision 1.2 2004/07/24 07:47:00 klaus |
| // Update copyright to 2004 |
| // |
| // Revision 1.1.1.1 2003/11/14 23:17:18 klaus |
| // First put into repository |
| // |
| // Revision 1.2 2002/10/27 17:05:33 klaus |
| // CVS log added, file addressing bug > 2 Gbtye circumvent |
| // |
| // what who when |
| // first steps AR 07.11.1999 |
| // small change in OS version recognition AR 21.05.2002 |
| // |
| //------------------------------------------------------------------------------------------- |
| // INCLUDES |
| // |
| #include <windows.h> |
| //------------------------------------------------------------------------------------------- |
| // DEFINES |
| // |
| //------------------------------------------------------------------------------------------- |
| // TYPEDEFS |
| // |
| //------------------------------------------------------------------------------------------- |
| // LOCALS |
| // |
| //------------------------------------------------------------------------------------------- |
| // EXTERNALS |
| // |
| //------------------------------------------------------------------------------------------- |
| // GLOBALS |
| // |
| //------------------------------------------------------------------------------------------- |
| // FUNCTIONS |
| // |
| BOOLEAN IsWindowsNT(void) |
| { |
| OSVERSIONINFO osvi; |
| osvi.dwOSVersionInfoSize = sizeof(osvi); |
| if (!GetVersionEx(&osvi)) return FALSE; // can't get info |
| if (osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) |
| { |
| return TRUE; |
| } |
| else |
| return FALSE; |
| } |
| BOOLEAN IsWindows95(void) |
| { |
| OSVERSIONINFO osvi; |
| osvi.dwOSVersionInfoSize = sizeof(osvi); |
| if (!GetVersionEx(&osvi)) return FALSE; // can't get info |
| if (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) |
| { |
| if ((osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion == 0)) |
| return TRUE; |
| else |
| return FALSE; |
| } |
| else |
| return FALSE; |
| } |
| BOOLEAN IsWindows98(void) |
| { |
| OSVERSIONINFO osvi; |
| osvi.dwOSVersionInfoSize = sizeof(osvi); |
| if (!GetVersionEx(&osvi)) return FALSE; // can't get info |
| if (osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) |
| { |
| if ((osvi.dwMajorVersion > 4) || |
| ((osvi.dwMajorVersion == 4) && (osvi.dwMinorVersion > 0))) |
| return TRUE; |
| else |
| return FALSE; |
| } |
| else |
| return FALSE; |
| } |
| /* |
| BOOLEAN IsWindowsBlaBla(void) |
| { |
| } |
| */ |
| /drivers/wiener_pcivme_dll/Vme.h |
|---|
| 0,0 → 1,57 |
| #ifndef __VME_H__ |
| #define __VME_H__ |
| //------------------------------------------------------------------------------------------ |
| // vme.h - some constants about VME address modifiers in a more readable kind |
| // |
| // (c) 1999-2004 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 |
| // |
| // |
| // $Log: Vme.h,v $ |
| // Revision 1.3 2004/07/24 07:07:26 klaus |
| // Update copyright to 2004 |
| // |
| // Revision 1.2 2003/11/15 19:12:51 klaus |
| // Update copyright to 2003 |
| // |
| // Revision 1.1.1.1 2003/11/14 23:16:33 klaus |
| // First put into repository |
| // |
| // Revision 1.3 2002/10/27 16:17:48 klaus |
| // Typing bug fixed caused at log addition |
| // |
| // Revision 1.2 2002/10/27 16:11:03 klaus |
| // Added CVS log into header |
| // |
| // what who when |
| // finished first release to use with the PCIVME interface of ARW AR 22.03.1999 |
| // |
| typedef WORD ADDRESS_MODIFIER; |
| #define Std_Sup_Data (ADDRESS_MODIFIER)0x3d |
| #define Std_Sup_Prog (ADDRESS_MODIFIER)0x3e |
| #define Std_NoPriv_Data (ADDRESS_MODIFIER)0x39 |
| #define Std_NoPriv_Prog (ADDRESS_MODIFIER)0x3a |
| #define Short_Sup (ADDRESS_MODIFIER)0x2d |
| #define Short_NoPriv (ADDRESS_MODIFIER)0x29 |
| #define Ext_Sup_Data (ADDRESS_MODIFIER)0x0d |
| #define Ext_Sup_Prog (ADDRESS_MODIFIER)0x0e |
| #define Ext_NoPriv_Data (ADDRESS_MODIFIER)0x09 |
| #define Ext_NoPriv_Prog (ADDRESS_MODIFIER)0x0a |
| #endif |
| //------------------------------------------------------------------------------------------- |
| //------------------------------------------------------------------------------------------- |
| //------------------------------------------------------------------------------------------- |