123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013 |
- {******************************************************************************}
- { }
- { BlueTooth API interface Unit for Object Pascal }
- { }
- { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
- { Corporation. All Rights Reserved. }
- { }
- { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
- { Marcel van Brakel. All Rights Reserved. }
- { }
- { Contributors: John Penman }
- { }
- { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
- { }
- { You may retrieve the latest version of this file at the Project JEDI }
- { APILIB home page, located at http://jedi-apilib.sourceforge.net }
- { }
- { The contents of this file are used with permission, subject to the Mozilla }
- { Public License Version 1.1 (the "License"); you may not use this file except }
- { in compliance with the License. You may obtain a copy of the License at }
- { http://www.mozilla.org/MPL/MPL-1.1.html }
- { }
- { Software distributed under the License is distributed on an "AS IS" basis, }
- { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
- { the specific language governing rights and limitations under the License. }
- { }
- { Alternatively, the contents of this file may be used under the terms of the }
- { GNU Lesser General Public License (the "LGPL License"), in which case the }
- { provisions of the LGPL License are applicable instead of those above. }
- { If you wish to allow use of your version of this file only under the terms }
- { of the LGPL License and not to allow others to use your version of this file }
- { under the MPL, indicate your decision by deleting the provisions above and }
- { replace them with the notice and other provisions required by the LGPL }
- { License. If you do not delete the provisions above, a recipient may use }
- { your version of this file under either the MPL or the LGPL License. }
- { }
- { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
- { }
- {******************************************************************************}
- unit JwaBluetoothAPIs;
- {$WEAKPACKAGEUNIT}
- {$HPPEMIT ''}
- {$HPPEMIT '#include "bluetoothapis.h"'}
- {$HPPEMIT ''}
- {$I jediapilib.inc}
- interface
- uses
- JwaWinType, JwaWinBase, JwaBthSdpDef;
- const
- BLUETOOTH_MAX_NAME_SIZE = 248;
- {$EXTERNALSYM BLUETOOTH_MAX_NAME_SIZE}
- BLUETOOTH_MAX_PASSKEY_SIZE = 16;
- {$EXTERNALSYM BLUETOOTH_MAX_PASSKEY_SIZE}
- BLUETOOTH_MAX_PASSKEY_BUFFER_SIZE = BLUETOOTH_MAX_PASSKEY_SIZE + 1;
- {$EXTERNALSYM BLUETOOTH_MAX_PASSKEY_BUFFER_SIZE}
- // ***************************************************************************
- //
- // Bluetooth Address
- //
- // ***************************************************************************
- type
- BTH_ADDR = Int64;
- {$EXTERNALSYM BTH_ADDR}
- _BLUETOOTH_ADDRESS = record
- case Integer of
- 0: (ullLong: BTH_ADDR); // easier to compare again BLUETOOTH_NULL_ADDRESS
- 1: (rgBytes: array [0..5] of Byte); // easier to format when broken out
- end;
- {$EXTERNALSYM _BLUETOOTH_ADDRESS}
- BLUETOOTH_ADDRESS = _BLUETOOTH_ADDRESS;
- {$EXTERNALSYM BLUETOOTH_ADDRESS}
- TBlueToothAddress = BLUETOOTH_ADDRESS;
- PBlueToothAddress = ^BLUETOOTH_ADDRESS;
- const
- BLUETOOTH_NULL_ADDRESS: TBlueToothAddress = (ullLong: 0;);
- {$EXTERNALSYM BLUETOOTH_NULL_ADDRESS}
- // ***************************************************************************
- //
- // Radio Enumeration
- //
- // Description:
- // This group of APIs enumerates the installed Bluetooth radios.
- //
- // Sample Usage:
- // HANDLE hRadio;
- // BLUETOOTH_FIND_RADIO_PARAMS btfrp = { sizeof(btfrp) };
- //
- // HBLUETOOTH_RADIO_FIND hFind = BluetoothFindFirstRadio( &btfrp, &hRadio );
- // if ( NULL != hFind )
- // {
- // do
- // {
- // //
- // // TODO: Do something with the radio handle.
- // //
- //
- // CloseHandle( hRadio );
- //
- // } while( BluetoothFindNextRadio( hFind, &hRadio ) );
- //
- // BluetoothFindRadioClose( hFind );
- // }
- //
- // ***************************************************************************
- type
- _BLUETOOTH_FIND_RADIO_PARAMS = record
- dwSize: DWORD; // IN sizeof this structure
- end;
- {$EXTERNALSYM _BLUETOOTH_FIND_RADIO_PARAMS}
- BLUETOOTH_FIND_RADIO_PARAMS = _BLUETOOTH_FIND_RADIO_PARAMS;
- {$EXTERNALSYM BLUETOOTH_FIND_RADIO_PARAMS}
- TBlueToothFindRadioParams = BLUETOOTH_FIND_RADIO_PARAMS;
- PBlueToothFindRadioParams = ^BLUETOOTH_FIND_RADIO_PARAMS;
- HBLUETOOTH_RADIO_FIND = THandle;
- {$EXTERNALSYM HBLUETOOTH_RADIO_FIND}
- //
- // Description:
- // Begins the enumeration of local Bluetooth radios.
- //
- // Parameters:
- // pbtfrp
- // A pointer to a BLUETOOTH_FIND_RADIO_PARAMS structure. The dwSize
- // member of this structure must match the sizeof the of the structure.
- //
- // phRadio
- // A pointer where the first radio HANDLE enumerated will be returned.
- //
- // Return Values:
- // NULL
- // Error opening radios or no devices found. Use GetLastError() for
- // more info.
- //
- // ERROR_INVALID_PARAMETER
- // pbtfrp parameter is NULL.
- //
- // ERROR_REVISION_MISMATCH
- // The pbtfrp structure is not the right length.
- //
- // ERROR_OUTOFMEMORY
- // Out of memory.
- //
- // other Win32 errors.
- //
- // any other
- // Success. The return handle is valid and phRadio points to a valid handle.
- //
- function BluetoothFindFirstRadio(const pbtfrp: PBlueToothFindRadioParams; var phRadio: THandle): HBLUETOOTH_RADIO_FIND; stdcall;
- {$EXTERNALSYM BluetoothFindFirstRadio}
- //
- // Description:
- // Finds the next installed Bluetooth radio.
- //
- // Parameters:
- // hFind
- // The handle returned by BluetoothFindFirstRadio().
- //
- // phRadio
- // A pointer where the next radio HANDLE enumerated will be returned.
- //
- // Return Values:
- // TRUE
- // Next device succesfully found. pHandleOut points to valid handle.
- //
- // FALSE
- // No device found. pHandleOut points to an invalid handle. Call
- // GetLastError() for more details.
- //
- // ERROR_INVALID_HANDLE
- // The handle is NULL.
- //
- // ERROR_NO_MORE_ITEMS
- // No more radios found.
- //
- // ERROR_OUTOFMEMORY
- // Out of memory.
- //
- // other Win32 errors
- //
- function BluetoothFindNextRadio(hFind: HBLUETOOTH_RADIO_FIND; var phRadio: THandle): BOOL; stdcall;
- {$EXTERNALSYM BluetoothFindNextRadio}
- //
- // Description:
- // Closes the enumeration handle.
- //
- // Parameters
- // hFind
- // The handle returned by BluetoothFindFirstRadio().
- //
- // Return Values:
- // TRUE
- // Handle succesfully closed.
- //
- // FALSE
- // Failure. Check GetLastError() for details.
- //
- // ERROR_INVALID_HANDLE
- // The handle is NULL.
- //
- function BluetoothFindRadioClose(hFind: HBLUETOOTH_RADIO_FIND): BOOL; stdcall;
- {$EXTERNALSYM BluetoothFindRadioClose}
- // ***************************************************************************
- //
- // Radio Information
- //
- // ***************************************************************************
- type
- _BLUETOOTH_RADIO_INFO = record
- dwSize: DWORD; // Size, in bytes, of this entire data structure
- address: BLUETOOTH_ADDRESS; // Address of the local radio
- szName: array [0..BLUETOOTH_MAX_NAME_SIZE - 1] of WideChar; // Name of the local radio
- ulClassofDevice: ULONG; // Class of device for the local radio
- lmpSubversion: Word; // lmpSubversion, manufacturer specifc.
- manufacturer: Word; // Manufacturer of the radio, BTH_MFG_Xxx value. For the most up to date
- // list, goto the Bluetooth specification website and get the Bluetooth
- // assigned numbers document.
- end;
- {$EXTERNALSYM _BLUETOOTH_RADIO_INFO}
- BLUETOOTH_RADIO_INFO = _BLUETOOTH_RADIO_INFO;
- {$EXTERNALSYM BLUETOOTH_RADIO_INFO}
- PBLUETOOTH_RADIO_INFO = ^BLUETOOTH_RADIO_INFO;
- {$EXTERNALSYM PBLUETOOTH_RADIO_INFO}
- TBlueToothRadioFind = BLUETOOTH_RADIO_INFO;
- PBlueToothRadioFind = PBLUETOOTH_RADIO_INFO;
- //
- // Description:
- // Retrieves the information about the radio represented by the handle.
- //
- // Parameters:
- // hRadio
- // Handle to a local radio retrieved through BluetoothFindFirstRadio()
- // et al or SetupDiEnumerateDeviceInterfaces()
- //
- // pRadioInfo
- // Radio information to be filled in. The dwSize member must match the
- // size of the structure.
- //
- // Return Values:
- // ERROR_SUCCESS
- // The information was retrieved successfully.
- //
- // ERROR_INVALID_PARAMETER
- // pRadioInfo or hRadio is NULL.
- //
- // ERROR_REVISION_MISMATCH
- // pRadioInfo->dwSize is invalid.
- //
- // other Win32 error codes.
- //
- function BluetoothGetRadioInfo(hRadio: THandle; var pRadioInfo: BLUETOOTH_RADIO_INFO): DWORD; stdcall;
- {$EXTERNALSYM BluetoothGetRadioInfo}
- // ***************************************************************************
- //
- // Device Information Stuctures
- //
- // ***************************************************************************
- type
- _BLUETOOTH_DEVICE_INFO = record
- dwSize: DWORD; // size, in bytes, of this structure - must be the sizeof(BLUETOOTH_DEVICE_INFO)
- Address: BLUETOOTH_ADDRESS; // Bluetooth address
- ulClassofDevice: ULONG; // Bluetooth "Class of Device"
- fConnected: BOOL; // Device connected/in use
- fRemembered: BOOL; // Device remembered
- fAuthenticated: BOOL; // Device authenticated/paired/bonded
- stLastSeen: SYSTEMTIME; // Last time the device was seen
- stLastUsed: SYSTEMTIME; // Last time the device was used for other than RNR, inquiry, or SDP
- szName: array [0..BLUETOOTH_MAX_NAME_SIZE - 1] of WideChar; // Name of the device
- end;
- {$EXTERNALSYM _BLUETOOTH_DEVICE_INFO}
- BLUETOOTH_DEVICE_INFO = _BLUETOOTH_DEVICE_INFO;
- {$EXTERNALSYM BLUETOOTH_DEVICE_INFO}
- PBLUETOOTH_DEVICE_INFO = BLUETOOTH_DEVICE_INFO;
- {$EXTERNALSYM PBLUETOOTH_DEVICE_INFO}
- TBlueToothDeviceInfo = BLUETOOTH_DEVICE_INFO;
- PBlueToothDeviceInfo = PBLUETOOTH_DEVICE_INFO;
- // ***************************************************************************
- //
- // Device Enumeration
- //
- // Description:
- // Enumerates the Bluetooth devices. The types of returned device depends
- // on the flags set in the BLUETOOTH_DEVICE_SEARCH_PARAMS (see structure
- // definition for details).
- //
- // Sample Usage:
- // HBLUETOOTH_DEVICE_FIND hFind;
- // BLUETOOTH_DEVICE_SEARCH_PARAMS btsp = { sizeof(btsp) };
- // BLUETOOTH_DEVICE_INFO btdi = { sizeof(btdi) };
- //
- // btsp.fReturnAuthenticated = TRUE;
- // btsp.fReturnRemembered = TRUE;
- //
- // hFind = BluetoothFindFirstDevice( &btsp, &btdi );
- // if ( NULL != hFind )
- // {
- // do
- // {
- // //
- // // TODO: Do something useful with the device info.
- // //
- //
- // } while( BluetoothFindNextDevice( hFind, &btdi ) );
- //
- // BluetoothFindDeviceClose( hFind );
- // }
- //
- // ***************************************************************************
- type
- _BLUETOOTH_DEVICE_SEARCH_PARAMS = record
- dwSize: DWORD; // IN sizeof this structure
- fReturnAuthenticated: BOOL; // IN return authenticated devices
- fReturnRemembered: BOOL; // IN return remembered devices
- fReturnUnknown: BOOL; // IN return unknown devices
- fReturnConnected: BOOL; // IN return connected devices
- fIssueInquiry: BOOL; // IN issue a new inquiry
- cTimeoutMultiplier: UCHAR; // IN timeout for the inquiry
- hRadio: THandle; // IN handle to radio to enumerate - NULL == all radios will be searched
- end;
- {$EXTERNALSYM _BLUETOOTH_DEVICE_SEARCH_PARAMS}
- BLUETOOTH_DEVICE_SEARCH_PARAMS = _BLUETOOTH_DEVICE_SEARCH_PARAMS;
- {$EXTERNALSYM BLUETOOTH_DEVICE_SEARCH_PARAMS}
- TBlueToothDeviceSearchParams = BLUETOOTH_DEVICE_SEARCH_PARAMS;
- HBLUETOOTH_DEVICE_FIND = THandle;
- {$EXTERNALSYM HBLUETOOTH_DEVICE_FIND}
- //
- // Description:
- // Begins the enumeration of Bluetooth devices.
- //
- // Parameters:
- // pbtsp
- // A pointer to a BLUETOOTH_DEVICE_SEARCH_PARAMS structure. This
- // structure contains the flags and inputs used to conduct the search.
- // See BLUETOOTH_DEVICE_SEARCH_PARAMS for details.
- //
- // pbtdi
- // A pointer to a BLUETOOTH_DEVICE_INFO structure to return information
- // about the first Bluetooth device found. Note that the dwSize member
- // of the structure must be the sizeof(BLUETOOTH_DEVICE_INFO) before
- // calling because the APIs hast to know the size of the buffer being
- // past in. The dwSize member must also match the exact
- // sizeof(BLUETOOTH_DEVICE_INFO) or the call will fail.
- //
- // Return Values:
- // NULL
- // Error opening radios or not devices found. Use GetLastError for more info.
- //
- // ERROR_INVALID_PARAMETER
- // pbtsp parameter or pbtdi parameter is NULL.
- //
- // ERROR_REVISION_MISMATCH
- // The pbtfrp structure is not the right length.
- //
- // other Win32 errors
- //
- // any other value
- // Success. The return handle is valid and pbtdi points to valid data.
- //
- function BluetoothFindFirstDevice(const pbtsp: BLUETOOTH_DEVICE_SEARCH_PARAMS; var pbtdi: BLUETOOTH_DEVICE_INFO): HBLUETOOTH_DEVICE_FIND; stdcall;
- {$EXTERNALSYM BluetoothFindFirstDevice}
- //
- // Description:
- // Finds the next Bluetooth device in the enumeration.
- //
- // Parameters:
- // hFind
- // The handle returned from BluetoothFindFirstDevice().
- //
- // pbtdi
- // A pointer to a BLUETOOTH_DEVICE_INFO structure to return information
- // about the first Bluetooth device found. Note that the dwSize member
- // of the structure must be the sizeof(BLUETOOTH_DEVICE_INFO) before
- // calling because the APIs hast to know the size of the buffer being
- // past in. The dwSize member must also match the exact
- // sizeof(BLUETOOTH_DEVICE_INFO) or the call will fail.
- //
- // Return Values:
- // TRUE
- // Next device succesfully found. pHandleOut points to valid handle.
- //
- // FALSE
- // No device found. pHandleOut points to an invalid handle. Call
- // GetLastError() for more details.
- //
- // ERROR_INVALID_HANDLE
- // The handle is NULL.
- //
- // ERROR_NO_MORE_ITEMS
- // No more radios found.
- //
- // ERROR_OUTOFMEMORY
- // Out of memory.
- //
- // other Win32 errors
- //
- function BluetoothFindNextDevice(hFind: HBLUETOOTH_DEVICE_FIND; var pbtdi: BLUETOOTH_DEVICE_INFO): BOOL; stdcall;
- {$EXTERNALSYM BluetoothFindNextDevice}
- //
- // Description:
- // Closes the enumeration handle.
- //
- // Parameters:
- // hFind
- // The handle returned from BluetoothFindFirstDevice().
- //
- // Return Values:
- // TRUE
- // Handle succesfully closed.
- //
- // FALSE
- // Failure. Check GetLastError() for details.
- //
- // ERROR_INVALID_HANDLE
- // The handle is NULL.
- //
- function BluetoothFindDeviceClose(hFind: HBLUETOOTH_DEVICE_FIND): BOOL; stdcall;
- {$EXTERNALSYM BluetoothFindDeviceClose}
- //
- // Description:
- // Retrieves information about a remote device.
- //
- // Fill in the dwSize and the Address members of the pbtdi structure
- // being passed in. On success, the rest of the members will be filled
- // out with the information that the system knows.
- //
- // Parameters:
- // hRadio
- // Handle to a local radio retrieved through BluetoothFindFirstRadio()
- // et al or SetupDiEnumerateDeviceInterfaces()
- //
- // pbtdi
- // A pointer to a BLUETOOTH_DEVICE_INFO structure to return information
- // about the first Bluetooth device found. The dwSize member of the
- // structure must be the sizeof the structure in bytes. The Address
- // member must be filled out with the Bluetooth address of the remote
- // device.
- //
- // Return Values:
- // ERROR_SUCCESS
- // Success. Information returned.
- //
- // ERROR_REVISION_MISMATCH
- // The size of the BLUETOOTH_DEVICE_INFO isn't compatible. Check
- // the dwSize member of the BLUETOOTH_DEVICE_INFO structure you
- // passed in.
- //
- // ERROR_NOT_FOUND
- // The radio is not known by the system or the Address field of
- // the BLUETOOTH_DEVICE_INFO structure is all zeros.
- //
- // ERROR_INVALID_PARAMETER
- // pbtdi is NULL.
- //
- // other error codes
- //
- function BluetoothGetDeviceInfo(hRadio: THandle; var pbtdi: BLUETOOTH_DEVICE_INFO): DWORD; stdcall;
- {$EXTERNALSYM BluetoothGetDeviceInfo}
- //
- // Description:
- // Updates the computer local cache about the device.
- //
- // Parameters:
- // pbtdi
- // A pointer to the BLUETOOTH_DEVICE_INFO structure to be updated.
- // The following members must be valid:
- // dwSize
- // Must match the size of the structure.
- // Address
- // Must be a previously found radio address.
- // szName
- // New name to be stored.
- //
- // Return Values:
- // ERROR_SUCCESS
- // The device information was updated successfully.
- //
- // ERROR_INVALID_PARAMETER
- // pbtdi is NULL.
- //
- // ERROR_REVISION_MISMATCH
- // pbtdi->dwSize is invalid.
- //
- // other Win32 error codes.
- //
- function BluetoothUpdateDeviceRecord(var pbtdi: BLUETOOTH_DEVICE_INFO): DWORD; stdcall;
- {$EXTERNALSYM BluetoothUpdateDeviceRecord}
- //
- // Description:
- // Delete the authentication (aka "bond") between the computer and the
- // device. Also purges any cached information about the device.
- //
- // Return Values:
- // ERROR_SUCCESS
- // The device was removed successfully.
- //
- // ERROR_NOT_FOUND
- // The device was not found. If no Bluetooth radio is installed,
- // the devices could not be enumerated or removed.
- //
- function BluetoothRemoveDevice(var pAddress: BLUETOOTH_ADDRESS): DWORD; stdcall;
- {$EXTERNALSYM BluetoothRemoveDevice}
- // ***************************************************************************
- //
- // Device Picker Dialog
- //
- // Description:
- // Invokes a common dialog for selecting Bluetooth devices. The list
- // of devices displayed to the user is determined by the flags and
- // settings the caller specifies in the BLUETOOTH_SELECT_DEVICE_PARAMS
- // (see structure definition for more details).
- //
- // If BluetoothSelectDevices() returns TRUE, the caller must call
- // BluetoothSelectDevicesFree() or memory will be leaked within the
- // process.
- //
- // Sample Usage:
- //
- // BLUETOOTH_SELECT_DEVICE_PARAMS btsdp = { sizeof(btsdp) };
- //
- // btsdp.hwndParent = hDlg;
- // btsdp.fShowUnknown = TRUE;
- // btsdp.fAddNewDeviceWizard = TRUE;
- //
- // BOOL b = BluetoothSelectDevices( &btsdp );
- // if ( b )
- // {
- // BLUETOOTH_DEVICE_INFO * pbtdi = btsdp.pDevices;
- // for ( ULONG cDevice = 0; cDevice < btsdp.cNumDevices; cDevice ++ )
- // {
- // if ( pbtdi->fAuthenticated || pbtdi->fRemembered )
- // {
- // //
- // // TODO: Do something usefull with the device info
- // //
- // }
- //
- // pbtdi = (BLUETOOTH_DEVICE_INFO *) ((LPBYTE)pbtdi + pbtdi->dwSize);
- // }
- //
- // BluetoothSelectDevicesFree( &btsdp );
- // }
- //
- // ***************************************************************************
- type
- _BLUETOOTH_COD_PAIRS = record
- ulCODMask: ULONG; // ClassOfDevice mask to compare
- pcszDescription: LPWSTR; // Descriptive string of mask
- end;
- {$EXTERNALSYM _BLUETOOTH_COD_PAIRS}
- BLUETOOTH_COD_PAIRS = _BLUETOOTH_COD_PAIRS;
- {$EXTERNALSYM BLUETOOTH_COD_PAIRS}
- TBlueToothCodPairs = BLUETOOTH_COD_PAIRS;
- PBlueToothCodPairs = ^BLUETOOTH_COD_PAIRS;
- PFN_DEVICE_CALLBACK = function(pvParam: Pointer; pDevice: PBLUETOOTH_DEVICE_INFO): BOOL; stdcall;
- {$EXTERNALSYM PFN_DEVICE_CALLBACK}
- _BLUETOOTH_SELECT_DEVICE_PARAMS = record
- dwSize: DWORD; // IN sizeof this structure
- cNumOfClasses: ULONG; // IN Number in prgClassOfDevice - if ZERO search for all devices
- prgClassOfDevices: PBlueToothCodPairs; // IN Array of CODs to find.
- pszInfo: LPWSTR; // IN If not NULL, sets the "information" text
- hwndParent: HWND; // IN parent window - NULL == no parent
- fForceAuthentication: BOOL; // IN If TRUE, authenication will be forced before returning
- fShowAuthenticated: BOOL; // IN If TRUE, authenticated devices will be shown in the picker
- fShowRemembered: BOOL; // IN If TRUE, remembered devices will be shown in the picker
- fShowUnknown: BOOL; // IN If TRUE, unknown devices that are not authenticated or "remember" will be shown.
- fAddNewDeviceWizard: BOOL; // IN If TRUE, invokes the add new device wizard.
- fSkipServicesPage: BOOL; // IN If TRUE, skips the "Services" page in the wizard.
- pfnDeviceCallback: PFN_DEVICE_CALLBACK; // IN If non-NULL, a callback that will be called for each device. If the
- // the callback returns TRUE, the item will be added. If the callback is
- // is FALSE, the item will not be shown.
- pvParam: Pointer; // IN Parameter to be passed to pfnDeviceCallback as the pvParam.
- cNumDevices: DWORD; // IN number calles wants - ZERO == no limit.
- // OUT the number of devices returned.
- pDevices: PBLUETOOTH_DEVICE_INFO; // OUT pointer to an array for BLUETOOTH_DEVICE_INFOs.
- // call BluetoothSelectDevicesFree() to free
- end;
- {$EXTERNALSYM _BLUETOOTH_SELECT_DEVICE_PARAMS}
- BLUETOOTH_SELECT_DEVICE_PARAMS = _BLUETOOTH_SELECT_DEVICE_PARAMS;
- {$EXTERNALSYM BLUETOOTH_SELECT_DEVICE_PARAMS}
- TBlueToothSelectDeviceParams = BLUETOOTH_SELECT_DEVICE_PARAMS;
- PBlueToothSelectDeviceParams = ^BLUETOOTH_SELECT_DEVICE_PARAMS;
- //
- // Description:
- // (See header above)
- //
- // Return Values:
- // TRUE
- // User selected a device. pbtsdp->pDevices points to valid data.
- // Caller should check the fAuthenticated && fRemembered flags to
- // determine which devices we successfuly authenticated or valid
- // selections by the user.
- //
- // Use BluetoothSelectDevicesFree() to free the nessecary data
- // such as pDevices only if this function returns TRUE.
- //
- // FALSE
- // No valid data returned. Call GetLastError() for possible details
- // of the failure. If GLE() is:
- //
- // ERROR_CANCELLED
- // The user cancelled the request.
- //
- // ERROR_INVALID_PARAMETER
- // The pbtsdp is NULL.
- //
- // ERROR_REVISION_MISMATCH
- // The structure passed in as pbtsdp is of an unknown size.
- //
- // other WIN32 errors
- //
- function BluetoothSelectDevices(pbtsdp: PBlueToothSelectDeviceParams): BOOL; stdcall;
- {$EXTERNALSYM BluetoothSelectDevices}
- //
- // Description:
- // This function should only be called if BluetoothSelectDevices() returns
- // TRUE. This function will free any memory and resource returned by the
- // BluetoothSelectDevices() in the BLUETOOTH_SELECT_DEVICE_PARAMS
- // structure.
- //
- // Return Values:
- // TRUE
- // Success.
- //
- // FALSE
- // Nothing to free.
- //
- function BluetoothSelectDevicesFree(pbtsdp: PBlueToothSelectDeviceParams): BOOL; stdcall;
- {$EXTERNALSYM BluetoothSelectDevicesFree}
- // ***************************************************************************
- //
- // Device Property Sheet
- //
- // ***************************************************************************
- //
- // Description:
- // Invokes the CPLs device info property sheet.
- //
- // Parameters:
- // hwndParent
- // HWND to parent the property sheet.
- //
- // pbtdi
- // A pointer to a BLUETOOTH_DEVICE_INFO structure of the device
- // to be displayed.
- //
- // Return Values:
- // TRUE
- // The property page was successfully displayed.
- //
- // FALSE
- // Failure. The property page was not displayed. Check GetLastError
- // for more details.
- //
- function BluetoothDisplayDeviceProperties(hwndParent: HWND; pbtdi: PBLUETOOTH_DEVICE_INFO): BOOL; stdcall;
- {$EXTERNALSYM BluetoothDisplayDeviceProperties}
- // ***************************************************************************
- //
- // Radio Authentication
- //
- // ***************************************************************************
- //
- // Description:
- // Sends an authentication request to a remote device.
- //
- // There are two modes of operation. "Wizard mode" and "Blind mode."
- //
- // "Wizard mode" is invoked when the pszPasskey is NULL. This will cause
- // the "Bluetooth Connection Wizard" to be invoked. The user will be
- // prompted to enter a passkey during the wizard after which the
- // authentication request will be sent. The user will see the success
- // or failure of the authentication attempt. The user will also be
- // given the oppurtunity to try to fix a failed authentication.
- //
- // "Blind mode" is invoked when the pszPasskey is non-NULL. This will
- // cause the computer to send a authentication request to the remote
- // device. No UI is ever displayed. The Bluetooth status code will be
- // mapped to a Win32 Error code.
- //
- // Parameters:
- //
- // hwndParent
- // The window to parent the authentication wizard. If NULL, the
- // wizard will be parented off the desktop.
- //
- // hRadio
- // A valid local radio handle or NULL. If NULL, then all radios will
- // be tired. If any of the radios succeed, then the call will
- // succeed.
- //
- // pbtdi
- // BLUETOOTH_DEVICE_INFO record of the device to be authenticated.
- //
- // pszPasskey
- // PIN to be used to authenticate the device. If NULL, then UI is
- // displayed and the user steps through the authentication process.
- // If not NULL, no UI is shown. The passkey is NOT NULL terminated.
- //
- // ulPasskeyLength
- // Length of szPassKey in bytes. The length must be less than or
- // equal to BLUETOOTH_MAX_PASSKEY_SIZE * sizeof(WCHAR).
- //
- // Return Values:
- //
- // ERROR_SUCCESS
- // Success.
- //
- // ERROR_CANCELLED
- // User aborted the operation.
- //
- // ERROR_INVALID_PARAMETER
- // The device structure in pbtdi is invalid.
- //
- // ERROR_NO_MORE_ITEMS
- // The device in pbtdi is already been marked as authenticated.
- //
- // other WIN32 error
- // Failure. Return value is the error code.
- //
- // For "Blind mode," here is the current mapping of Bluetooth status
- // code to Win32 error codes:
- //
- // { BTH_ERROR_SUCCESS, ERROR_SUCCESS },
- // { BTH_ERROR_NO_CONNECTION, ERROR_DEVICE_NOT_CONNECTED },
- // { BTH_ERROR_PAGE_TIMEOUT, WAIT_TIMEOUT },
- // { BTH_ERROR_HARDWARE_FAILURE, ERROR_GEN_FAILURE },
- // { BTH_ERROR_AUTHENTICATION_FAILURE, ERROR_NOT_AUTHENTICATED },
- // { BTH_ERROR_MEMORY_FULL, ERROR_NOT_ENOUGH_MEMORY },
- // { BTH_ERROR_CONNECTION_TIMEOUT, WAIT_TIMEOUT },
- // { BTH_ERROR_LMP_RESPONSE_TIMEOUT, WAIT_TIMEOUT },
- // { BTH_ERROR_MAX_NUMBER_OF_CONNECTIONS, ERROR_REQ_NOT_ACCEP },
- // { BTH_ERROR_PAIRING_NOT_ALLOWED, ERROR_ACCESS_DENIED },
- // { BTH_ERROR_UNSPECIFIED_ERROR, ERROR_NOT_READY },
- // { BTH_ERROR_LOCAL_HOST_TERMINATED_CONNECTION, ERROR_VC_DISCONNECTED },
- //
- function BluetoothAuthenticateDevice(
- hwndParent: HWND;
- hRadio: THandle;
- pbtbi: PBLUETOOTH_DEVICE_INFO;
- pszPasskey: PWideChar;
- ulPasskeyLength: ULONG): DWORD; stdcall;
- {$EXTERNALSYM BluetoothAuthenticateDevice}
- //
- // Description:
- // Allows the caller to prompt for multiple devices to be authenticated
- // within a single instance of the "Bluetooth Connection Wizard."
- //
- // Parameters:
- //
- // hwndParent
- // The window to parent the authentication wizard. If NULL, the
- // wizard will be parented off the desktop.
- //
- // hRadio
- // A valid local radio handle or NULL. If NULL, then all radios will
- // be tired. If any of the radios succeed, then the call will
- // succeed.
- //
- // cDevices
- // Number of devices in the rgbtdi array.
- //
- // rgbtdi
- // An array BLUETOOTH_DEVICE_INFO records of the devices to be
- // authenticated.
- //
- // Return Values:
- //
- // ERROR_SUCCESS
- // Success. Check the fAuthenticate flag on each of the devices.
- //
- // ERROR_CANCELLED
- // User aborted the operation. Check the fAuthenticate flags on
- // each device to determine if any of the devices were authenticated
- // before the user cancelled the operation.
- //
- // ERROR_INVALID_PARAMETER
- // One of the items in the array of devices is invalid.
- //
- // ERROR_NO_MORE_ITEMS
- // All the devices in the array of devices are already been marked as
- // being authenticated.
- //
- // other WIN32 error
- // Failure. Return value is the error code.
- //
- function BluetoothAuthenticateMultipleDevices(
- hwndParent: HWND;
- hRadio: THandle;
- cDevices: DWORD;
- pbtdi: PBLUETOOTH_DEVICE_INFO): DWORD; stdcall;
- {$EXTERNALSYM BluetoothAuthenticateMultipleDevices}
- // ***************************************************************************
- //
- // Bluetooth Services
- //
- // ***************************************************************************
- const
- BLUETOOTH_SERVICE_DISABLE = $00;
- {$EXTERNALSYM BLUETOOTH_SERVICE_DISABLE}
- BLUETOOTH_SERVICE_ENABLE = $01;
- {$EXTERNALSYM BLUETOOTH_SERVICE_ENABLE}
- BLUETOOTH_SERVICE_MASK = BLUETOOTH_SERVICE_ENABLE or BLUETOOTH_SERVICE_DISABLE;
- {$EXTERNALSYM BLUETOOTH_SERVICE_MASK}
- //
- // Description:
- // Enables/disables the services for a particular device.
- //
- // The system maintains a mapping of service guids to supported drivers for
- // Bluetooth-enabled devices. Enabling a service installs the corresponding
- // device driver. Disabling a service removes the corresponding device driver.
- //
- // If a non-supported service is enabled, a driver will not be installed.
- //
- // Parameters
- // hRadio
- // Handle of the local Bluetooth radio device.
- //
- // pbtdi
- // Pointer to a BLUETOOTH_DEVICE_INFO record.
- //
- // pGuidService
- // The service GUID on the remote device.
- //
- // dwServiceFlags
- // Flags to adjust the service.
- // BLUETOOTH_SERVICE_DISABLE - disable the service
- // BLUETOOTH_SERVICE_ENABLE - enables the service
- //
- // Return Values:
- // ERROR_SUCCESS
- // The call was successful.
- //
- // ERROR_INVALID_PARAMETER
- // dwServiceFlags are invalid.
- //
- // ERROR_SERVICE_DOES_NOT_EXIST
- // The GUID in pGuidService is not supported.
- //
- // other WIN32 error
- // The call failed.
- //
- function BluetoothSetServiceState(
- hRadio: THandle;
- pbtdi: PBLUETOOTH_DEVICE_INFO;
- const pGuidService: TGUID;
- dwServiceFlags: DWORD): DWORD; stdcall;
- {$EXTERNALSYM BluetoothSetServiceState}
- //
- // Description:
- // Enumerates the services guids enabled on a particular device. If hRadio
- // is NULL, all device will be searched for the device and all the services
- // enabled will be returned.
- //
- // Parameters:
- // hRadio
- // Handle of the local Bluetooth radio device. If NULL, it will search
- // all the radios for the address in the pbtdi.
- //
- // pbtdi
- // Pointer to a BLUETOOTH_DEVICE_INFO record.
- //
- // pcService
- // On input, the number of records pointed to by pGuidServices.
- // On output, the number of valid records return in pGuidServices.
- //
- // pGuidServices
- // Pointer to memory that is at least *pcService in length.
- //
- // Return Values:
- // ERROR_SUCCESS
- // The call succeeded. pGuidServices is valid.
- //
- // ERROR_MORE_DATA
- // The call succeeded. pGuidService contains an incomplete list of
- // enabled service GUIDs.
- //
- // other WIN32 errors
- // The call failed.
- //
- function BluetoothEnumerateInstalledServices(
- hRadio: THandle;
- pbtdi: PBLUETOOTH_DEVICE_INFO;
- var pcServices: DWORD;
- pGuidServices: PGUID): DWORD; stdcall;
- {$EXTERNALSYM BluetoothEnumerateInstalledServices}
- //
- // Description:
- // Change the discovery state of the local radio(s).
- // If hRadio is NULL, all the radios will be set.
- //
- // Use BluetoothIsDiscoverable() to determine the radios current state.
- //
- // The system ensures that a discoverable system is connectable, thus
- // the radio must allow incoming connections (see
- // BluetoothEnableIncomingConnections) prior to making a radio
- // discoverable. Failure to do so will result in this call failing
- // (returns FALSE).
- //
- // Parameters:
- // hRadio
- // If not NULL, changes the state of a specific radio.
- // If NULL, the API will interate through all the radios.
- //
- // fEnabled
- // If FALSE, discovery will be disabled.
- //
- // Return Values
- // TRUE
- // State was successfully changed. If the caller specified NULL for
- // hRadio, at least of the radios accepted the state change.
- //
- // FALSE
- // State was not changed. If the caller specified NULL for hRadio, all
- // of the radios did not accept the state change.
- //
- function BluetoothEnableDiscovery(hRadio: THandle; fEnabled: BOOL): BOOL; stdcall;
- {$EXTERNALSYM BluetoothEnableDiscovery}
- //
- // Description:
- // Determines if the Bluetooth radios are discoverable. If there are
- // multiple radios, the first one to say it is discoverable will cause
- // this function to return TRUE.
- //
- // Parameters:
- // hRadio
- // Handle of the radio to check. If NULL, it will check all local
- // radios.
- //
- // Return Values:
- // TRUE
- // A least one radio is discoverable.
- //
- // FALSE
- // No radios are discoverable.
- //
- function BluetoothIsDiscoverable(hRadio: THandle): BOOL; stdcall;
- {$EXTERNALSYM BluetoothIsDiscoverable}
- //
- // Description:
- // Enables/disables the state of a radio to accept incoming connections.
- // If hRadio is NULL, all the radios will be set.
- //
- // Use BluetoothIsConnectable() to determine the radios current state.
- //
- // The system enforces that a radio that is not connectable is not
- // discoverable too. The radio must be made non-discoverable (see
- // BluetoothEnableDiscovery) prior to making a radio non-connectionable.
- // Failure to do so will result in this call failing (returns FALSE).
- //
- // Parameters:
- // hRadio
- // If not NULL, changes the state of a specific radio.
- // If NULL, the API will interate through all the radios.
- //
- // fEnabled
- // If FALSE, incoming connection will be disabled.
- //
- // Return Values
- // TRUE
- // State was successfully changed. If the caller specified NULL for
- // hRadio, at least of the radios accepted the state change.
- //
- // FALSE
- // State was not changed. If the caller specified NULL for hRadio, all
- // of the radios did not accept the state change.
- //
- function BluetoothEnableIncomingConnections(hRadio: THandle; fEnabled: BOOL): BOOL; stdcall;
- {$EXTERNALSYM BluetoothEnableIncomingConnections}
- //
- // Description:
- // Determines if the Bluetooth radios are connectable. If there are
- // multiple radios, the first one to say it is connectable will cause
- // this function to return TRUE.
- //
- // Parameters:
- // hRadio
- // Handle of the radio to check. If NULL, it will check all local
- // radios.
- //
- // Return Values:
- // TRUE
- // A least one radio is allowing incoming connections.
- //
- // FALSE
- // No radios are allowing incoming connections.
- //
- function BluetoothIsConnectable(hRadio: THandle): BOOL; stdcall;
- {$EXTERNALSYM BluetoothIsConnectable}
- // ***************************************************************************
- //
- // Authentication Registration
- //
- // ***************************************************************************
- type
- HBLUETOOTH_AUTHENTICATION_REGISTRATION = THandle;
- {$EXTERNALSYM HBLUETOOTH_AUTHENTICATION_REGISTRATION}
- PFN_AUTHENTICATION_CALLBACK = function(pvParam: Pointer; pDevice: PBLUETOOTH_DEVICE_INFO): BOOL; stdcall;
- {$EXTERNALSYM PFN_AUTHENTICATION_CALLBACK}
- //
- // Description:
- // Registers a callback function to be called when a particular device
- // requests authentication. The request is sent to the last application
- // that requested authentication for a particular device.
- //
- // Parameters:
- // pbtdi
- // A pointer to a BLUETOOTH_DEVICE_INFO structure. The Bluetooth
- // address will be used for comparision.
- //
- // phRegHandle
- // A pointer to where the registration HANDLE value will be
- // stored. Call BluetoothUnregisterAuthentication() to close
- // the handle.
- //
- // pfnCallback
- // The function that will be called when the authentication event
- // occurs. This function should match PFN_AUTHENTICATION_CALLBACK's
- // prototype.
- //
- // pvParam
- // Optional parameter to be past through to the callback function.
- // This can be anything the application was to define.
- //
- // Return Values:
- // ERROR_SUCCESS
- // Success. A valid registration handle was returned.
- //
- // ERROR_OUTOFMEMORY
- // Out of memory.
- //
- // other Win32 error.
- // Failure. The registration handle is invalid.
- //
- function BluetoothRegisterForAuthentication(
- pbtdi: PBLUETOOTH_DEVICE_INFO;
- var phRegHandle: HBLUETOOTH_AUTHENTICATION_REGISTRATION;
- pfnCallback: PFN_AUTHENTICATION_CALLBACK;
- pvParam: Pointer): DWORD; stdcall;
- {$EXTERNALSYM BluetoothRegisterForAuthentication}
- //
- // Description:
- // Unregisters an authentication callback and closes the handle. See
- // BluetoothRegisterForAuthentication() for more information about
- // authentication registration.
- //
- // Parameters:
- // hRegHandle
- // Handle returned by BluetoothRegisterForAuthentication().
- //
- // Return Value:
- // TRUE
- // The handle was successfully closed.
- //
- // FALSE
- // The handle was not successfully closed. Check GetLastError for
- // more details.
- //
- // ERROR_INVALID_HANDLE
- // The handle is NULL.
- //
- // other Win32 errors.
- //
- function BluetoothUnregisterAuthentication(hRegHandle: HBLUETOOTH_AUTHENTICATION_REGISTRATION): BOOL; stdcall;
- {$EXTERNALSYM BluetoothUnregisterAuthentication}
- //
- // Description:
- // This function should be called after receiving an authentication request
- // to send the passkey response.
- //
- // Parameters:
- //
- // hRadio
- // Optional handle to the local radio. If NULL, the function will try
- // each radio until one succeeds.
- //
- // pbtdi
- // A pointer to a BLUETOOTH_DEVICE_INFO structure describing the device
- // being authenticated. This can be the same structure passed to the
- // callback function.
- //
- // pszPasskey
- // A pointer to UNICODE zero-terminated string of the passkey response
- // that should be sent back to the authenticating device.
- //
- // Return Values:
- // ERROR_SUCESS
- // The device accepted the passkey response. The device is authenticated.
- //
- // ERROR_CANCELED
- // The device denied the passkey reponse. This also will returned if there
- // is a communications problem with the local radio.
- //
- // E_FAIL
- // The device returned a failure code during authentication.
- //
- // other Win32 error codes
- //
- function BluetoothSendAuthenticationResponse(
- hRadio: THandle;
- pbtdi: PBLUETOOTH_DEVICE_INFO;
- pszPasskey: LPWSTR): DWORD; stdcall;
- {$EXTERNALSYM BluetoothSendAuthenticationResponse}
- // ***************************************************************************
- //
- // SDP Parsing Functions
- //
- // ***************************************************************************
- type
- TSpdElementDataString = record
- // raw string buffer, may not be encoded as ANSI, use
- // BluetoothSdpGetString to convert the value if it is described
- // by the base language attribute ID list
- value: PBYTE;
- // raw length of the string, may not be NULL terminuated
- length: ULONG;
- end;
- TSpdElementDataUrl = record
- value: PBYTE;
- length: ULONG;
- end;
- // type == SDP_TYPE_SEQUENCE
- TSpdElementDataSequence = record
- // raw sequence, starts at sequence element header
- value: PBYTE;
- // raw sequence length
- length: ULONG;
- end;
- // type == SDP_TYPE_ALTERNATIVE
- TSpdElementDataAlternative = record
- // raw alternative, starts at alternative element header
- value: PBYTE;
- // raw alternative length
- length: ULONG;
- end;
- _SDP_ELEMENT_DATA = record
- //
- // Enumeration of SDP element types. Generic element types will have a
- // specificType value other then SDP_ST_NONE. The generic types are:
- // o SDP_TYPE_UINT
- // o SDP_TYPE_INT
- // o SDP_TYPE_UUID
- //
- type_: SDP_TYPE;
- //
- // Specific types for the generic SDP element types.
- //
- specificType: SDP_SPECIFICTYPE;
- //
- // Union of all possible data types. type and specificType will indicate
- // which field is valid. For types which do not have a valid specificType,
- // specific type will be SDP_ST_NONE.
- //
- case Integer of
- // type == SDP_TYPE_INT
- 0: (int128: SDP_LARGE_INTEGER_16); // specificType == SDP_ST_INT128
- 1: (int64: LONGLONG); // specificType == SDP_ST_INT64
- 2: (int32: Integer); // specificType == SDP_ST_INT32
- 3: (int16: SHORT); // specificType == SDP_ST_INT16
- 4: (int8: CHAR); // specificType == SDP_ST_INT8
- // type == SDP_TYPE_UINT
- 5: (uint128: SDP_ULARGE_INTEGER_16); // specificType == SDP_ST_UINT128
- 6: (uint64: Int64); // specificType == SDP_ST_UINT64
- 7: (uint32: ULONG); // specificType == SDP_ST_UINT32
- 8: (uint16: Word); // specificType == SDP_ST_UINT16
- 9: (uint8: UCHAR); // specificType == SDP_ST_UINT8
- // type == SDP_TYPE_BOOLEAN
- 10: (booleanVal: UCHAR);
- // type == SDP_TYPE_UUID
- 11: (uuid128: TGUID); // specificType == SDP_ST_UUID128
- 12: (uuid32: ULONG); // specificType == SDP_ST_UUID32
- 13: (uuid16: Word); // specificType == SDP_ST_UUID32
- // type == SDP_TYPE_STRING
- 14: (string_: TSpdElementDataString);
- // type == SDP_TYPE_URL
- 15: (url: TSpdElementDataUrl);
- // type == SDP_TYPE_SEQUENCE
- 16: (sequence: TSpdElementDataSequence);
- // type == SDP_TYPE_ALTERNATIVE
- 17: (alternative: TSpdElementDataAlternative);
- end;
- {$EXTERNALSYM _SDP_ELEMENT_DATA}
- SDP_ELEMENT_DATA = _SDP_ELEMENT_DATA;
- {$EXTERNALSYM SDP_ELEMENT_DATA}
- PSDP_ELEMENT_DATA = ^SDP_ELEMENT_DATA;
- {$EXTERNALSYM PSDP_ELEMENT_DATA}
- TSdpElementData = SDP_ELEMENT_DATA;
- PSdpElementData = PSDP_ELEMENT_DATA;
- //
- // Description:
- // Retrieves and parses the element found at pSdpStream
- //
- // Parameters:
- // IN pSdpStream
- // pointer to valid SDP stream
- //
- // IN cbSdpStreamLength
- // length of pSdpStream in bytes
- //
- // OUT pData
- // pointer to be filled in with the data of the SDP element at the
- // beginning of pSdpStream
- //
- // Return Values:
- // ERROR_INVALID_PARAMETER
- // one of required parameters is NULL or the pSdpStream is invalid
- //
- // ERROR_SUCCESS
- // the sdp element was parsed correctly
- //
- function BluetoothSdpGetElementData(
- pSdpStream: PBYTE;
- cbSdpStreamLength: ULONG;
- pData: PSDP_ELEMENT_DATA): DWORD; stdcall;
- {$EXTERNALSYM BluetoothSdpGetElementData}
- type
- HBLUETOOTH_CONTAINER_ELEMENT = THandle;
- {$EXTERNALSYM HBLUETOOTH_CONTAINER_ELEMENT}
- //
- // Description:
- // Iterates over a container stream, returning each elemetn contained with
- // in the container element at the beginning of pContainerStream
- //
- // Parameters:
- // IN pContainerStream
- // pointer to valid SDP stream whose first element is either a sequence
- // or alternative
- //
- // IN cbContainerlength
- // length in bytes of pContainerStream
- //
- // IN OUT pElement
- // Value used to keep track of location within the stream. The first
- // time this function is called for a particular container, *pElement
- // should equal NULL. Upon subsequent calls, the value should be
- // unmodified.
- //
- // OUT pData
- // pointer to be filled in with the data of the SDP element at the
- // current element of pContainerStream
- //
- // Return Values:
- // ERROR_SUCCESS
- // The call succeeded, pData contains the data
- //
- // ERROR_NO_MORE_ITEMS
- // There are no more items in the list, the caller should cease calling
- // BluetoothSdpGetContainerElementData for this container.
- //
- // ERROR_INVALID_PARAMETER
- // A required pointer is NULL or the container is not a valid SDP
- // stream
- //
- // Usage example:
- //
- // HBLUETOOTH_CONTAINER_ELEMENT element;
- // SDP_ELEMENT_DATA data;
- // ULONG result;
- //
- // element = NULL;
- //
- // while (TRUE) {
- // result = BluetoothSdpGetContainerElementData(
- // pContainer, ulContainerLength, &element, &data);
- //
- // if (result == ERROR_NO_MORE_ITEMS) {
- // // We are done
- // break;
- // }
- // else if (result != ERROR_SUCCESS) {
- // // error
- // }
- //
- // // do something with data ...
- // }
- //
- //
- function BluetoothSdpGetContainerElementData(
- pContainerStream: PBYTE;
- cbContainerLength: ULONG;
- var pElement: HBLUETOOTH_CONTAINER_ELEMENT;
- pData: PSDP_ELEMENT_DATA): DWORD; stdcall;
- {$EXTERNALSYM BluetoothSdpGetContainerElementData}
- //
- // Description:
- // Retrieves the attribute value for the given attribute ID. pRecordStream
- // must be an SDP stream that is formatted as an SDP record, a SEQUENCE
- // containing UINT16 + element pairs.
- //
- // Parameters:
- // IN pRecordStream
- // pointer to a valid SDP stream which is formatted as a singl SDP
- // record
- //
- // IN cbRecordlnegh
- // length of pRecordStream in bytes
- //
- // IN usAttributeId
- // the attribute ID to search for. see bthdef.h for SDP_ATTRIB_Xxx
- // values.
- //
- // OUT pAttributeData
- // pointer that will contain the attribute ID's value
- //
- // Return Values:
- // ERRROR_SUCCESS
- // Call succeeded, pAttributeData contains the attribute value
- //
- // ERROR_INVALID_PARAMETER
- // One of the required pointers was NULL, pRecordStream was not a valid
- // SDP stream, or pRecordStream was not a properly formatted SDP record
- //
- // ERROR_FILE_NOT_FOUND
- // usAttributeId was not found in the record
- //
- // Usage:
- //
- // ULONG result;
- // SDP_DATA_ELEMENT data;
- //
- // result = BluetoothSdpGetAttributeValue(
- // pRecordStream, cbRecordLength, SDP_ATTRIB_RECORD_HANDLE, &data);
- // if (result == ERROR_SUCCESS) {
- // printf("record handle is 0x%x\n", data.data.uint32);
- // }
- //
- function BluetoothSdpGetAttributeValue(
- pRecordStream: PBYTE;
- cbRecordLength: ULONG;
- usAttributeId: Word;
- pAttributeData: PSDP_ELEMENT_DATA): DWORD; stdcall;
- {$EXTERNALSYM BluetoothSdpGetAttributeValue}
- //
- // These three fields correspond one to one with the triplets defined in the
- // SDP specification for the language base attribute ID list.
- //
- type
- _SDP_STRING_TYPE_DATA = record
- //
- // How the string is encoded according to ISO 639:1988 (E/F): "Code
- // for the representation of names of languages".
- //
- encoding: Word;
- //
- // MIBE number from IANA database
- //
- mibeNum: Word;
- //
- // The base attribute where the string is to be found in the record
- //
- attributeId: Word;
- end;
- {$EXTERNALSYM _SDP_STRING_TYPE_DATA}
- SDP_STRING_TYPE_DATA = _SDP_STRING_TYPE_DATA;
- {$EXTERNALSYM SDP_STRING_TYPE_DATA}
- PSDP_STRING_TYPE_DATA = ^SDP_STRING_TYPE_DATA;
- {$EXTERNALSYM PSDP_STRING_TYPE_DATA}
- TSdpStringTypeData = SDP_STRING_TYPE_DATA;
- PSdpStringTypeData = PSDP_STRING_TYPE_DATA;
- //
- // Description:
- // Converts a raw string embedded in the SDP record into a UNICODE string
- //
- // Parameters:
- // IN pRecordStream
- // a valid SDP stream which is formatted as an SDP record
- //
- // IN cbRecordLength
- // length of pRecordStream in bytes
- //
- // IN pStringData
- // if NULL, then the calling thread's locale will be used to search
- // for a matching string in the SDP record. If not NUL, the mibeNum
- // and attributeId will be used to find the string to convert.
- //
- // IN usStringOffset
- // the SDP string type offset to convert. usStringOffset is added to
- // the base attribute id of the string. SDP specification defined
- // offsets are: STRING_NAME_OFFSET, STRING_DESCRIPTION_OFFSET, and
- // STRING_PROVIDER_NAME_OFFSET (found in bthdef.h).
- //
- // OUT pszString
- // if NULL, pcchStringLength will be filled in with the required number
- // of characters (not bytes) to retrieve the converted string.
- //
- // IN OUT pcchStringLength
- // Upon input, if pszString is not NULL, will contain the length of
- // pszString in characters. Upon output, it will contain either the
- // number of required characters including NULL if an error is returned
- // or the number of characters written to pszString (including NULL).
- //
- // Return Values:
- // ERROR_SUCCES
- // Call was successful and pszString contains the converted string
- //
- // ERROR_MORE_DATA
- // pszString was NULL or too small to contain the converted string,
- // pccxhStringLength contains the required length in characters
- //
- // ERROR_INVALID_DATA
- // Could not perform the conversion
- //
- // ERROR_NO_SYSTEM_RESOURCES
- // Could not allocate memory internally to perform the conversion
- //
- // ERROR_INVALID_PARAMETER
- // One of the rquired pointers was NULL, pRecordStream was not a valid
- // SDP stream, pRecordStream was not a properly formatted record, or
- // the desired attribute + offset was not a string.
- //
- // Other HRESULTs returned by COM
- //
- function BluetoothSdpGetString(
- pRecordStream: PBYTE;
- cbRecordLength: ULONG;
- pStringData: PSDP_STRING_TYPE_DATA;
- usStringOffset: Word;
- pszString: PWideChar;
- pcchStringLength: PULONG): DWORD; stdcall;
- {$EXTERNALSYM BluetoothSdpGetString}
- // ***************************************************************************
- //
- // Raw Attribute Enumeration
- //
- // ***************************************************************************
- type
- PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK = function(
- uAttribId: ULONG;
- pValueStream: PBYTE;
- cbStreamSize: ULONG;
- pvParam: Pointer): BOOL; stdcall;
- {$EXTERNALSYM PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK}
- //
- // Description:
- // Enumerates through the SDP record stream calling the Callback function
- // for each attribute in the record. If the Callback function returns
- // FALSE, the enumeration is stopped.
- //
- // Return Values:
- // TRUE
- // Success! Something was enumerated.
- //
- // FALSE
- // Failure. GetLastError() could be one of the following:
- //
- // ERROR_INVALID_PARAMETER
- // pSDPStream or pfnCallback is NULL.
- //
- // ERROR_INVALID_DATA
- // The SDP stream is corrupt.
- //
- // other Win32 errors.
- //
- function BluetoothSdpEnumAttributes(
- pSDPStream: PBYTE;
- cbStreamSize: ULONG;
- pfnCallback: PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK;
- pvParam: Pointer): BOOL; stdcall;
- {$EXTERNALSYM BluetoothSdpEnumAttributes}
- // (rom) MACRO
- function BluetoothEnumAttributes(
- pSDPStream: PBYTE;
- cbStreamSize: ULONG;
- pfnCallback: PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK;
- pvParam: Pointer): BOOL;
- {$EXTERNALSYM BluetoothEnumAttributes}
- implementation
- const
- btapi = 'irprops.cpl';
- // (rom) MACRO implementation
- function BluetoothEnumAttributes(pSDPStream: PBYTE; cbStreamSize: ULONG;
- pfnCallback: PFN_BLUETOOTH_ENUM_ATTRIBUTES_CALLBACK; pvParam: Pointer): BOOL;
- begin
- Result := BluetoothSdpEnumAttributes(pSDPStream, cbStreamSize, pfnCallback, pvParam);
- end;
- {$IFDEF DYNAMIC_LINK}
- var
- _BluetoothFindFirstRadio: Pointer;
- function BluetoothFindFirstRadio;
- begin
- GetProcedureAddress(_BluetoothFindFirstRadio, btapi, 'BluetoothFindFirstRadio');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothFindFirstRadio]
- end;
- end;
- var
- _BluetoothFindNextRadio: Pointer;
- function BluetoothFindNextRadio;
- begin
- GetProcedureAddress(_BluetoothFindNextRadio, btapi, 'BluetoothFindNextRadio');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothFindNextRadio]
- end;
- end;
- var
- _BluetoothFindRadioClose: Pointer;
- function BluetoothFindRadioClose;
- begin
- GetProcedureAddress(_BluetoothFindRadioClose, btapi, 'BluetoothFindRadioClose');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothFindRadioClose]
- end;
- end;
- var
- _BluetoothGetRadioInfo: Pointer;
- function BluetoothGetRadioInfo;
- begin
- GetProcedureAddress(_BluetoothGetRadioInfo, btapi, 'BluetoothGetRadioInfo');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothGetRadioInfo]
- end;
- end;
- var
- _BluetoothFindFirstDevice: Pointer;
- function BluetoothFindFirstDevice;
- begin
- GetProcedureAddress(_BluetoothFindFirstDevice, btapi, 'BluetoothFindFirstDevice');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothFindFirstDevice]
- end;
- end;
- var
- _BluetoothFindNextDevice: Pointer;
- function BluetoothFindNextDevice;
- begin
- GetProcedureAddress(_BluetoothFindNextDevice, btapi, 'BluetoothFindNextDevice');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothFindNextDevice]
- end;
- end;
- var
- _BluetoothFindDeviceClose: Pointer;
- function BluetoothFindDeviceClose;
- begin
- GetProcedureAddress(_BluetoothFindDeviceClose, btapi, 'BluetoothFindDeviceClose');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothFindDeviceClose]
- end;
- end;
- var
- _BluetoothGetDeviceInfo: Pointer;
- function BluetoothGetDeviceInfo;
- begin
- GetProcedureAddress(_BluetoothGetDeviceInfo, btapi, 'BluetoothGetDeviceInfo');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothGetDeviceInfo]
- end;
- end;
- var
- _BluetoothUpdateDeviceRecord: Pointer;
- function BluetoothUpdateDeviceRecord;
- begin
- GetProcedureAddress(_BluetoothUpdateDeviceRecord, btapi, 'BluetoothUpdateDeviceRecord');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothUpdateDeviceRecord]
- end;
- end;
- var
- _BluetoothRemoveDevice: Pointer;
- function BluetoothRemoveDevice;
- begin
- GetProcedureAddress(_BluetoothRemoveDevice, btapi, 'BluetoothRemoveDevice');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothRemoveDevice]
- end;
- end;
- var
- _BluetoothSelectDevices: Pointer;
- function BluetoothSelectDevices;
- begin
- GetProcedureAddress(_BluetoothSelectDevices, btapi, 'BluetoothSelectDevices');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothSelectDevices]
- end;
- end;
- var
- _BluetoothSelectDevicesFree: Pointer;
- function BluetoothSelectDevicesFree;
- begin
- GetProcedureAddress(_BluetoothSelectDevicesFree, btapi, 'BluetoothSelectDevicesFree');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothSelectDevicesFree]
- end;
- end;
- var
- _BluetoothDisplayDeviceProperties: Pointer;
- function BluetoothDisplayDeviceProperties;
- begin
- GetProcedureAddress(_BluetoothDisplayDeviceProperties, btapi, 'BluetoothDisplayDeviceProperties');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothDisplayDeviceProperties]
- end;
- end;
- var
- _BluetoothAuthenticateDevice: Pointer;
- function BluetoothAuthenticateDevice;
- begin
- GetProcedureAddress(_BluetoothAuthenticateDevice, btapi, 'BluetoothAuthenticateDevice');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothAuthenticateDevice]
- end;
- end;
- var
- _BluetoothAuthenticateMultipleDevices: Pointer;
- function BluetoothAuthenticateMultipleDevices;
- begin
- GetProcedureAddress(_BluetoothAuthenticateMultipleDevices, btapi, 'BluetoothAuthenticateMultipleDevices');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothAuthenticateMultipleDevices]
- end;
- end;
- var
- _BluetoothSetServiceState: Pointer;
- function BluetoothSetServiceState;
- begin
- GetProcedureAddress(_BluetoothSetServiceState, btapi, 'BluetoothSetServiceState');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothSetServiceState]
- end;
- end;
- var
- _BluetoothEnumerateInstalledServices: Pointer;
- function BluetoothEnumerateInstalledServices;
- begin
- GetProcedureAddress(_BluetoothEnumerateInstalledServices, btapi, 'BluetoothEnumerateInstalledServices');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothEnumerateInstalledServices]
- end;
- end;
- var
- _BluetoothEnableDiscovery: Pointer;
- function BluetoothEnableDiscovery;
- begin
- GetProcedureAddress(_BluetoothEnableDiscovery, btapi, 'BluetoothEnableDiscovery');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothEnableDiscovery]
- end;
- end;
- var
- _BluetoothIsDiscoverable: Pointer;
- function BluetoothIsDiscoverable;
- begin
- GetProcedureAddress(_BluetoothIsDiscoverable, btapi, 'BluetoothIsDiscoverable');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothIsDiscoverable]
- end;
- end;
- var
- _BluetoothEnableIncomingConnections: Pointer;
- function BluetoothEnableIncomingConnections;
- begin
- GetProcedureAddress(_BluetoothEnableIncomingConnections, btapi, 'BluetoothEnableIncomingConnections');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothEnableIncomingConnections]
- end;
- end;
- var
- _BluetoothIsConnectable: Pointer;
- function BluetoothIsConnectable;
- begin
- GetProcedureAddress(_BluetoothIsConnectable, btapi, 'BluetoothIsConnectable');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothIsConnectable]
- end;
- end;
- var
- _BluetoothRegisterForAuthentication: Pointer;
- function BluetoothRegisterForAuthentication;
- begin
- GetProcedureAddress(_BluetoothRegisterForAuthentication, btapi, 'BluetoothRegisterForAuthentication');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothRegisterForAuthentication]
- end;
- end;
- var
- _BluetoothUnregisterAuthentication: Pointer;
- function BluetoothUnregisterAuthentication;
- begin
- GetProcedureAddress(_BluetoothUnregisterAuthentication, btapi, 'BluetoothUnregisterAuthentication');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothUnregisterAuthentication]
- end;
- end;
- var
- _BluetoothSendAuthenticationResponse: Pointer;
- function BluetoothSendAuthenticationResponse;
- begin
- GetProcedureAddress(_BluetoothSendAuthenticationResponse, btapi, 'BluetoothSendAuthenticationResponse');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothSendAuthenticationResponse]
- end;
- end;
- var
- _BluetoothSdpGetElementData: Pointer;
- function BluetoothSdpGetElementData;
- begin
- GetProcedureAddress(_BluetoothSdpGetElementData, btapi, 'BluetoothSdpGetElementData');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothSdpGetElementData]
- end;
- end;
- var
- _BluetoothSdpGetContainerElementData: Pointer;
- function BluetoothSdpGetContainerElementData;
- begin
- GetProcedureAddress(_BluetoothSdpGetContainerElementData, btapi, 'BluetoothSdpGetContainerElementData');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothSdpGetContainerElementData]
- end;
- end;
- var
- _BluetoothSdpGetAttributeValue: Pointer;
- function BluetoothSdpGetAttributeValue;
- begin
- GetProcedureAddress(_BluetoothSdpGetAttributeValue, btapi, 'BluetoothSdpGetAttributeValue');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothSdpGetAttributeValue]
- end;
- end;
- var
- _BluetoothSdpGetString: Pointer;
- function BluetoothSdpGetString;
- begin
- GetProcedureAddress(_BluetoothSdpGetString, btapi, 'BluetoothSdpGetString');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothSdpGetString]
- end;
- end;
- var
- _BluetoothSdpEnumAttributes: Pointer;
- function BluetoothSdpEnumAttributes;
- begin
- GetProcedureAddress(_BluetoothSdpEnumAttributes, btapi, 'BluetoothSdpEnumAttributes');
- asm
- MOV ESP, EBP
- POP EBP
- JMP [_BluetoothSdpEnumAttributes]
- end;
- end;
- {$ELSE}
- function BluetoothFindFirstRadio; external btapi name 'BluetoothFindFirstRadio';
- function BluetoothFindNextRadio; external btapi name 'BluetoothFindNextRadio';
- function BluetoothFindRadioClose; external btapi name 'BluetoothFindRadioClose';
- function BluetoothGetRadioInfo; external btapi name 'BluetoothGetRadioInfo';
- function BluetoothFindFirstDevice; external btapi name 'BluetoothFindFirstDevice';
- function BluetoothFindNextDevice; external btapi name 'BluetoothFindNextDevice';
- function BluetoothFindDeviceClose; external btapi name 'BluetoothFindDeviceClose';
- function BluetoothGetDeviceInfo; external btapi name 'BluetoothGetDeviceInfo';
- function BluetoothUpdateDeviceRecord; external btapi name 'BluetoothUpdateDeviceRecord';
- function BluetoothRemoveDevice; external btapi name 'BluetoothRemoveDevice';
- function BluetoothSelectDevices; external btapi name 'BluetoothSelectDevices';
- function BluetoothSelectDevicesFree; external btapi name 'BluetoothSelectDevicesFree';
- function BluetoothDisplayDeviceProperties; external btapi name 'BluetoothDisplayDeviceProperties';
- function BluetoothAuthenticateDevice; external btapi name 'BluetoothAuthenticateDevice';
- function BluetoothAuthenticateMultipleDevices; external btapi name 'BluetoothAuthenticateMultipleDevices';
- function BluetoothSetServiceState; external btapi name 'BluetoothSetServiceState';
- function BluetoothEnumerateInstalledServices; external btapi name 'BluetoothEnumerateInstalledServices';
- function BluetoothEnableDiscovery; external btapi name 'BluetoothEnableDiscovery';
- function BluetoothIsDiscoverable; external btapi name 'BluetoothIsDiscoverable';
- function BluetoothEnableIncomingConnections; external btapi name 'BluetoothEnableIncomingConnections';
- function BluetoothIsConnectable; external btapi name 'BluetoothIsConnectable';
- function BluetoothRegisterForAuthentication; external btapi name 'BluetoothRegisterForAuthentication';
- function BluetoothUnregisterAuthentication; external btapi name 'BluetoothUnregisterAuthentication';
- function BluetoothSendAuthenticationResponse; external btapi name 'BluetoothSendAuthenticationResponse';
- function BluetoothSdpGetElementData; external btapi name 'BluetoothSdpGetElementData';
- function BluetoothSdpGetContainerElementData; external btapi name 'BluetoothSdpGetContainerElementData';
- function BluetoothSdpGetAttributeValue; external btapi name 'BluetoothSdpGetAttributeValue';
- function BluetoothSdpGetString; external btapi name 'BluetoothSdpGetString';
- function BluetoothSdpEnumAttributes; external btapi name 'BluetoothSdpEnumAttributes';
- {$ENDIF DYNAMIC_LINK}
- end.
|