Hey all
Just have a question regarding bluetooth setup in C#, I need to call the following function and so created the corresponding template:
Code:
INT WSALookupServiceBegin(
__in LPWSAQUERYSET lpqsRestrictions,
__in DWORD dwControlFlags,
__out LPHANDLE lphLookup
);
[DllImport(WINSOCK_DLL, CharSet = CharSet.Auto, SetLastError=true)]
public static extern int WSALookupServiceBegin(WSAQUERYSET querySet, int flags, ref int lookupHandle);
and to be able to supply the LPWSAQUERYSET parameter I created the following struct:
Code:
struct WSAQUERYSET
{
public Int32 dwSize;
public String szServiceInstanceName;
public IntPtr lpServiceClassId;
public IntPtr lpVersion;
public String lpszComment;
public Int32 dwNameSpace;
public IntPtr lpNSProviderId;
public String lpszContext;
public Int32 dwNumberOfProtocols;
public IntPtr lpafpProtocols;
public String lpszQueryString;
public Int32 dwNumberOfCsAddrs;
public IntPtr lpcsaBuffer;
public Int32 dwOutputFlags;
public IntPtr Blob;
}
using this I run the following code:
Code:
/// <summary>
/// Search for devices in the area
/// </summary>
public void scan()
{
int LUP_CONTAINERS = 16;
//get version 2.2
ushort version = 0;
version = 2 << 7;
version += 2;
byte [] data = new byte [15];
int result = SafeNativeMethods.WSAStartup(version, data); // returns 0
int param = 0;
WSAQUERYSET q = new WSAQUERYSET();
int iRet = SafeNativeMethods.WSALookupServiceBegin(q,LUP_CONTAINERS,ref param); // NOT SUPPORTED EXCEPTION
int last_error = SafeNativeMethods.WSAGetLastError();
// do other stuff....
}
As mentioned in the code I get a NotSupportedException when callling the WSALookupServiceBegin method which I suspect is due to the strings in the struct I created (as it disappears when I remove them but gives a different problem). How is my definition of WSAQUERYSET not correct?