예제 #1
0
        private ArrayList GetConnectedNetworks()
        {
            ArrayList networkConnections = new ArrayList();
            WSAQUERYSET qsRestrictions;
            Int32 dwControlFlags;
            Int32 valHandle = 0;

            qsRestrictions = new WSAQUERYSET();
            qsRestrictions.dwSize = 15 * 4 * 8;// Marshal.SizeOf(typeof(qsRestrictions));
            qsRestrictions.dwNameSpace = NS_BTH;// 0; //NS_ALL;
            dwControlFlags = 0x0FF0; //LUP_RETURN_ALL;

            int result = SafeNativeMethods.WSALookupServiceBegin(qsRestrictions,
                dwControlFlags, ref valHandle);

            //CheckResult(result);

            while (0 == result)
            {
                Int32 dwBuffer = 0x10000;
                IntPtr pBuffer = Marshal.AllocHGlobal(dwBuffer);

                WSAQUERYSET qsResult = new WSAQUERYSET() ;

                result = SafeNativeMethods.WSALookupServiceNext(valHandle, dwControlFlags,
                        ref dwBuffer, pBuffer);

                if (0==result)
                {
                    Marshal.PtrToStructure(pBuffer, qsResult);
                    networkConnections.Add(
                        qsResult.szServiceInstanceName);
                }
                else
                {
                    //CheckResult(result);
                }
                Marshal.FreeHGlobal(pBuffer);
            }

            result = SafeNativeMethods.WSALookupServiceEnd(valHandle);

            return networkConnections;
        }
예제 #2
0
        private ArrayList GetConnectedNetworks()
        {
            ArrayList   networkConnections = new ArrayList();
            WSAQUERYSET qsRestrictions;
            Int32       dwControlFlags;
            Int32       valHandle = 0;

            qsRestrictions             = new WSAQUERYSET();
            qsRestrictions.dwSize      = 15 * 4 * 8; // Marshal.SizeOf(typeof(qsRestrictions));
            qsRestrictions.dwNameSpace = NS_BTH;     // 0; //NS_ALL;
            dwControlFlags             = 0x0FF0;     //LUP_RETURN_ALL;

            int result = SafeNativeMethods.WSALookupServiceBegin(qsRestrictions,
                                                                 dwControlFlags, ref valHandle);

            //CheckResult(result);

            while (0 == result)
            {
                Int32  dwBuffer = 0x10000;
                IntPtr pBuffer  = Marshal.AllocHGlobal(dwBuffer);

                WSAQUERYSET qsResult = new WSAQUERYSET();

                result = SafeNativeMethods.WSALookupServiceNext(valHandle, dwControlFlags,
                                                                ref dwBuffer, pBuffer);

                if (0 == result)
                {
                    Marshal.PtrToStructure(pBuffer, qsResult);
                    networkConnections.Add(
                        qsResult.szServiceInstanceName);
                }
                else
                {
                    //CheckResult(result);
                }
                Marshal.FreeHGlobal(pBuffer);
            }

            result = SafeNativeMethods.WSALookupServiceEnd(valHandle);

            return(networkConnections);
        }
예제 #3
0
 public static extern int WSALookupServiceBegin(WSAQUERYSET qsRestrictions, int flags, ref int lookupHandle);
예제 #4
0
 public static extern int WSALookupServiceBegin(WSAQUERYSET qsRestrictions, int flags, ref int lookupHandle);