示例#1
0
        // 取網路卡序號, 網路線拔掉會找不到該網卡
        // function  GetAdapterNumber(var xCardNo: Integer; xAdapterList: TStringList= nil): String;
        // 取網路卡資訊, 1: 序號  其他的還沒寫, 網路線拔掉一樣可找到該網卡
        public static string GetAdapterData(byte Value, ref int xCardNo, bool xCanUseWireless, List <string> xAdapterList, string xMacAddress)
        {
            string           result;
            int              mSize;
            TIP_ADAPTER_INFO mpInfo;
            object           mPData;
            int              mErrorCode;
            int              mIndex;
            string           mAdapterNum;
            bool             mDoit;
            int              mCardNo;

            LibPOSFunc.Units.LibPOSFunc.WriteToAlertFile("取得網卡", "C:\\LOG");
            if (xCanUseWireless)
            {
                LibPOSFunc.Units.LibPOSFunc.WriteToAlertFile("允許在VISTA之後的OS下使用無線網卡", "C:\\LOG");
            }
            else
            {
                LibPOSFunc.Units.LibPOSFunc.WriteToAlertFile("不允許在VISTA之後的OS下使用無線網卡, 但非VISTA之後的OS不在此限", "C:\\LOG");
            }
            //@ Undeclared identifier(3): 'Win32MajorVersion'
            //@ Undeclared identifier(3): 'Win32MinorVersion'
            //@ Unsupported function or procedure: 'Format'
            LibPOSFunc.Units.LibPOSFunc.WriteToAlertFile("OS版本: " + Format("%d.%d", new object[] { Win32MajorVersion, Win32MinorVersion }), "C:\\LOG");
            mIndex = 0;
            result = "";
            //@ Unsupported function or procedure: 'Win32Platform'
            //@ Undeclared identifier(3): 'VER_PLATFORM_WIN32_NT'
            //@ Unsupported function or procedure: 'Win32Platform'
            //@ Undeclared identifier(3): 'VER_PLATFORM_WIN32_WINDOWS'
            mDoit = ((Win32Platform == VER_PLATFORM_WIN32_NT) || (Win32Platform == VER_PLATFORM_WIN32_WINDOWS));
            if (mDoit)
            {
                if ((xAdapterList != null))
                {
                    xAdapterList.Clear();
                }
                mSize = sizeof(mpInfo);
                try {
                    //@ Unsupported function or procedure: 'AllocMem'
                    mpInfo = AllocMem(mSize);
                    // 做一次初始化, 取得需要的 Size
                    mErrorCode = GetAdaptersInfo(mpInfo, mSize);
                    //@ Undeclared identifier(3): 'ERROR_BUFFER_OVERFLOW'
                    if ((mErrorCode == ERROR_BUFFER_OVERFLOW))
                    {
                        //@ Unsupported function or procedure: 'FreeMem'
                        FreeMem(mpInfo);
                        //@ Unsupported function or procedure: 'AllocMem'
                        mpInfo     = AllocMem(mSize);
                        mErrorCode = GetAdaptersInfo(mpInfo, mSize);
                    }
                    mPData = mpInfo;
                    //@ Undeclared identifier(3): 'NO_ERROR'
                    if (mErrorCode == NO_ERROR)
                    {
                        mCardNo = xCardNo;
                        // 用來做判斷用的, 拿掉的話, 就不能抓到全部的網卡了
                        while ((mPData != null))
                        {
                            TIP_ADAPTER_INFO _wvar1 = ((mPData) as TIP_ADAPTER_INFO);
                            //
                            //
                            // type TIP_ADAPTER_INFO = record
                            // struct _IP_ADAPTER_INFO* Next;
                            // DWORD ComboIndex;
                            // Char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
                            // char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
                            // UINT AddressLength;
                            // BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
                            // DWORD Index;
                            // UINT Type;
                            // UINT DhcpEnabled;
                            // PIP_ADDR_STRING CurrentIpAddress;
                            // IP_ADDR_STRING IpAddressList;
                            // IP_ADDR_STRING GatewayList;
                            // IP_ADDR_STRING DhcpServer;
                            // BOOL HaveWins;
                            // IP_ADDR_STRING PrimaryWinsServer;
                            // IP_ADDR_STRING SecondaryWinsServer;
                            // time_t LeaseObtained;
                            // time_t LeaseExpires;
                            // IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
                            // end;
                            LibPOSFunc.Units.LibPOSFunc.WriteToAlertFile("網卡號  : " + mAdapterNum, "C:\\LOG");
                            //@ Unsupported function or procedure: 'Format'
                            LibPOSFunc.Units.LibPOSFunc.WriteToAlertFile("網卡順序: " + Format("%d", new int[] { mIndex }), "C:\\LOG");
                            if ((mCardNo == -1) || (mCardNo > -1) && (mIndex == xCardNo))
                            {
                                //@ Unsupported function or procedure: 'format'
                                mAdapterNum = format("%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x", new byte[] { _wvar1.Address[1], _wvar1.Address[2], _wvar1.Address[3], _wvar1.Address[4], _wvar1.Address[5], _wvar1.Address[6] });
                                // 取網卡號
                                if ((Value & 1) == 1)
                                {
                                    // 檢查是否為符合的網卡
                                    // 20111124 Add By Yen For 排除非實體網卡
                                    // if CheckAdapterType(mAdapterNum) then
                                    if (CheckAdapterType(mAdapterNum, _wvar1.aType, xCanUseWireless))
                                    {
                                        LibPOSFunc.Units.LibPOSFunc.WriteToAlertFile("這是符合要求的網卡: " + mAdapterNum, "C:\\LOG");
                                        if (result == "")
                                        {
                                            result  = mAdapterNum;
                                            xCardNo = mIndex;
                                        }
                                        if ((xAdapterList != null))
                                        {
                                            xAdapterList.Add(mAdapterNum);
                                        }
                                    }
                                    // end of CheckAdapterType
                                    // end of if (Value and 1)= 1 then
                                }
                                else if ((Value & 2) == 2)
                                {
                                    // 取指定網卡使用的IP
                                    if (xMacAddress == mAdapterNum)
                                    {
                                        result = _wvar1.CurrentIPAddress.IpAddress;
                                    }
                                }
                            }
                            // end of if (xCardNo= -1) or (xCardNo> -1) and (mIndex= xCardNo) then
                            mPData = _wvar1.Next;
                            mIndex++;
                        }
                        // end of With
                        // end of if
                    }
                    else
                    {
                        GetAdapterData_Show_AdapterInfoError(mErrorCode);
                    }
                } finally {
                    //@ Unsupported function or procedure: 'FreeMem'
                    FreeMem(mpInfo);
                }
            }
            else
            {
                Yen_MessageDlg("OS 不符合! 無法執行本作業", "錯誤", System.Windows.Forms.MessageBoxIcon.Error, new System.Windows.Forms.MessageBoxButtons[] { System.Windows.Forms.MessageBoxButtons.OK });
            }
            return(result);
        }
示例#2
0
 public static extern int GetAdaptersInfo(TIP_ADAPTER_INFO pAdapterInfo, PULONG pOutBufLen);