If the printer registers itself as a Human Interface Device, you can P/INVOKE into the appropriate Win32 APIs. Here are the signatures:
[ DllImport( "hid.dll", SetLastError=true ) ]
public static extern Boolean
HidD_FlushQueue( SafeFileHandle HidDeviceObject );
[ DllImport( "hid.dll", SetLastError=true ) ]
public static extern Boolean
HidD_FreePreparsedData( ref IntPtr PreparsedData );
[ DllImport( "hid.dll", SetLastError=true ) ]
public static extern Boolean
HidD_GetAttributes( SafeFileHandle HidDeviceObject
, ref HIDD_ATTRIBUTES Attributes );
[ DllImport( "hid.dll", SetLastError=true ) ]
public static extern Boolean
HidD_GetFeature( SafeFileHandle HidDeviceObject
, ref Byte lpReportBuffer
, Int32 ReportBufferLength );
[ DllImport( "hid.dll", SetLastError=true ) ]
public static extern Boolean
HidD_GetInputReport( SafeFileHandle HidDeviceObject
,ref Byte lpReportBuffer
,Int32 ReportBufferLength );
[ DllImport( "hid.dll", SetLastError=true ) ]
public static extern void HidD_GetHidGuid( ref System.Guid HidGuid );
[ DllImport( "hid.dll", SetLastError=true ) ]
public static extern Boolean
HidD_GetNumInputBuffers( SafeFileHandle HidDeviceObject
, ref Int32 NumberBuffers );
[ DllImport( "hid.dll", SetLastError=true ) ]
public static extern Boolean
HidD_GetPreparsedData( SafeFileHandle HidDeviceObject
,ref IntPtr PreparsedData );
[ DllImport( "hid.dll", SetLastError=true ) ]
public static extern Boolean
HidD_SetFeature( SafeFileHandle HidDeviceObject
, ref Byte lpReportBuffer
, Int32 ReportBufferLength );
[ DllImport( "hid.dll", SetLastError=true ) ]
public static extern Boolean
HidD_SetNumInputBuffers( SafeFileHandle HidDeviceObject
,Int32 NumberBuffers );
[ DllImport( "hid.dll", SetLastError=true ) ]
public static extern Boolean
HidD_SetOutputReport( SafeFileHandle HidDeviceObject
,ref Byte lpReportBuffer
,Int32 ReportBufferLength );
[ DllImport( "hid.dll", SetLastError=true ) ]
public static extern Int32
HidP_GetCaps( IntPtr PreparsedData, ref HIDP_CAPS Capabilities );
[ DllImport( "hid.dll", SetLastError=true ) ]
public static extern Int32
HidP_GetValueCaps( Int16 ReportType
, ref Byte ValueCaps
, ref Int16 ValueCapsLength
, IntPtr PreparsedData );