/*
 * ntdd1394.h
 *
 * Contributors:
 *   Created by Magnus Olsen
 *
 * THIS SOFTWARE IS NOT COPYRIGHTED
 *
 * This source code is offered for use in the public domain. You may
 * use, modify or distribute it freely.
 *
 * This code is distributed in the hope that it will be useful but
 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
 * DISCLAIMED. This includes but is not limited to warranties of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 */

#ifndef _NTDD1394_H_
#define _NTDD1394_H_

#ifdef __cplusplus
extern "C" {
#endif

typedef struct _IEEE1394_VDEV_PNP_REQUEST
{
  ULONG fulFlags;
  ULONG Reserved;
  ULARGE_INTEGER InstanceId;
  UCHAR DeviceId;
} IEEE1394_VDEV_PNP_REQUEST,*PIEEE1394_VDEV_PNP_REQUEST;


typedef struct _IEEE1394_API_REQUEST
{
  ULONG RequestNumber;
  ULONG Flags;
  union
  {
    IEEE1394_VDEV_PNP_REQUEST AddVirtualDevice;
    IEEE1394_VDEV_PNP_REQUEST RemoveVirtualDevice;
  } u;
} IEEE1394_API_REQUEST, *PIEEE1394_API_REQUEST;

#define IEEE1394_API_ADD_VIRTUAL_DEVICE           0x00000001
#define IEEE1394_API_REMOVE_VIRTUAL_DEVICE        0x00000002
#define IEEE1394_REQUEST_FLAG_UNICODE             0x00000001
#define IEEE1394_REQUEST_FLAG_PERSISTENT          0x00000002
#define IEEE1394_REQUEST_FLAG_USE_LOCAL_HOST_EUI  0x00000004
#define BUS1394_VIRTUAL_DEVICE_LIST_KEY           L"Virtual Device List"
#define BUS1394_LOCAL_HOST_INSTANCE_KEY           L"LOCAL HOST EUI64"
#define IOCTL_IEEE1394_API_REQUEST                CTL_CODE(FILE_DEVICE_UNKNOWN, 0x100, METHOD_BUFFERED, FILE_ANY_ACCESS)

#ifdef __cplusplus
}
#endif

#endif /* _NTDD1394_H_ */