The com-on Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The com-on Reference Manual

This is the com-on Reference Manual, version 1.0.0, generated automatically by Declt version 3.0 "Montgomery Scott" on Fri Jun 26 10:50:57 2020 GMT+0.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

## About com-on
This is a small library to help work with COM interfaces under Windows. Specifically it handles initialising COM, creating and managing COM instances, GUIDs, and defining the necessary wrappers to access COM methods from Lisp.

## How To
For the duration of this tutorial we will assume that the package ``org.shirakumo.com-on`` has the local nickname ``com``.

For our purposes, let's suppose we want to bind the "IMMDeviceEnumerator"(https://docs.microsoft.com/en-us/windows/win32/api/mmdeviceapi/nn-mmdeviceapi-immdeviceenumerator) interface. We can look at the underlying definition in C by looking at the "mingw headers"(https://github.com/Alexpux/mingw-w64/blob/master/mingw-w64-headers/include/mmdeviceapi.h#L649):

:: C
MIDL_INTERFACE("a95664d2-9614-4f35-a746-de8db63617e6")
IMMDeviceEnumerator : public IUnknown

...

typedef struct IMMDeviceEnumeratorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IMMDeviceEnumerator* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IMMDeviceEnumerator* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IMMDeviceEnumerator* This);

    /*** IMMDeviceEnumerator methods ***/
    HRESULT (STDMETHODCALLTYPE *EnumAudioEndpoints)(
        IMMDeviceEnumerator* This,
        EDataFlow dataFlow,
        DWORD dwStateMask,
        IMMDeviceCollection **ppDevices);

    HRESULT (STDMETHODCALLTYPE *GetDefaultAudioEndpoint)(
        IMMDeviceEnumerator* This,
        EDataFlow dataFlow,
        ERole role,
        IMMDevice **ppEndpoint);

    HRESULT (STDMETHODCALLTYPE *GetDevice)(
        IMMDeviceEnumerator* This,
        LPCWSTR pwstrId,
        IMMDevice **ppDevice);

    HRESULT (STDMETHODCALLTYPE *RegisterEndpointNotificationCallback)(
        IMMDeviceEnumerator* This,
        IMMNotificationClient *pClient);

    HRESULT (STDMETHODCALLTYPE *UnregisterEndpointNotificationCallback)(
        IMMDeviceEnumerator* This,
        IMMNotificationClient *pClient);

    END_INTERFACE
} IMMDeviceEnumeratorVtbl;

...

class DECLSPEC_UUID("bcde0395-e52f-467c-8e3d-c4579291692e") MMDeviceEnumerator;
::

In order to translate this and make it usable from Lisp, we would write the following:

:: common lisp
(com:define-guid IMM-DEVICE-ENUMERATOR "a95664d2-9614-4f35-a746-de8db63617e6")
(com:define-guid MM-DEVICE-ENUMERATOR "bcde0395-e52f-467c-8e3d-c4579291692e")

;; ...

(com:define-comstruct device-enumerator
  (enum-audio-endpoints (data-flow e-data-flow) (state-mask :uint32) (devices :pointer))
  (get-default-audio-endpoint (data-flow data-flow) (role role) (endpoint :pointer))
  (register-endpoint-notification-callback (client :pointer))
  (unregister-endpoint-notification-callback (client :pointer)))
::

Omitted from this are the declarations of the enums ``data-flow`` and ``role``, which can be translated as usual for C. Note that we can give our struct, methods, and arguments any name we like. What's important is that the order of the methods is exactly the same as in C, and that we do not skip any methods. The methods inherited from ``IUnknown`` are always automatically added by ``define-comstruct`` and can thus be omitted. Similar for the ``this`` pointer which is always the first argument. Finally, almost all methods return an ``hresult``, so the return type can be omitted from ``define-comstruct`` as well.

In order to actually instantiate this interface now, we can use ``create``:

:: common lisp
(com:create MM-DEVICE-ENUMERATOR IMM-DEVICE-ENUMERATOR)
::

If successful, this will return a pointer to the COM instance, on which you can now call methods:

:: common lisp
(device-enumerator-enum-audio-endpoints * #| ... |#)
::

Often you will want to wrap these method calls in a ``check-hresult`` to catch failure states and translate them into Lisp conditions.

When you are done with a COM instance, you must ``release`` it in order to free the resource. After ``release`` ing the instance you may not call any methods on it, or pass it anywhere else. You also must not ``release`` it twice.

If you do not create the COM instance yourself, but rather get it through another API call, you must first call ``init`` to ensure the COM interface is properly initialised. Similarly, once you are done with COM, you should call ``shutdown`` to uninitialise it.



Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

The main system appears first, followed by any subsystem dependency.


Previous: , Up: Systems   [Contents][Index]

2.1 com-on

Maintainer

Nicolas Hafner <shinmera@tymoon.eu>

Author

Nicolas Hafner <shinmera@tymoon.eu>

Home Page

https://shinmera.github.io/com-on/

Source Control

(:git "https://github.com/shinmera/com-on.git")

Bug Tracker

https://github.com/shinmera/com-on/issues

License

zlib

Description

Utilities for dealing with COM interfaces.

Version

1.0.0

Dependencies
Source

com-on.asd (file)

Components

Next: , Previous: , Up: Top   [Contents][Index]

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

3.1 Lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.1 com-on.asd

Location

com-on.asd

Systems

com-on (system)


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.2 com-on/package.lisp

Parent

com-on (system)

Location

package.lisp

Packages

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.3 com-on/bindings.lisp

Dependency

package.lisp (file)

Parent

com-on (system)

Location

bindings.lisp

Exported Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.4 com-on/error.lisp

Dependency

bindings.lisp (file)

Parent

com-on (system)

Location

error.lisp

Exported Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.5 com-on/guid.lisp

Dependency

error.lisp (file)

Parent

com-on (system)

Location

guid.lisp

Exported Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.6 com-on/com.lisp

Dependency

guid.lisp (file)

Parent

com-on (system)

Location

com.lisp

Exported Definitions
Internal Definitions

*initialized* (special variable)


Previous: , Up: Lisp files   [Contents][Index]

3.1.7 com-on/documentation.lisp

Dependency

com.lisp (file)

Parent

com-on (system)

Location

documentation.lisp


Next: , Previous: , Up: Top   [Contents][Index]

4 Packages

Packages are listed by definition order.


Next: , Previous: , Up: Packages   [Contents][Index]

4.1 org.shirakumo.com-on

Source

package.lisp (file)

Use List

common-lisp

Exported Definitions
Internal Definitions

*initialized* (special variable)


Previous: , Up: Packages   [Contents][Index]

4.2 org.shirakumo.com-on.cffi

Source

package.lisp (file)

Use List

common-lisp

Exported Definitions

Next: , Previous: , Up: Top   [Contents][Index]

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

5.1 Exported definitions


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.1 Constants

Constant: clsctx-all
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Constant: cp-utf8
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Constant: format-message-from-system
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Constant: format-message-ignore-inserts
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.2 Macros

Macro: check-hresult VALUE-FORM &rest EXPECTED

Convenience function to check the returned HRESULT and error on failure.

If the return value of VALUE-FORM is not one of the supplied EXPECTED values, an error of type WIN32-ERROR is returned. If it is one of the EXPECTED values, the value is returned.

If EXPECTED is not passed, it is assumed to be just (:OK).

See COM:HRESULT
See WIN32-ERROR (type)

Package

org.shirakumo.com-on

Source

error.lisp (file)

Macro: check-last-error PREDICATE &body CLEANUP

Convenience function to check the last error on failure.

If PREDICATE returns NIL, CLEANUP forms are run. After this, the error code is retrieved through COM:GET-LAST-ERROR, and a WIN32-ERROR is signalled using this code.

See WIN32-ERROR (type)

Package

org.shirakumo.com-on

Source

error.lisp (file)

Macro: define-comfun (STRUCT METHOD &rest OPTIONS) RETURN-TYPE &body ARGS

Define a method on a COM interface.

ARGS should be a list of argument declarations, with each argument being composed of an argument name and a CFFI type.

This will create a function with the name of STRUCT-METHOD with the declared arguments, which will attempt to call the related COM method on the supplied COM instance. This method must be accessible through a function called %STRUCT-METHOD to which a pointer to a VTBL can be passed.

You will typically not use this macro by itself, and instead use DEFINE-COMSTRUCT to perform the definition of a COM interface.

See COM:VTBL
See DEFINE-COMSTRUCT

Package

org.shirakumo.com-on

Source

com.lisp (file)

Macro: define-comstruct NAME &body METHODS

Define a COM interface structure.

NAME should be the name of the CFFI structure type as well as the standard prefix for all structure interface methods. You may choose this arbitrarily and there is no binding to any C functions or structures.

METHODS should be a body of the following kinds of entries:

METHODS ::= (method [return-value] ARGUMENT*)*
ARGUMENT ::= (name type)
method — Name of the interface method. You may pick this to be whatever you like, there is no strict binding to any C function.
return-value — The return value of the method. If not passed explicitly, HRESULT is assumed.
name — The name of the argumetn. Again, the name may be arbitrarily chosen.
type — The CFFI type that the argument should be of.

Note that the order of the methods /must/ be the same as in the actual C header you’re mimicking. You also /must/ include all of the methods defined in the C header and cannot skip any. The order is what actually defines which method is used. The name is purely on the Lisp side.

Each COM interface always has the following three methods at the beginning, which DEFINE-COMSTRUCT adds for you automatically:

(QUERY-INTERFACE HRESULT (UID :POINTER) (OUT :POINTER))
(ADD-REF :ULONG)
(RELEASE :ULONG)

Also note that the THIS argument is always assumed for every method and should therefore be omitted from the declarations.

For each method defined in the body, A DEFINE-COMFUN is generated, which in turn will generate a function of the name NAME-METHOD using the declared arguments and return type.

Alongside the methods, a C structure is defined which constitutes the VTBL layout of the COM interface. Note that it does /not/ define the COM instance layout itself. Each COM instance is assumed to merely be a pointer to a structure with a pointer to a VTBL. None of this should concern you terribly much, however. All you need to know is that you can just pass a COM instance pointer to the method functions defined by DEFINE-COMSTRUCT.

See DEFINE-COMFUN

Package

org.shirakumo.com-on

Source

com.lisp (file)

Macro: define-guid NAME &rest ID

Define a GUID instance.

This is a shorthand for DEFCONSTANT of a GUID instance created from the given ID argument.

See GUID (type)
See GUID (function)

Package

org.shirakumo.com-on

Source

guid.lisp (file)

Macro: define-hresult &body PAIRS

Define HRESULT values.

This allows you to dynamically add new HRESULT enum keys as if by CFFI:DEFCENUM.

(define-hresult
(:foo #xDEAD)
(:bar #xBEEF))

See ADD-HRESULT
See COM:HRESULT

Package

org.shirakumo.com-on

Source

error.lisp (file)

Macro: with-com (VAR INIT) &body BODY

Hold a COM instance for the duration of the body.

This will ensure RELEASE is called on the instance when the body is exited by any means.

INIT may be any form that returns a pointer to a COM instance.

See CREATE
See RELEASE

Package

org.shirakumo.com-on

Source

com.lisp (file)

Macro: with-deref (VAR TYPE) &body INIT

Shorthand to initialise a value by dereferencing.

Binds VAR to a pointer to a memory region of size fitting for TYPE, then evaluates INIT. INIT should return a COM:HRESULT. If this result is not :OK, an error is signalled. Otherwise, the memory region bound to VAR is dereferenced as a value of TYPE, which is then returned.

Seee CHECK-HRESULT

Package

org.shirakumo.com-on

Source

error.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.3 Functions

Function: add-hresult &rest PAIRS

Add HRESULT values.

This allows you to dynamically add new HRESULT keys to the enum. The pairs should be specified like a plist:

(add-hresult :foo #xDEAD :bar #xBEEF)

Existing keys or values will be silently overwritten.

See DEFINE-HRESULT
See COM:HRESULT

Package

org.shirakumo.com-on

Source

error.lisp (file)

Function: create CLASS INSTANCE

Create an instance of a COM class.

CLASS should be the GUID of the COM class. Typically named something like CLSID_...

INSTANCE should be the GUID of the COM instance to access. Typically named something like IID_...

Returns the pointer to the COM instance if successful, or signals an error otherwise. You must release this instance when you are done with it by calling RELEASE.

Automatically calls INIT.

See GUID
See WIN32-ERROR
See RELEASE
See INIT
See WITH-COM

Package

org.shirakumo.com-on

Source

com.lisp (file)

Function: create-instance RCLSID PUNKOUTER DWCLSCONTEXT RIID PPV
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Function: error-message &optional ERRNO

Returns the error messag string for the given error code.

Unless specifically supplied, the last caused error code is used.

See COM:GET-LAST-ERROR

Package

org.shirakumo.com-on

Source

error.lisp (file)

Function: format-message FLAGS SOURCE MESSAGE-ID LANGUAGE-ID BUFFER SIZE ARGUMENTS
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Function: get-last-error ()
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Function: guid &rest ID

Create a new GUID instance.

ID may either be multiple values, or a single value determining the GUID’s actual ID values. The following ID types are allowed:

STRING — Parses the string representation of the UUID into its appropriate octets. Such a UUID is typically of the form XXXX-XX-XX-XX-XXXXXX
LIST (16) — Uses the 16 octets in the list to build the internal octet vector.
LIST (11) — Uses the 11 integers in the list to build the octet vector. Specifically, the list should contain integers of the following bit sizes:
32 16 16 8 8 8 8 8 8 8 8
This representation is sometimes found in C headers.
CFFI:FOREIGN-POINTER — Copies the contents from the supplied C pointer to a GUID into the internal byte vector.
VECTOR (16) — Uses the 16 octets in the vector to build the internal octet vector.
NULL — Fills the internal octet vector with 0s.

Supplying any integer anywhere in these values outside of the specified ranges is an error.

See GUID (type)

Package

org.shirakumo.com-on

Source

guid.lisp (file)

Function: guid-data1 POINTER-TO-GUID
Function: (setf guid-data1) VALUE POINTER-TO-GUID
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Function: guid-data2 POINTER-TO-GUID
Function: (setf guid-data2) VALUE POINTER-TO-GUID
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Function: guid-data3 POINTER-TO-GUID
Function: (setf guid-data3) VALUE POINTER-TO-GUID
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Function: guid-data4 POINTER-TO-GUID
Function: (setf guid-data4) VALUE POINTER-TO-GUID
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Function: guid-string GUID-ISH

Returns a standard string representation of the GUID.

The bytes of the GUID are represented in hex format as follows:

3 2 1 0 - 5 4 - 7 6 - 8 9 - 10 11 12 13 14 15

The reordering is due to the little-endian internal representation of the octets. The passed GUID may either be a GUID instance, or a valid GUID identifier from which a GUID can be constructed.

See GUID

Package

org.shirakumo.com-on

Source

guid.lisp (file)

Function: guid= A B

Compares two GUIDs for equality.

Returns T if the two GUIDs are the same, NIL otherwise.

See GUID

Package

org.shirakumo.com-on

Source

guid.lisp (file)

Function: init ()

Initialises the COM system if it has not yet been initialised.

This will load OLE32 and initialise COM for a multi-threaded application.

This function must be called before any COM operations are performed.

Calling this function multiple times is safe.

See SHUTDOWN

Package

org.shirakumo.com-on

Source

com.lisp (file)

Function: initialize NULLABLE INIT
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Function: multi-byte-to-wide-char CODE-PAGE FLAGS MULTI-BYTE-STR MULTI-BYTE WIDE-CHAR-STR WIDE-CHAR
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Function: release POINTER

Release a COM instance.

After releasing a COM instance, you /must not/ access it again, as it may have been deallocated or invalidated.

You may get a COM instance through CREATE or some other API function that returns an instance.

See CREATE
See WITH-COM

Package

org.shirakumo.com-on

Source

com.lisp (file)

Function: shutdown ()

Uninitialises the COM system if it has been initialised.

After this you may not perform any further COM operations.

Calling this function multiple times is safe.

See INIT

Package

org.shirakumo.com-on

Source

com.lisp (file)

Function: string->wstring STRING

Converts a Lisp string to a Windows ’wchar’ string and returns the pointer to this freshly allocated string.

See WSTRING->STRING

Package

org.shirakumo.com-on

Source

error.lisp (file)

Function: uninitialize ()
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Function: vtbl POINTER-TO-COM
Function: (setf vtbl) VALUE POINTER-TO-COM
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Function: wide-char-to-multi-byte CODE-PAGE FLAGS WIDE-CHAR-STR WIDE-CHAR MULTI-BYTE-STR MULTI-BYTE DEFAULT-CHAR USED-DEFAULT-CHAR
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Function: win32-error CODE &key FUNCTION-NAME MESSAGE TYPE

Signals an error of type WIN32-ERROR

Requires the Windows error code.
If no explicit MESSAGE is passed, the message is determined by ERROR-MESSAGE.

See WIN32-ERROR (type)
See ERROR-MESSAGE

Package

org.shirakumo.com-on

Source

error.lisp (file)

Function: wstring->string POINTER &optional CHARS

Converts a Windows ’wchar’ string to a Lisp string and returns it.

See STRING->WSTRING

Package

org.shirakumo.com-on

Source

error.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.4 Generic functions

Generic Function: bytes OBJECT

Returns a 16-octet vector describing the GUID.

Note that the vector elements are in the order expected in the memory representation of the GUID, which may not be entirely intuitive.

See GUID

Package

org.shirakumo.com-on

Methods
Method: bytes (GUID guid)

automatically generated reader method

Source

guid.lisp (file)

Generic Function: code CONDITION

Returns the windows error code associated with the problem.

See WIN32-ERROR

Package

org.shirakumo.com-on

Methods
Method: code (CONDITION win32-error)
Source

error.lisp (file)

Generic Function: function-name CONDITION

Returns the function name that caused the error, if known.

See WIN32-ERROR

Package

org.shirakumo.com-on

Methods
Method: function-name (CONDITION win32-error)
Source

error.lisp (file)

Generic Function: message CONDITION

Returns a descriptive message about the error.

See WIN32-ERROR

Package

org.shirakumo.com-on

Methods
Method: message (CONDITION win32-error)
Source

error.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.5 Conditions

Condition: win32-error ()

Condition type for errors coming from the Windows API.

This condition type is signalled whenever a Windows API call returns unsuccessfully.

See WIN32-ERROR (function)
See FUNCTION-NAME
See CODE
See MESSAGE
See CHECK-LAST-ERROR
See CHECK-HRESULT

Package

org.shirakumo.com-on

Source

error.lisp (file)

Direct superclasses

error (condition)

Direct methods
Direct slots
Slot: function-name
Initargs

:function-name

Initform

(quote nil)

Readers

function-name (generic function)

Slot: code
Initargs

:code

Readers

code (generic function)

Slot: message
Initargs

:message

Initform

(quote nil)

Readers

message (generic function)


Previous: , Up: Exported definitions   [Contents][Index]

5.1.6 Classes

Class: com ()
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Direct superclasses
  • translatable-foreign-type (class)
  • foreign-struct-type (class)
Class: guid ()

Encapsulation for a Windows GUID.

GUIDs are 16 byte identifiers that are used for COM classes and COM instances.

The :ID initarg determines the GUID’s contents. See MAKE-GUID.

A GUID instance may be passed as an argument to a C function where the argument expects a COM:GUID structure pointer.

A GUID instance is usable as a literal and may be dumped to a FASL.

See COM:GUID
See BYTES
See GUID-STRING
See GUID (function)
See DEFINE-GUID

Package

org.shirakumo.com-on

Source

guid.lisp (file)

Direct superclasses

enhanced-foreign-type (class)

Direct methods
  • make-load-form (method)
  • print-object (method)
  • initialize-instance (method)
  • expand-to-foreign-dyn (method)
  • expand-into-foreign-memory (method)
  • expand-from-foreign (method)
  • translate-into-foreign-memory (method)
  • translate-into-foreign-memory (method)
  • free-translated-object (method)
  • translate-from-foreign (method)
  • translate-to-foreign (method)
  • translate-to-foreign (method)
  • translate-aggregate-to-foreign (method)
  • translate-aggregate-to-foreign (method)
  • aggregatep (method)
  • foreign-type-size (method)
  • bytes (method)
Direct slots
Slot: bytes
Initargs

:bytes

Initform

(make-array 16 :element-type (quote (unsigned-byte 8)))

Readers

bytes (generic function)

Direct Default Initargs
InitargValue
:actual-type(quote (:pointer))
Class: guid ()
Package

org.shirakumo.com-on.cffi

Source

bindings.lisp (file)

Direct superclasses
  • translatable-foreign-type (class)
  • foreign-struct-type (class)

Previous: , Up: Definitions   [Contents][Index]

5.2 Internal definitions


Previous: , Up: Internal definitions   [Contents][Index]

5.2.1 Special variables

Special Variable: *initialized*
Package

org.shirakumo.com-on

Source

com.lisp (file)


Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Jump to:   C   F   L  
Index Entry  Section

C
com-on.asd: The com-on․asd file
com-on/bindings.lisp: The com-on/bindings․lisp file
com-on/com.lisp: The com-on/com․lisp file
com-on/documentation.lisp: The com-on/documentation․lisp file
com-on/error.lisp: The com-on/error․lisp file
com-on/guid.lisp: The com-on/guid․lisp file
com-on/package.lisp: The com-on/package․lisp file

F
File, Lisp, com-on.asd: The com-on․asd file
File, Lisp, com-on/bindings.lisp: The com-on/bindings․lisp file
File, Lisp, com-on/com.lisp: The com-on/com․lisp file
File, Lisp, com-on/documentation.lisp: The com-on/documentation․lisp file
File, Lisp, com-on/error.lisp: The com-on/error․lisp file
File, Lisp, com-on/guid.lisp: The com-on/guid․lisp file
File, Lisp, com-on/package.lisp: The com-on/package․lisp file

L
Lisp File, com-on.asd: The com-on․asd file
Lisp File, com-on/bindings.lisp: The com-on/bindings․lisp file
Lisp File, com-on/com.lisp: The com-on/com․lisp file
Lisp File, com-on/documentation.lisp: The com-on/documentation․lisp file
Lisp File, com-on/error.lisp: The com-on/error․lisp file
Lisp File, com-on/guid.lisp: The com-on/guid․lisp file
Lisp File, com-on/package.lisp: The com-on/package․lisp file

Jump to:   C   F   L  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   (  
A   B   C   D   E   F   G   I   M   R   S   U   V   W  
Index Entry  Section

(
(setf guid-data1): Exported functions
(setf guid-data2): Exported functions
(setf guid-data3): Exported functions
(setf guid-data4): Exported functions
(setf vtbl): Exported functions

A
add-hresult: Exported functions

B
bytes: Exported generic functions
bytes: Exported generic functions

C
check-hresult: Exported macros
check-last-error: Exported macros
code: Exported generic functions
code: Exported generic functions
create: Exported functions
create-instance: Exported functions

D
define-comfun: Exported macros
define-comstruct: Exported macros
define-guid: Exported macros
define-hresult: Exported macros

E
error-message: Exported functions

F
format-message: Exported functions
Function, (setf guid-data1): Exported functions
Function, (setf guid-data2): Exported functions
Function, (setf guid-data3): Exported functions
Function, (setf guid-data4): Exported functions
Function, (setf vtbl): Exported functions
Function, add-hresult: Exported functions
Function, create: Exported functions
Function, create-instance: Exported functions
Function, error-message: Exported functions
Function, format-message: Exported functions
Function, get-last-error: Exported functions
Function, guid: Exported functions
Function, guid-data1: Exported functions
Function, guid-data2: Exported functions
Function, guid-data3: Exported functions
Function, guid-data4: Exported functions
Function, guid-string: Exported functions
Function, guid=: Exported functions
Function, init: Exported functions
Function, initialize: Exported functions
Function, multi-byte-to-wide-char: Exported functions
Function, release: Exported functions
Function, shutdown: Exported functions
Function, string->wstring: Exported functions
Function, uninitialize: Exported functions
Function, vtbl: Exported functions
Function, wide-char-to-multi-byte: Exported functions
Function, win32-error: Exported functions
Function, wstring->string: Exported functions
function-name: Exported generic functions
function-name: Exported generic functions

G
Generic Function, bytes: Exported generic functions
Generic Function, code: Exported generic functions
Generic Function, function-name: Exported generic functions
Generic Function, message: Exported generic functions
get-last-error: Exported functions
guid: Exported functions
guid-data1: Exported functions
guid-data2: Exported functions
guid-data3: Exported functions
guid-data4: Exported functions
guid-string: Exported functions
guid=: Exported functions

I
init: Exported functions
initialize: Exported functions

M
Macro, check-hresult: Exported macros
Macro, check-last-error: Exported macros
Macro, define-comfun: Exported macros
Macro, define-comstruct: Exported macros
Macro, define-guid: Exported macros
Macro, define-hresult: Exported macros
Macro, with-com: Exported macros
Macro, with-deref: Exported macros
message: Exported generic functions
message: Exported generic functions
Method, bytes: Exported generic functions
Method, code: Exported generic functions
Method, function-name: Exported generic functions
Method, message: Exported generic functions
multi-byte-to-wide-char: Exported functions

R
release: Exported functions

S
shutdown: Exported functions
string->wstring: Exported functions

U
uninitialize: Exported functions

V
vtbl: Exported functions

W
wide-char-to-multi-byte: Exported functions
win32-error: Exported functions
with-com: Exported macros
with-deref: Exported macros
wstring->string: Exported functions

Jump to:   (  
A   B   C   D   E   F   G   I   M   R   S   U   V   W  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   *  
B   C   F   M   S  
Index Entry  Section

*
*initialized*: Internal special variables

B
bytes: Exported classes

C
clsctx-all: Exported constants
code: Exported conditions
Constant, clsctx-all: Exported constants
Constant, cp-utf8: Exported constants
Constant, format-message-from-system: Exported constants
Constant, format-message-ignore-inserts: Exported constants
cp-utf8: Exported constants

F
format-message-from-system: Exported constants
format-message-ignore-inserts: Exported constants
function-name: Exported conditions

M
message: Exported conditions

S
Slot, bytes: Exported classes
Slot, code: Exported conditions
Slot, function-name: Exported conditions
Slot, message: Exported conditions
Special Variable, *initialized*: Internal special variables

Jump to:   *  
B   C   F   M   S  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   C   G   O   P   S   W  
Index Entry  Section

C
Class, com: Exported classes
Class, guid: Exported classes
Class, guid: Exported classes
com: Exported classes
com-on: The com-on system
Condition, win32-error: Exported conditions

G
guid: Exported classes
guid: Exported classes

O
org.shirakumo.com-on: The org․shirakumo․com-on package
org.shirakumo.com-on.cffi: The org․shirakumo․com-on․cffi package

P
Package, org.shirakumo.com-on: The org․shirakumo․com-on package
Package, org.shirakumo.com-on.cffi: The org․shirakumo․com-on․cffi package

S
System, com-on: The com-on system

W
win32-error: Exported conditions

Jump to:   C   G   O   P   S   W