2010/8/22:本掲示板は閲覧専用です。データが一部破損しておりますがご了承ください。
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃ホーム  
1066 / 2351 ←次へ | 前へ→

【1300】Re:倍率変更のCOMBOX並び
←back ↑menu ↑top forward→
 T4  - 04/11/21(日) 13:40 -

引用なし
パスワード
   >ご存知かとは思いますが、K7の倍率は不規則に並んでいるのではなく、倍率テーブルをそのままの順番で表示しております。
>
>この部分を変更してしまうと、コマンドラインオプションの FID, VID 部分も相当見直さなければならないためご了承ください。
>
>ちなみに、C3 は複数の FID が同じ倍率に割り振られていたり、リビジョンによって FID と倍率のマッピングが変わっていたりします。

返答ありがとうございます。上記ご指摘の内容すべて承知しております。
倍率変更の順不同は実際非常に不便なので、自分で直して使ってましたが
バージョン変更の度に作りなすのも手間なので、
手直した古いバージョンを 暫く使っておりました。
本家の作者の方に対応頂ければと思い お願いして見た次第です。

また暫くは、自前で手直した古いバージョンで行かせてもらいます。

---
話は変わりますが、ドライバロード部分で以下の様なコーディングすると、
同一実行ファイル(32Bit版)のみで32/64Bitの両環境での動作ができます。

(SysInfoX64.sys/SysInfoX.sysを環境に応じて切り替えるだけです。
 厳密には SysInfoX64.sysコーディングの際 ポインタサイズに十分注意する
 必要があると思いますが、試した限りは大丈夫のようです。)

----
横文字数の制限で、改行表示されているかも知れません。

"Pcidll.c"

#include <stdio.h>
#include <windows.h>
#include <winioctl.h>
#include <stddef.h>
#include <assert.h>

#include "Pcidebug.h"
#include "driverload.h"

int GetFileInternalName(const char *file,char *name);

#include "resource.h"

int initialize(HMODULE ghInst);
int initialize_vxd(HMODULE ghInst);
void close(void);

extern void init_isr(void);

char DRIVERID[MAX_PATH];        //    "CrystalSysInfo"
char DRIVERFILENAME[MAX_PATH];    //    "SysInfo.sys" or SysInfoX64.sys
char DRIVERNAME[MAX_PATH];        //    "CrystalSysInfo"
#define DRIVERFILENAME95    "SysInfo.vxd"

HANDLE handle = NULL;
int drivertype = 0;

// DLLの状態を保存する変数
static DLLSTATUS status = DLLSTATUS_OTHERERROR;
//char DRIVERID[MAX_PATH];

//
// OSの種類を調べる。
//
// 戻り値    0: 取得できなかった
//            1: windows 3.1
//            2: windows 95
//            3: windows NT
//            4: windows NT x64
//            -1:その他

typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE hProcess,PBOOL Wow64Process);

BOOL IsWow64(VOID)
{
  BOOL bIsWow64 = FALSE;
    LPFN_ISWOW64PROCESS fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle("kernel32"),"IsWow64Process");

  if (NULL != fnIsWow64Process)
  {
    if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
    {
      // handle error
            bIsWow64 = FALSE;
    }
  }
  return bIsWow64;
}

//--------------------------

int oscheck()
{
    OSVERSIONINFO os;

    os.dwOSVersionInfoSize = sizeof(os);
    if(GetVersionEx(&os) == 0){
        assert(0);
        return 0;
    }
    switch(os.dwPlatformId){
    case VER_PLATFORM_WIN32s:
        return 1;
    case VER_PLATFORM_WIN32_WINDOWS:
        return 2;
    case VER_PLATFORM_WIN32_NT:
        return IsWow64() ? 4 : 3; //    Windowx XP 64Bit Edition or Windows NT
    default:
        return -1;
    }
}

///////////////////////////////////////////////////////////
//
// DLLがLOADされたときにデバイスドライバーを登録、開始する
// DLLがUNLOADされたときにデバイスドライバーを停止取り外す
//
///////////////////////////////////////////////////////////

BOOL APIENTRY DllMain(HMODULE hModule,
           DWORD ul_reason_for_call,
           LPVOID lpReserved)
{
    char str[MAX_PATH];
    char name[64];
    int ostype, res;

    drivertype = 0;
    ostype = oscheck();
    if(!(ostype >= 2 && ostype <= 4)) return TRUE;

    GetModuleFileName(NULL,str,MAX_PATH);
    GetFileInternalName(str,name);

    switch(ostype)
    {
    case 4:// NT x64
    case 3:// NT
        strcpy(DRIVERID,"CrystalSysInfo");
        strcpy(DRIVERFILENAME, (ostype==4) ? "SysInfoX64.sys" : "SysInfo.sys");
        strcpy(DRIVERNAME,"\\\\.\\CrystalSysInfo");
        drivertype |= SYS_DRIVER_USE;
        status = DLLSTATUS_NOERROR;
        break;

    case 2:// 95 98の場合
        drivertype |= VXD_DRIVER_USE;
        drivertype |= PCIBIOS_READY;
        drivertype |= LIB_IO_FUNC_USE;
        status = DLLSTATUS_NOERROR;
        break;

    default:// NT 95/98以外の場合
        status = DLLSTATUS_NOTSUPPORTEDPLATFORM;
        break;
    }

    if(status == DLLSTATUS_NOTSUPPORTEDPLATFORM) return TRUE;

  switch( ul_reason_for_call ) {
  case DLL_PROCESS_ATTACH:
        init_isr();
        if(drivertype & SYS_DRIVER_USE) {
            res = initialize(hModule);
        } else if(drivertype & VXD_DRIVER_USE) {
            res = initialize_vxd(hModule);
        } else {
            res = 3;
        }
        switch ( res ){
            case 0:
                status = DLLSTATUS_NOERROR;
                break;
            case 2:
                handle = NULL;
                status = DLLSTATUS_DRIVERNOTLOADED;
                break;
            default:
                handle = NULL;
                status = DLLSTATUS_OTHERERROR;
                break;
        }
        break;
    case DLL_THREAD_ATTACH:
        break;
  case DLL_THREAD_DETACH:
        break;
  case DLL_PROCESS_DETACH:
        close();
        status = DLLSTATUS_OTHERERROR;
        break;
  }
  return TRUE;
}

以下同一内容なので、略

258 hits

【1294】倍率変更のCOMBOX並び T4 04/11/20(土) 21:42
【1295】Re:倍率変更のCOMBOX並び Cappuccino 04/11/21(日) 0:37
【1296】Re:倍率変更のCOMBOX並び T4 04/11/21(日) 1:30
【1302】Re:倍率変更のCOMBOX並び Cappuccino 04/11/22(月) 2:41
【1298】Re:倍率変更のCOMBOX並び hiyohiyo 04/11/21(日) 8:24
【1300】Re:倍率変更のCOMBOX並び T4 04/11/21(日) 13:40
【1301】神降臨 hiyohiyo 04/11/22(月) 0:48
【1303】Re:神降臨 T4(To) 04/11/22(月) 3:46
【1304】Re:神降臨 hiyohiyo 04/11/22(月) 8:07
【1305】32bit.dll + 64bit.sys で幸せ hiyohiyo 04/11/25(木) 0:46
【1307】Re:32bit.dll + 64bit.sys で幸せ T4 04/11/26(金) 9:28
【1308】Re:32bit.dll + 64bit.sys で幸せ hiyohiyo 04/11/26(金) 19:12
【1331】Re:32bit.dll + 64bit.sys で幸せ T4 04/12/5(日) 12:52
【1332】Re:32bit.dll + 64bit.sys で幸せ ひよひよ Lv26 04/12/5(日) 13:12
【1333】Re:32bit.dll + 64bit.sys で幸せ Cappuccino 04/12/5(日) 16:36
【1334】Re:32bit.dll + 64bit.sys で幸せ ひよひよ Lv26 04/12/6(月) 0:55
【1335】Re:32bit.dll + 64bit.sys で幸せ T4 04/12/6(月) 3:07
【1336】Re:32bit.dll + 64bit.sys で幸せ ひよひよ Lv26 04/12/6(月) 8:24

1066 / 2351 ←次へ | 前へ→
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃ホーム  
ページ:  ┃  記事番号:   
51982
(SS)C-BOARD v3.8(とほほ改ver2.1) is Free