JP5289592B2 - 汎用usbドライバ - Google Patents
汎用usbドライバ Download PDFInfo
- Publication number
- JP5289592B2 JP5289592B2 JP2012015734A JP2012015734A JP5289592B2 JP 5289592 B2 JP5289592 B2 JP 5289592B2 JP 2012015734 A JP2012015734 A JP 2012015734A JP 2012015734 A JP2012015734 A JP 2012015734A JP 5289592 B2 JP5289592 B2 JP 5289592B2
- Authority
- JP
- Japan
- Prior art keywords
- winusb
- usb
- data
- computer
- interface
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47J—KITCHEN EQUIPMENT; COFFEE MILLS; SPICE MILLS; APPARATUS FOR MAKING BEVERAGES
- A47J27/00—Cooking-vessels
- A47J27/08—Pressure-cookers; Lids or locking devices specially adapted therefor
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47J—KITCHEN EQUIPMENT; COFFEE MILLS; SPICE MILLS; APPARATUS FOR MAKING BEVERAGES
- A47J27/00—Cooking-vessels
- A47J27/004—Cooking-vessels with integral electrical heating means
-
- A—HUMAN NECESSITIES
- A47—FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
- A47J—KITCHEN EQUIPMENT; COFFEE MILLS; SPICE MILLS; APPARATUS FOR MAKING BEVERAGES
- A47J36/00—Parts, details or accessories of cooking-vessels
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S220/00—Receptacles
- Y10S220/912—Cookware, i.e. pots and pans
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Food Science & Technology (AREA)
- Information Transfer Systems (AREA)
- Stored Programmes (AREA)
- Power Sources (AREA)
Description
図1は、汎用デバイスドライバのための例示的システム100を例示する。本明細書の図1および2における矢印の方向は、一実施態様によるデータの流れの方向を指示する。システム100には、カーネルモード環境102およびユーザモード環境104が含まれる。カーネルモード環境102にはUSBのコアスタック106が含まれ、USBのコアスタック106はOSの一部である場合があり、USBデバイスとの通信をハードウェアレベルで可能にする。USBのコアスタック106はハブ機能を促進することができ、これをさらに、図2を参照して説明する。USBのコアスタック106は、汎用USBドライバ108に結合される。汎用USBドライバ108はUSBデバイスのI/Oを管理し、より一般には、USBデバイスをユーザモード環境104に接続する。
図2は、複数の装置のための汎用デバイスドライバが複数の場合の、例示的システム200を例示する。システム200には、カーネルモード環境102、ユーザモード環境104、USBのコアスタック106、汎用USBのユーザモードのライブラリ110、および、USBユーザのソフトウェアコンポーネント112が含まれる。
したがって、各GUID210は、対応する装置によってサポートされた機能を識別し、これらの機能を、USBのユーザモードのソフトウェアコンポーネント112によって利用することができる。例えば、ユーザモードのソフトウェアコンポーネントは、それらの重要なGUIDを接続するいかなるドライバをも検索して、所望の機能性をサポートする装置を発見するようになる。USBのユーザモードのソフトウェアコンポーネント112は次いでUSBデバイスと、図1を参照して説明したように汎用USBのユーザモードのライブラリ110を通じて通信することができる。
図3は、汎用デバイスドライバを利用するための例示的方法300を例示する。プラグアンドプレイ(PNP)モジュール(例えば、OS内に常駐する)によって検出することができる、プラグインのイベントが発生すると(302)、コアスタック(例えば、図1および2の106)は、プラグインされた装置に対応するデバイスIDを抽出する。抽出されたデバイスIDは、PNPモジュールによって提供または検出され(306)、PNPモジュールは、抽出されたデバイスIDを汎用ドライバ(例えば、図2の108)と突き合わせる(308)。
図4は、汎用デバイスドライバにおけるI/Oを処理するための例示的方法400を例示する。一実施態様では、方法400では、ユーザのソフトウェアコンポーネント(例えば、図1および2の112)は、少数のルーチンをコールすることによって、ハードウェア特定のI/O処理を汎用デバイスドライバ(例えば、図1および2の108)に任せることを可能にする。例えば、ユーザのソフトウェアコンポーネントは単に、汎用USBのユーザモードのライブラリ(例えば、図1の110)を通じて提供された初期化、読み取り/書き込み、およびコマンドの解放を発行し、特定のデータ長の処理(consideration)、データの断片化、および/またはデータの再アセンブリを汎用デバイスドライバに任せることができる。
1つまたは複数の例示的APIを以下で例示し、これらのAPIをMicrosoftのWindows(登録商標)環境内で利用して、図1および2を参照して説明したルーチンを提供することができる。例えば、ルーチン(例えば、図1および2の汎用USBのユーザモードのライブラリ110の中にある)は、以下の動作(以下でさらに説明する)をサポートすることができる。
・ GUIDのデバイスインターフェースのクラスに関連付けられたUSBのデバイスインターフェースを列挙し、ベンダにより供給されたコールバックのルーチンを用いて、これらのインターフェースをフィルタリングすること、
・ USBデバイスのいくつかのインターフェースを選択的に起動状態にし、他のインターフェースを使用しない状態のままにすること、
・ 標準のコントロール転送の要求を生成すること、および/または
・ コントロール、バルク、割り込み、および等時性のデータを伝送すること。
WinUsb_Initializeの関数は、WinUsbのデータ構造体を初期化する。この関数がコールされる場合、ポリシー設定はデフォルト値にリセットされることに留意されたい。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_Initialize(
IN HANDLE DeviceHandle,
OUT PWINUSB_INTERFACE_HANDLE InterfaceHandle
);
(DeviceHandle)
ファイルを作成するためのルーチン(例えば、CreateFile)によって戻された装置へのハンドル。WinUsbはオーバーラップされたI/Oを使用して、フラッグ(例えば、FILE_FLAG_OVERLAPPED)がCreateFileコールにおいて指定されるべきであるようにする。
これは、他のすべてのWinUSBのAPI関数コールのために使用することができる、インターフェースのハンドルである。これは、WinUSBによって生成される不透明なハンドル(opaque handle)である。
この関数は、成功した場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WinUsb_Freeの関数は、WinUsb_Initializeによって割り振られたすべてのリソースを解放する。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_Free(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
この関数は、成功した場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WinUsb_QueryAlternateInterfaceの関数は、特定のインターフェースのハンドルのための第1の代替のインターフェースの記述子を戻す。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_QueryAlternateInterface(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN UCHAR AlternateInterfaceNumber,
OUT PUSB_INTERFACE_DESCRIPTOR UsbAltInterfaceDescriptor
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、戻すべき代替のインターフェースを指示する値である。0の値は、第1の代替のインターフェースを指示し、1の値は、第2の代替のインターフェースを指示する、などとなる。
コール側によって割り振られたUSB_INTERFACE_DESCRIPTORの構造体へのポインタ。
この関数は、成功し、構造体をポピュレート(populate)した場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WinUsb_QueryDeviceinformationの関数は、WINUSBインターフェースに関連付けられる物理デバイスについての情報を戻す。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_QueryDeviceInformation(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN ULONG InformationType,
IN OUT PULONG BufferLength,
OUT PVOID Buffer
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、どのインターフェースの情報の値を検索するべきであるかを指定する値である。
これは、バイト単位のBufferの長さ、すなわち、読み取るべき最大のバイト数である。このパラメータを、Bufferにコピーされた実際のバイトの数に設定することができる。
これは、要求された値を受信する、コール側によって割り振られたバッファである。
この関数は、成功し、構造をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
以下のリストは、可能性のあるInformationTypeの値を説明する。
この要求は、以下の値のうち1つを、装置の速度に基づいて戻すようになる。
LowSpeed(0x01)
FullSpeed(0x02)
HighSpeed(0x03)
この値は、装置の物理デバイスの識別子を含む。
WinUsb_GetDescriptorの関数は、要求された記述子を戻す。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_GetDescriptor(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN UCHAR DescriptorType,
IN UCHAR Index,
IN USHORT LanguageID,
OUT PUCHAR Buffer,
IN ULONG BufferLength,
OUT PULONG LengthTransferred
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、戻すべき記述子のタイプを指定する値である。標準の値については、非特許文献1のUSB仕様を参照することができる。
これは記述子インデックスであり、非特許文献1のUSB仕様において文書化されている。
要求された記述子が文字列の記述子である場合、これは言語の識別子を指定する値である。
これは、要求された記述子を受信する、コール側によって割り振られたバッファである。
これは、バイト単位のBufferの長さ、すなわち、読み取るべき最大のバイト数である。
これは、Bufferにコピーされた実際のバイトの数を受信する。
この関数は、成功し、構造をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、PUSB_INTERFACE_DESCRIPTORの構造体のbInterfaceNumberメンバに含まれた値であり、WinUsb_QueryAlternateInterfaceによってポピュレートされたものである。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WinUsb_GetCurrentAlternateInterface関数は、インターフェースのための現在の代替のインターフェースの設定を得る。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_GetCurrentAlternateInterface(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
OUT PUCHAR InterfaceNumber
);
(InterfaceHandle)
これは、WinUsb_Initializeから戻されたインターフェースのハンドルである。
これは、現在選択された代替のインターフェースを受信するようになる、UCHARへのポインタである。
この関数は、関数が成功し、構造体をポピュレートする場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorへのコールによって検索することができる。
WinUsb_QueryPipeの関数は、インターフェースに関連付けられる、指定されたパイプについてのパイプの情報を戻す。デフォルトのコントロールのパイプは戻されない場合があることに留意されたい。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_QueryPipe(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN UCHAR AlternateInterfaceNumber,
IN UCHAR PipeIndex,
OUT PWINUSB_PIPE_INFORMATION PipeInformation
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、情報が戻されるべき先の代替のインターフェースを指定する値である。
これは、情報が戻されるべき先のパイプを指定する値である。この値は、一実施態様では、PipeIdと同じではない。そうではなく、この値は、インターフェースのリストにおけるパイプを表現する。0の値は第1のパイプを示し、1の値は第2のパイプを示す、などとなる。この値は、インターフェースの記述子におけるbNumEndpointsより小さくなるべきである。
これは、コール側によって割り振られたWINUSB_PIPE_INFORMATIONの構造体へのポインタである。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WINUSB_PIPE_INFORMATIONの構造体の定義を、以下のようにすることができる。
typedef struct_WINUSB_PIPE_INFORMATION {
USBD_PIPE_TYPE PipeType;
UCHAR PipeId;
USHORT MaximumPacketSize;
UCHAR Interval;
} WINUSB_PIPE_INFORMATION, *PWINUSB_PIPE_INFORMATION;
WinUsb_SetPipePolicyの関数は、特定のパイプ(エンドポイント)のポリシーを設定する。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_SetPipePolicy(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN UCHAR PipeID,
IN ULONG PolicyType,
IN ULONG ValueLength,
IN ULONG_PTR Value
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、パイプのポリシーを設定するためのパイプに属するパイプの識別子である。
これは、変更するべきポリシーパラメータを指定する値である。
これは、Valueが指すバッファの、バイト単位の長さであり、あるいは、Valueがバッファを指さない場合、ゼロである。
PolicyTypeによって指定されるポリシーのパラメータのための新しい値。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
以下のリストは、可能性のあるPolicyType値を説明する。
ValueがTRUEである(ゼロではない)場合、エンドポイントのための最大パケットサイズの倍数であるあらゆるWRITE(OUT)要求は、ゼロの長さのパケットにより終了される。デフォルトはFALSEである。
ValueがTRUEである(ゼロではない)場合、停止のPIDは無視されるようになり、先入れ先出し(FIFO)のバッファリングが使用中でない限り、エラーが戻されるようになる。この場合、しかし、パイプは停止されないようになり、データは流れ続けるようになる。このパラメータはCONTROLのパイプに影響を及ぼさない。ホストが自動的に装置の停止状態をクリアすることに留意されたい。デフォルトはFALSEである。
Valueは、転送が後にキャンセルされるべきである、ミリ秒単位の合計時間である。ゼロの値は、無限大の合計時間を示す。デフォルトは無限大の合計時間である。
ValueがTRUEである(ゼロではない)場合、読み取り操作は、ショートパケットを受信する場合、完了しないようになる。その代わりに、この操作は、指定されたバイト数が読み取られる場合のみ完了するようになる。ValueがFALSEである場合、読み取り操作は、指定されたバイト数が読み取られるか、あるいはショートパケットを受信する場合、完了するようになる。デフォルトはFALSEである。
ValueがFALSE(ゼロ)である場合、読み取り要求は、装置が要求されたよりも多くのデータを戻す場合、失敗するようになる。ValueがTRUEである場合、余分なデータが保存され、この余分なデータは、次に来る読み取り要求のためのデータの開始で戻される。デフォルトはTRUEである。
ValueがFALSE(ゼロ)であり、装置が要求されたよりも多くのデータを戻す場合、残りのデータは廃棄されるようになる。ValueがTRUEである場合、ビヘイビアは、ALLOW_PARTIAL_READSの値によって決まる。データは保存され、次いで次に来る読み取り要求のためのデータの開始で戻されるようになるか、あるいは、要求は失敗するようになる。デフォルトはFALSEである。
これは、ユーザのソフトウェアコンポーネント(図1〜2の112など)が適切なデータ処理を保証することを可能にする。ユーザのソフトウェアコンポーネントによって提供されたデータが不適切なフォーマットである場合、データはフラッシュ(flush)される場合がある。
WinUsb_GetPipePolicyの関数は、特定のパイプ(エンドポイント)のポリシーを得る。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_GetPipePolicy(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN UCHAR PipeID,
IN ULONG PolicyType,
IN OUT PULONG ValueLength,
OUT PVOID Value
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、パイプのポリシーを得るためのパイプに属するパイプの識別子である。
これは、得るべきポリシーのパラメータを指定する値である。
これは、Valueが指すバッファの長さへのポインタである。出力で、このパラメータは、Valueのバッファにコピーされたデータの長さを受信する。
これは、指定されたパイプのポリシーを受信するバッファへのポインタである。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WinUsb_SetFifoPolicyの関数は、特定のパイプ(エンドポイント)のポリシーを設定する。このAPIをコールするための例示的メソッドは以下の通りである。
B00L_stdcall
WinUsb_SetFifoPolicy(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN UCHAR PipeID,
IN ULONG PolicyType,
IN ULONG ValueLength,
IN ULONG_PTR Value
) ;
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、パイプのポリシーを設定するためのパイプに属するパイプの識別子である。
これは、変更するべきポリシーのパラメータを指定する値である。
これは、Valueが指すバッファのバイト単位の長さであり、あるいは、Valueがバッファを指さない場合、ゼロである。
これは、PolicyTypeによって指定されるポリシーのパラメータのための新しい値である。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
以下のリストは、可能性のあるPolicyTypeの値を説明する。
Valueは、FIFOの入力バッファの、バイト単位のサイズである。デフォルト値は16×MaxPacketSizeである。この制限に到達する場合、データは失われるようになる。
Valueは、コールバックの関数がコールされる前にFIFOのバッファ内に存在するべきであるバイト数である。IGNORE_SHORT_PACKETSがFALSEであり、ショートパケットを受信する場合、いずれにしてもコールバックの関数がコールされるようになる。
WinUsb_GetFifoPolicyの関数は、特定のパイプ(エンドポイント
)のポリシーを得る。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_GetFifoPolicy(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN UCHAR PipeID,
IN ULONG PolicyType,
IN OUT PULONG ValueLength,
OUT PVOID Value
) ;
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、パイプのポリシーを得るためのパイプに属するパイプの識別子である。
これは、得るべきポリシーのパラメータを指定する値である。
これは、Valueが指すバッファの長さへのポインタである。出力で、このパラメータは、Valueバッファにコピーされたデータの長さを受信する。
これは、指定されたFIFOのポリシーのパラメータを受信するバッファへのポインタである。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WinUsb_StartFifoの関数は、データを装置からFIFOのバッファに読み込む自動的な読み込みのメカニズムを起動する。データがこのバッファに追加されるとき、FifoDataNotificationの関数がコールされ、この関数は、クライアントにデータの存在を通知する。クライアントは次いで、データをFIFOのバッファから読み取るための要求を発行することができる。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_StartFifo(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN UCHAR PipeID,
IN PWINUSB_NOTIFICATION_CALLBACK FifoDataNotification,
IN PVOID FifoDataNotificationContext
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、影響を及ぼすべきパイプに属するパイプの識別子である。
これは、通知のしきい値に到達する場合にコールされるべき、オプションのコールバックの関数である。
これは、FifoDataNotificationのコールバックの関数に渡されるべき、オプションのコンテキストである。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
PWINUSB_NOTIFICATION_CALLBACKの型宣言は、以下の通りである。
typedef
VOID
(*PWINUSB_NOTIFICATION_CALLBACK)(
WINUSB_INTERFACE_HANDLE InterfaceHandle,
UCHAR PipeID,
ULONG NotificationType,
PVOID NotificationParameter,
PVOID Context
);
WinUsb_StopFifoの関数は、自動的な読み込みのメカニズムを停止させる。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_StopFifo(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN UCHAR PipeID
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、影響を及ぼすべきパイプに属するパイプの識別子である。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WinUsb_ReadFifoの関数は、データをパイプのFIFOのバッファから読み取る。USBのパケットサイズは、読み取り要求のための転送を考慮に入れないことに留意されたい。装置が、クライアントのバッファに対して大きすぎるパケットにより応答する場合、ALLOW_PARTIAL_READSがTRUEである場合は、データは次の転送の開始で追加される。ALLOW_PARTIAL_READSがFALSEである場合、読み取り要求は失敗するようになる。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_ReadFifo(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN UCHAR PipeID,
OUT PUCHAR Buffer,
IN ULONG BufferLength,
OUT PULONG LengthTransferred,
IN LPOVERLAPPED Overlapped
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、バッファから読み取るべきパイプの識別子である。
これは、データを読み込むべき、コール側によって割り振られたバッファである。
これは、バイト単位のBufferの長さ、すなわち、読み取るべき最大のバイト数である。
これは、Bufferにコピーされた実際のバイト数を受信する、ULONGへのポインタである。
これは、OVERLAPPEDの構造体へのオプションのポインタであり、非同期の操作のために使用される。このパラメータが指定される場合、この関数は即時に戻るようになり、操作が完了するとき、イベントを信号で伝える。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WinUsb_ReadPipeの関数は、データをパイプから読み取る。USBのパケットサイズは、読み取り要求のための転送を考慮に入れないことに留意されたい。装置が、クライアントバッファに対して大きすぎるパケットにより応答する場合、ALLOW_PARTIAL_READSがTRUEである場合は、データは次の転送の開始で追加される。ALLOW_PARTIAL_READSがFALSEである場合、読み取り要求は失敗するようになる。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_ReadPipe(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN UCHAR PipeID,
IN PUCHAR Buffer,
IN ULONG BufferLength,
OUT PULONG LengthTransferred,
IN LPOVERLAPPED Overlapped
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、パイプから読み取るべきパイプの識別子である。
これは、データを読み込むべき、コール側によって割り振られたバッファである。
これは、バイト単位のBufferの長さ、すなわち、読み取るべき最大のバイト数である。
これは、Bufferにコピーされた実際のバイト数を受信する、ULONGへのポインタである。
これは、OVERLAPPEDの構造体へのオプションのポインタであり、非同期の操作のために使用される。このパラメータが指定される場合、この関数は即時に戻るようになり、操作が完了するとき、イベントを信号で伝える。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WinUsb_WritePipeの関数は、データをパイプに書き込む。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_WritePipe(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN UCHAR PipeID,
IN PUCHAR Buffer,
IN ULONG BufferLength,
OUT PULONG LengthTransferred,
IN LPOVERLAPPED Overlapped
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、書き込むべきパイプの識別子である。
これは、書き込むべきデータを含む、コール側によって割り振られたバッファである。
これは、書き込むべきバイト数である。
これは、パイプに書き込まれた実際のバイト数を受信する、ULONGへのポインタである。
これは、OVERLAPPEDの構造体へのオプションのポインタであり、非同期の操作のために使用される。このパラメータが指定される場合、この関数は戻るようになり、操作が完了するとき、イベントを信号で伝える。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WinUsb_ControlTransferの関数は、データを、デフォルトのコントロールのエンドポイントを介して送信する。このAPIをコールするための例示的メ
ソッドは以下の通りである。
BOOL_stdcall
WinUsb_ControlTransfer(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN WINUSB_SETUP_PACKET SetupPacket,
IN PUCHAR Buffer,
IN ULONG BufferLength,
OUT PULONG LengthTransferred,
IN LPOVERLAPPED Overlapped
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、8バイトのセットアップのパケットである。
これは、転送するべきデータを含む、コール側によって割り振られたバッファである。
これは、転送するべきバイト数であり、セットアップのパケットを含まない。
これは、転送された実際のバイト数を受信する、ULONGへのポインタである。
これは、OVERLAPPEDの構造体へのオプションのポインタであり、非同期の操作のために使用される。このパラメータが指定される場合、この関数は即時に戻るようになり、操作が完了するとき、イベントを信号で伝える。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WINUSB_SETUP_PACKETの構造体宣言は、以下の通りである。
typedef struct_WINUSB_SETUP_PACKET {
UCHAR RequestType;
UCHAR Request;
USHORT Value;
USHORT Index;
USHORT Length;
} WINUSB_SETUP_PACKET, *PWINUSB_SETUP_PACKET;
WinUsb_ResetPipeの関数は、データのトグルをリセットし、パイプ上の停止状態をクリアする。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_ResetPipe(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN UCHAR PipeID
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、コントロールのパイプの識別子である。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WinUsb_AbortPipeの関数は、パイプに対して保留中の転送をすべてアボートする。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_AbortPipe(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN UCHAR PipeID
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、コントロールのパイプの識別子である。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WinUsb_FlushPipeの関数は、クライアントが要求したよりも多くのデータを装置が戻す結果として、保存されたいかなるデータをも廃棄する。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_FlushPipe(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN UCHAR PipeID
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、コントロールのパイプの識別子である。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
図5は、汎用デバイスドライバにおける電源管理を提供するための例示的方法500を例示する。一実施態様では、方法500は、コンピューティングシステム(図6を参照して説明するものなど)が、装置(図1〜4を参照して説明したものなど)をコンピューティングシステムに接続する間に、低電力状態に入ることを可能にする。
るべきである。これを、WM_POWERBROADCASTのメッセージから決定することができる。
WinUsb_SetInterfacePowerPolicyの関数は、装置の電源のポリシーを設定する。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_SetInterfacePowerPolicy(
WINUSB_INTERFACE_HANDLE InterfaceHandle,
ULONG PolicyType,
ULONG ValueLength,
ULONG_PTR Value
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、変更するべきポリシーのパラメータを指定する値である。
これは、Valueが指すバッファのバイト単位の長さであり、あるいは、Valueがバッファを指さない場合、ゼロである。
これは、PolicyTypeによって指定されるポリシーのパラメータのための新しい値である。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
以下のリストは、可能性のあるPolicyType値を説明する。
ValueがTRUEである(ゼロではない)場合、装置は、転送が保留中でない場合、休止されるようになる。デフォルトはTRUEである。
装置がWAKEをサポートする場合、ValueをTRUEに設定する。デフォルトはFALSEである。
VALUEは、いずれかの転送の後から装置を休止することができるようになる前までに、ドライバが待機するべきである、ミリ秒単位の最小の合計時間である。デフォルトは5秒である。
WinUsb_GetInferfacePowerPolicyの関数は、装置の電源のポリシーを得る。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_GetInterfacePowerPolicy(
IN WINUSB_INTERFACE_HANDLE InterfaceHandle,
IN ULONG PolicyType,
IN OUT PULONG ValueLength,
OUT PVOLD Value
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
これは、得るべきポリシーのパラメータを指定する値である。
これは、Valueが指すバッファの長さへのポインタである。出力で、このパラメータは、Valueのバッファにコピーされたデータの長さを受信する。
これは、指定された電源のポリシーを受信するバッファへのポインタである。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WinUsb_EnableInterfaceIdleの関数は、インターフェースがアイドルであり、オペレーティングシステムが装置の電源を落とすことができること(USBの休止)を指示する。これは、ユーザモードのクライアントが選択的な休止をどのようにサポートするかである。パイプの1つへのいかなるアクセス(読み取りまたは書き込み)も、自動的にインターフェースをアイドル状態から引き出し、アイドル状態のクエリが提供されないようにする。この関数をコールすることは、装置が休止されるようになることを保証せず、装置がUSBの休止状態を現在サポートすることができるという提案でしかない。FIFOのバッファが実行中である場合、装置が実際に休止されるまで、FIFOのバッファは実行し続けるようになる。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_EnableInterfaceIdle(
WINUSB_INTERFACE_HANDLE InterfaceHandle
);
(InterfaceHandle)
これは、WinUsb_Initializeによって戻されたインターフェースのハンドルである。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
WinUsb_DisableInterfaceIdleの関数は、装置が休止されることを防止するか、あるいは、装置がすでに休止されている場合、装置を復帰する。このAPIをコールするための例示的メソッドは以下の通りである。
BOOL_stdcall
WinUsb_DisableInterfaceIdle(
WINUSB_INTERFACE_HANDLE InterfaceHandle
);
(InterfaceHandle)
WinUsb_Initializeによって戻されたインターフェースのハンドル。
この関数は、成功し、構造体をポピュレートした場合、TRUEを戻す。そうでない場合、この関数はFALSEを戻し、エラーログは、GetLastErrorをコールすることによって検索することができる。
一実施態様では、セキュリティは、汎用デバイスドライバ108におけるIoRegisterDeviceInterfaceによって作成された名前付きデバイスオブジェクトを通じて提供される。セキュリティの属性をこのシンボリックリンクについて指定し、それを開くことができるものを制限することができる。
図6は、本明細書で説明する技術を実装するために使用することができる、汎用コンピュータ環境600を例示する。例えば、コンピュータ環境600を利用して、汎用デバイスドライバ(108)、汎用のユーザモードのライブラリ(110)および/またはユーザのソフトウェアコンポーネント(112)を含む、OSを実行することができる。汎用コンピュータ環境600はコンピューティング環境の一実施例でしかなく、コンピュータおよびネットワークアーキテクチャの使用または機能の範囲についてのいかなる限定をも示唆するように意図されない。汎用コンピュータ環境600はまた、例示的コンピュータ環境600において例示した構成要素のいずれか1つまたは組合せに関係する、いかなる依存性または要件をも有するものとして、解釈されるべきではない。
ができる。
このように、本発明を、構造的特徴および/または方法論的動作に特有の言語で説明したが、付属の特許請求の範囲において定義された本発明は、説明した特定の特徴または動作に必ずしも限定されるとは限らないことを理解されたい。例えば、本明細書で説明した技術を、有線または無線通信チャネル(ブルートゥース、small computer system interface(SCSI)など)に適用することができる。したがって、特定の特徴および動作は、主張された本発明を実装する例示的形態として開示される。
Claims (2)
- コンピュータが実行する方法であって、
コンピューティングシステムにプラグインされるUSBデバイスの電力管理ポリシーを定義するステップであって、前記USBデバイスは、汎用のユーザモードライブラリ、および、カーネルモードの汎用デバイスドライバを含み、
前記電力管理ポリシーは、前記汎用のユーザモードライブラリによって提供される複数のルーチンを介して定義され、前記複数のルーチンは、アプリケーションプログラミングインタフェースとして実行され、前記カーネルモードの汎用デバイスドライバは、前記コンピューティングシステムにプラグインされる各USBデバイスに対して、または、前記USBドライバの各機能に対してロードされ、前記カーネルモードの汎用デバイスドライバは、前記USBデバイスが前記コンピューティングシステムにプラグインされるときに複数のUSBドライバが動作可能となるように構成される、ステップと、
前記コンピューティングシステムにプラグインされた前記USBデバイスの前記USBドライバが前記定義された電力管理ポリシーの使用により前記USBデバイスの一時停止状態のモードを使用することを決定するステップと、
前記USBデバイスがユーザモードのソフトウェアコンポーネントを実行することにより、前記USBデバイスが前記コンピューティングシステムに接続されるまでの間に、前記コンピューティングシステムが低電力状態に切り替えるよう前記一時停止状態のモードを使用開始するステップであって、前記汎用のユーザモードライブラリは、前記ユーザモードのソフトウェアコンポーネントがカーネルモードの環境よりもむしろユーザモードの環境においてルーチンを実行することにより前記USBデバイスを管理する、ステップと、
前記USBデバイスがいったん前記一時停止状態のモードを使用開始すると、前記コンピューティングシステムを低電力状態に切り替えるステップと
を含むことを特徴とする方法。 - 請求項1に記載の方法をコンピュータに実行させるためのコンピュータ可読命令を格納する1つまたは複数のコンピュータ読み取り可能記憶媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/837,444 US7802022B2 (en) | 2004-04-29 | 2004-04-29 | Generic USB drivers |
US10/837,444 | 2004-04-29 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005129812A Division JP5021180B2 (ja) | 2004-04-29 | 2005-04-27 | 汎用usbドライバ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012128865A JP2012128865A (ja) | 2012-07-05 |
JP5289592B2 true JP5289592B2 (ja) | 2013-09-11 |
Family
ID=34939567
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005129812A Expired - Fee Related JP5021180B2 (ja) | 2004-04-29 | 2005-04-27 | 汎用usbドライバ |
JP2012015732A Expired - Fee Related JP5209125B2 (ja) | 2004-04-29 | 2012-01-27 | 汎用usbドライバ |
JP2012015734A Expired - Fee Related JP5289592B2 (ja) | 2004-04-29 | 2012-01-27 | 汎用usbドライバ |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005129812A Expired - Fee Related JP5021180B2 (ja) | 2004-04-29 | 2005-04-27 | 汎用usbドライバ |
JP2012015732A Expired - Fee Related JP5209125B2 (ja) | 2004-04-29 | 2012-01-27 | 汎用usbドライバ |
Country Status (5)
Country | Link |
---|---|
US (3) | US7802022B2 (ja) |
EP (1) | EP1591891A3 (ja) |
JP (3) | JP5021180B2 (ja) |
KR (1) | KR101130474B1 (ja) |
CN (1) | CN100565484C (ja) |
Families Citing this family (102)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW595127B (en) * | 2003-04-09 | 2004-06-21 | Wistron Neweb Corp | Method and apparatus for power management of electronic device |
US20060004929A1 (en) * | 2004-06-30 | 2006-01-05 | International Business Machines Corporation | Method and apparatus for recovering from inefficient behavior of devices on I/O buses |
US8341649B2 (en) * | 2004-07-06 | 2012-12-25 | Wontok, Inc. | System and method for handling an event in a computer system |
US7765558B2 (en) * | 2004-07-06 | 2010-07-27 | Authentium, Inc. | System and method for handling an event in a computer system |
WO2006085305A2 (en) * | 2005-02-08 | 2006-08-17 | Eliezer Kantorowitz | Environment-independent software |
JP4966505B2 (ja) * | 2005-03-24 | 2012-07-04 | ブラザー工業株式会社 | パケット通信システム |
JP2006344159A (ja) * | 2005-06-10 | 2006-12-21 | Toshiba Information Systems (Japan) Corp | 共通バス接続デバイス用通信制御装置 |
KR100775210B1 (ko) * | 2005-11-22 | 2007-11-12 | 엘지전자 주식회사 | 범용 시리얼 버스 통신 장치 프로그램 업데이트 방법 |
KR100757229B1 (ko) * | 2005-12-05 | 2007-09-10 | 한국전자통신연구원 | 리눅스 시스템상에서 usb 디바이스 드라이버 개발을지원하는 운영체제 자원 진단 장치 및 방법 |
KR100740252B1 (ko) * | 2006-01-06 | 2007-07-18 | (주)하이비젼시스템 | 동일 브이아이디/피아이디를 이용한 유에스비인터페이스방법 |
US8882561B2 (en) * | 2006-04-07 | 2014-11-11 | Mattel, Inc. | Multifunction removable memory device with ornamental housing |
US8146163B2 (en) * | 2006-11-09 | 2012-03-27 | International Business Machines Corporation | Method and system for securing personal computing devices from unauthorized data copying and removal |
US8316138B2 (en) * | 2006-11-24 | 2012-11-20 | Awind Inc. | Plug-and-show USB portable disk |
EP2102753A4 (en) * | 2006-12-22 | 2013-01-02 | Elektrobit Wireless Comm Oy | ELECTRONIC DEVICE AND COMPUTER PROGRAM |
EP1970832B1 (en) * | 2007-03-16 | 2013-08-21 | Research In Motion Limited | Restricting access to hardware for which a driver is installed on a computer |
US8347354B2 (en) | 2007-03-16 | 2013-01-01 | Research In Motion Limited | Restricting access to hardware for which a driver is installed on a computer |
US8035401B2 (en) * | 2007-04-18 | 2011-10-11 | Cypress Semiconductor Corporation | Self-calibrating driver for charging a capacitive load to a desired voltage |
US20080288709A1 (en) * | 2007-05-15 | 2008-11-20 | Imagestream Internet Solutions | Wide area network connection platform |
TW200915058A (en) * | 2007-09-19 | 2009-04-01 | Asustek Comp Inc | A computer, a power saving method and a method for reducing output current |
US8365201B2 (en) * | 2007-12-14 | 2013-01-29 | Microsoft Corporation | Multi-function device ID with unique identifier |
GB2456019A (en) * | 2007-12-31 | 2009-07-01 | Symbian Software Ltd | Loading dynamic link libraries in response to an event |
US8027671B2 (en) | 2008-01-14 | 2011-09-27 | Penthera Partners, Inc. | Delivering files to a mobile device |
US8365202B2 (en) * | 2008-02-04 | 2013-01-29 | Microsoft Corporation | Framework for computing device with auxiliary display |
JP4482044B2 (ja) * | 2008-03-18 | 2010-06-16 | 株式会社東芝 | 情報処理装置およびデバイスコントローラの駆動制御方法 |
WO2009151888A2 (en) * | 2008-05-19 | 2009-12-17 | Authentium, Inc. | Secure virtualization system software |
US9081902B2 (en) * | 2008-06-20 | 2015-07-14 | Microsoft Technology Licensing, Llc. | Generalized architecture to support representation of multi-transport devices |
JP5163950B2 (ja) * | 2008-07-11 | 2013-03-13 | 株式会社リコー | 情報処理装置、クラスモジュール起動制御方法及びプログラム |
US8385599B2 (en) * | 2008-10-10 | 2013-02-26 | Sri International | System and method of detecting objects |
JP2010094942A (ja) * | 2008-10-20 | 2010-04-30 | Canon Inc | インクジェット記録システム及びインクジェット記録装置 |
US20100199290A1 (en) * | 2009-02-02 | 2010-08-05 | Richard Thomas Kavanaugh | System and method for multifunction device enumeration |
WO2011008199A1 (en) * | 2009-07-14 | 2011-01-20 | Penthera Partners, Inc. | Delivering files to a mobile device |
JP2011048503A (ja) * | 2009-08-25 | 2011-03-10 | Kyocera Mita Corp | 画像形成装置 |
WO2011073822A1 (en) * | 2009-12-16 | 2011-06-23 | Koninklijke Philips Electronics N.V. | Universal medical device driver adapter |
JP5556171B2 (ja) * | 2009-12-29 | 2014-07-23 | セイコーエプソン株式会社 | 制御装置、制御システム、及び、制御方法 |
US8452995B1 (en) * | 2009-12-29 | 2013-05-28 | Amazon Technologies, Inc. | Universal serial bus low power idle mode |
US8200853B2 (en) * | 2010-01-14 | 2012-06-12 | Microsoft Corporation | Extensions for USB driver interface functions |
TWM393937U (en) * | 2010-01-22 | 2010-12-01 | Tenx Technology Inc | Plug-and-play audio device |
CN101835290B (zh) * | 2010-04-08 | 2015-06-03 | 中兴通讯股份有限公司 | 一种路由器及共用无线终端上网的系统、方法 |
US8166211B2 (en) * | 2010-06-07 | 2012-04-24 | Vmware, Inc. | Safely sharing USB devices |
GB201010674D0 (en) * | 2010-06-24 | 2010-08-11 | Avin Electronics Ltd | Power control module |
CN102385435A (zh) * | 2010-08-27 | 2012-03-21 | 宏达国际电子股份有限公司 | 动态调整电子装置运作模式的方法及电子装置 |
CN102081581B (zh) * | 2010-10-01 | 2013-10-30 | 威盛电子股份有限公司 | 电源管理系统及方法 |
KR101761126B1 (ko) * | 2011-08-12 | 2017-07-25 | 삼성전자 주식회사 | Usb 장치, 및 그것을 포함하는 usb 시스템 |
US9716743B2 (en) | 2011-09-02 | 2017-07-25 | Microsoft Technology Licensing, Llc | Accessing hardware devices using web server abstractions |
CN102339265B (zh) * | 2011-10-17 | 2017-08-11 | 中兴通讯股份有限公司 | 一种无线通信终端及其驱动方法 |
US9354748B2 (en) | 2012-02-13 | 2016-05-31 | Microsoft Technology Licensing, Llc | Optical stylus interaction |
US9134807B2 (en) | 2012-03-02 | 2015-09-15 | Microsoft Technology Licensing, Llc | Pressure sensitive key normalization |
US9064654B2 (en) | 2012-03-02 | 2015-06-23 | Microsoft Technology Licensing, Llc | Method of manufacturing an input device |
US9075566B2 (en) | 2012-03-02 | 2015-07-07 | Microsoft Technoogy Licensing, LLC | Flexible hinge spine |
US8873227B2 (en) | 2012-03-02 | 2014-10-28 | Microsoft Corporation | Flexible hinge support layer |
USRE48963E1 (en) | 2012-03-02 | 2022-03-08 | Microsoft Technology Licensing, Llc | Connection device for computing devices |
US9298236B2 (en) | 2012-03-02 | 2016-03-29 | Microsoft Technology Licensing, Llc | Multi-stage power adapter configured to provide a first power level upon initial connection of the power adapter to the host device and a second power level thereafter upon notification from the host device to the power adapter |
US9870066B2 (en) | 2012-03-02 | 2018-01-16 | Microsoft Technology Licensing, Llc | Method of manufacturing an input device |
US9360893B2 (en) | 2012-03-02 | 2016-06-07 | Microsoft Technology Licensing, Llc | Input device writing surface |
US9426905B2 (en) | 2012-03-02 | 2016-08-23 | Microsoft Technology Licensing, Llc | Connection device for computing devices |
US20130300590A1 (en) | 2012-05-14 | 2013-11-14 | Paul Henry Dietz | Audio Feedback |
US10031556B2 (en) | 2012-06-08 | 2018-07-24 | Microsoft Technology Licensing, Llc | User experience adaptation |
US9019615B2 (en) | 2012-06-12 | 2015-04-28 | Microsoft Technology Licensing, Llc | Wide field-of-view virtual image projector |
US9684382B2 (en) | 2012-06-13 | 2017-06-20 | Microsoft Technology Licensing, Llc | Input device configuration having capacitive and pressure sensors |
US9459160B2 (en) | 2012-06-13 | 2016-10-04 | Microsoft Technology Licensing, Llc | Input device sensor configuration |
US9477255B2 (en) | 2012-07-09 | 2016-10-25 | Apple Inc. | Systems and methods for suspending idle devices based on idle policies for the devices |
US9069572B2 (en) | 2012-07-27 | 2015-06-30 | Prolific Technology Inc. | Replacement of inbox driver with third party driver |
US8964379B2 (en) | 2012-08-20 | 2015-02-24 | Microsoft Corporation | Switchable magnetic lock |
TWI486786B (zh) * | 2012-10-05 | 2015-06-01 | Faraday Tech Corp | 隨著使用情境進行資料傳輸動態調整之方法與裝置及計算機程式產品 |
US8654030B1 (en) | 2012-10-16 | 2014-02-18 | Microsoft Corporation | Antenna placement |
CN104870123B (zh) | 2012-10-17 | 2016-12-14 | 微软技术许可有限责任公司 | 金属合金注射成型突起 |
US8786767B2 (en) | 2012-11-02 | 2014-07-22 | Microsoft Corporation | Rapid synchronized lighting and shuttering |
US9176538B2 (en) | 2013-02-05 | 2015-11-03 | Microsoft Technology Licensing, Llc | Input device configurations |
US10578499B2 (en) | 2013-02-17 | 2020-03-03 | Microsoft Technology Licensing, Llc | Piezo-actuated virtual buttons for touch surfaces |
US9304549B2 (en) | 2013-03-28 | 2016-04-05 | Microsoft Technology Licensing, Llc | Hinge mechanism for rotatable component attachment |
KR20140140438A (ko) * | 2013-05-29 | 2014-12-09 | 삼성전자주식회사 | Usb 유휴 상태 대기 시간을 동적으로 조절하는 usb 시스템 및 그 동작방법 |
JP2015049600A (ja) * | 2013-08-30 | 2015-03-16 | Necソリューションイノベータ株式会社 | 周辺機器制御装置、周辺機器制御方法および周辺機器制御プログラム |
US9448631B2 (en) | 2013-12-31 | 2016-09-20 | Microsoft Technology Licensing, Llc | Input device haptics and pressure sensing |
US9317072B2 (en) | 2014-01-28 | 2016-04-19 | Microsoft Technology Licensing, Llc | Hinge mechanism with preset positions |
US9759854B2 (en) | 2014-02-17 | 2017-09-12 | Microsoft Technology Licensing, Llc | Input device outer layer and backlighting |
JP6349783B2 (ja) * | 2014-02-28 | 2018-07-04 | 富士通株式会社 | 端末装置、サーバ装置、デバイスドライバプログラム及び外部周辺機器制御方法 |
US10120420B2 (en) | 2014-03-21 | 2018-11-06 | Microsoft Technology Licensing, Llc | Lockable display and techniques enabling use of lockable displays |
US9311504B2 (en) | 2014-06-23 | 2016-04-12 | Ivo Welch | Anti-identity-theft method and hardware database device |
US10324733B2 (en) | 2014-07-30 | 2019-06-18 | Microsoft Technology Licensing, Llc | Shutdown notifications |
CN104156329B (zh) * | 2014-08-01 | 2017-02-15 | 无锡中微爱芯电子有限公司 | 在动态链接库中实现usb设备插拔识别的方法 |
US9424048B2 (en) | 2014-09-15 | 2016-08-23 | Microsoft Technology Licensing, Llc | Inductive peripheral retention device |
US9447620B2 (en) | 2014-09-30 | 2016-09-20 | Microsoft Technology Licensing, Llc | Hinge mechanism with multiple preset positions |
US10437742B2 (en) | 2014-10-10 | 2019-10-08 | Microsoft Technology Licensing, Llc | Vendor-specific peripheral device class identifiers |
CN104461963B (zh) * | 2014-11-27 | 2018-05-01 | 深圳市国微电子有限公司 | 一种高速串行存储控制方法及装置 |
US10222889B2 (en) | 2015-06-03 | 2019-03-05 | Microsoft Technology Licensing, Llc | Force inputs and cursor control |
US10416799B2 (en) | 2015-06-03 | 2019-09-17 | Microsoft Technology Licensing, Llc | Force sensing and inadvertent input control of an input device |
US9752361B2 (en) | 2015-06-18 | 2017-09-05 | Microsoft Technology Licensing, Llc | Multistage hinge |
US9864415B2 (en) | 2015-06-30 | 2018-01-09 | Microsoft Technology Licensing, Llc | Multistage friction hinge |
US10061385B2 (en) | 2016-01-22 | 2018-08-28 | Microsoft Technology Licensing, Llc | Haptic feedback for a touch input device |
US9898354B2 (en) * | 2016-03-21 | 2018-02-20 | Microsoft Technology Licensing, Llc | Operating system layering |
US10344797B2 (en) | 2016-04-05 | 2019-07-09 | Microsoft Technology Licensing, Llc | Hinge with multiple preset positions |
US10684906B2 (en) | 2016-06-15 | 2020-06-16 | Microsoft Technology Licensing, Llc | Monitoring peripheral transactions |
CN106201747B (zh) * | 2016-07-22 | 2019-04-23 | 浪潮软件集团有限公司 | 一种windows系统受限用户下访问智能密码设备的方法 |
US10380051B1 (en) | 2016-08-11 | 2019-08-13 | Kimberly-Clark Worldwide, Inc. | USB baiting method and design |
US10037057B2 (en) | 2016-09-22 | 2018-07-31 | Microsoft Technology Licensing, Llc | Friction hinge |
US11032136B2 (en) * | 2018-02-01 | 2021-06-08 | Microsoft Technology Licensing, Llc | Discovery of network camera devices |
CN108388788B (zh) * | 2018-03-12 | 2019-11-26 | 山东渔翁信息技术股份有限公司 | 一种调用usb key底层库的方法及装置 |
US10831712B2 (en) | 2018-04-27 | 2020-11-10 | Crowdstrike, Inc. | Identifying and correlating physical devices across disconnected device stacks |
WO2020199167A1 (zh) * | 2019-04-03 | 2020-10-08 | 深圳迈瑞生物医疗电子股份有限公司 | 接入控制方法、接入控制设备及电子设备 |
US11237988B2 (en) * | 2019-09-26 | 2022-02-01 | Dell Products L.P. | Blocking individual interfaces of USB composite devices |
US11334364B2 (en) | 2019-12-16 | 2022-05-17 | Microsoft Technology Licensing, Llc | Layered composite boot device and file system for operating system booting in file system virtualization environments |
KR20210096917A (ko) * | 2020-01-29 | 2021-08-06 | 삼성전자주식회사 | 외부 전자 장치의 리소스를 인식하는 방법 및 이를 지원하는 전자 장치 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5129064A (en) | 1988-02-01 | 1992-07-07 | International Business Machines Corporation | System and method for simulating the I/O of a processing system |
US5910180A (en) * | 1995-11-21 | 1999-06-08 | Diamond Multimedia Systems, Inc. | Context virtualizing device driver architecture |
US5784628A (en) | 1996-03-12 | 1998-07-21 | Microsoft Corporation | Method and system for controlling power consumption in a computer system |
US6643712B1 (en) * | 1997-04-04 | 2003-11-04 | Microsoft Corporation | Validating the creation of and routing of messages to file objects |
US5931935A (en) * | 1997-04-15 | 1999-08-03 | Microsoft Corporation | File system primitive allowing reprocessing of I/O requests by multiple drivers in a layered driver I/O system |
US5905900A (en) | 1997-04-30 | 1999-05-18 | International Business Machines Corporation | Mobile client computer and power management architecture |
JP3045985B2 (ja) | 1997-08-07 | 2000-05-29 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 接続確立方法、通信方法、状態変化伝達方法、状態変化実行方法、無線装置、無線デバイス、及びコンピュータ |
US5926775A (en) * | 1997-10-08 | 1999-07-20 | National Instruments Corporation | Mini driver software architecture for a data acquisition system |
WO1999039254A2 (en) | 1998-01-30 | 1999-08-05 | 3Com Corporation | Providing low level hardware device driver from user mode under multi-tasking operating systems |
US6378005B1 (en) | 1998-06-12 | 2002-04-23 | Microsoft Corporation | Method, computer program product, and system for separating connection management functionality from a connection-oriented device driver |
US6243753B1 (en) | 1998-06-12 | 2001-06-05 | Microsoft Corporation | Method, system, and computer program product for creating a raw data channel form an integrating component to a series of kernel mode filters |
US6760784B1 (en) * | 1998-10-08 | 2004-07-06 | International Business Machines Corporation | Generic virtual device driver |
US6343260B1 (en) | 1999-01-19 | 2002-01-29 | Sun Microsystems, Inc. | Universal serial bus test system |
US6651171B1 (en) | 1999-04-06 | 2003-11-18 | Microsoft Corporation | Secure execution of program code |
US6463465B1 (en) | 1999-05-07 | 2002-10-08 | Sun Microsystems, Inc. | System for facilitating remote access to parallel file system in a network using priviliged kernel mode and unpriviliged user mode to avoid processing failure |
US6809830B1 (en) * | 1999-06-01 | 2004-10-26 | Microsoft Corporation | Method and system for enabling a printing program to communicate with a printer |
US6598169B1 (en) | 1999-07-26 | 2003-07-22 | Microsoft Corporation | System and method for accessing information made available by a kernel mode driver |
US6678773B2 (en) | 2000-01-13 | 2004-01-13 | Motorola, Inc. | Bus protocol independent method and structure for managing transaction priority, ordering and deadlocks in a multi-processing system |
JP2001222412A (ja) * | 2000-02-07 | 2001-08-17 | Sony Corp | データ処理装置 |
US6647473B1 (en) | 2000-02-16 | 2003-11-11 | Microsoft Corporation | Kernel-based crash-consistency coordinator |
US7047534B2 (en) * | 2000-03-17 | 2006-05-16 | Microsoft Corporation | Simplified device drivers for hardware devices of a computer system |
AU2002258358A1 (en) | 2000-10-27 | 2002-09-04 | Softconnex Technologies | Automatic embedded host configuration system and method |
US7574346B2 (en) | 2000-10-30 | 2009-08-11 | Microsoft Corporation | Kernel emulator for non-native program modules |
US7032228B1 (en) * | 2001-03-01 | 2006-04-18 | Emc Corporation | Common device interface |
EP1248179A1 (en) | 2001-04-03 | 2002-10-09 | Hewlett-Packard Company | Selective activation and deactivation of peripheral devices connected to a USB system |
US7228551B2 (en) | 2001-06-11 | 2007-06-05 | Microsoft Corporation | Web garden application pools having a plurality of user-mode web applications |
TW518502B (en) * | 2001-07-13 | 2003-01-21 | Prolific Technology Inc | USB compound device and the realization method thereof |
EP1286270A1 (en) * | 2001-07-24 | 2003-02-26 | Deutsche Thomson-Brandt Gmbh | An integrated circuit having a generic communication interface |
US7007138B2 (en) | 2002-04-17 | 2006-02-28 | Matsushita Electric Industiral Co., Ltd. | Apparatus, method, and computer program for resource request arbitration |
JP3866611B2 (ja) | 2002-05-08 | 2007-01-10 | 株式会社東芝 | 記録停止処理方法及びデータ記録装置 |
US20030227641A1 (en) | 2002-06-07 | 2003-12-11 | Xerox Corporation | Mobile USB printer driver |
US20040003135A1 (en) * | 2002-06-27 | 2004-01-01 | Moore Terrill M. | Technique for driver installation |
US7460551B2 (en) * | 2002-06-28 | 2008-12-02 | Harris Corporation | Data-driven interface control circuit |
JP2004046587A (ja) * | 2002-07-12 | 2004-02-12 | Fujitsu Ltd | デバイスドライバ組込プログラム及びデバイスドライバ組込装置 |
JP3817499B2 (ja) * | 2002-07-26 | 2006-09-06 | キヤノン株式会社 | 情報処理装置、制御方法、制御プログラム |
US7739693B2 (en) * | 2002-11-25 | 2010-06-15 | Sap Ag | Generic application program interface for native drivers |
JP2005122470A (ja) * | 2003-10-16 | 2005-05-12 | Matsushita Electric Ind Co Ltd | 自律型デバイスドライバ |
US7188195B2 (en) | 2003-11-14 | 2007-03-06 | Hewlett-Packard Development Company, L.P. | DMA slot allocation |
US7418716B2 (en) | 2003-12-19 | 2008-08-26 | Intel Corporation | Method, apparatus, system, and article of manufacture for interfacing a device |
-
2004
- 2004-04-29 US US10/837,444 patent/US7802022B2/en not_active Expired - Fee Related
- 2004-05-25 US US10/854,407 patent/US7577765B2/en not_active Expired - Fee Related
- 2004-05-25 US US10/854,408 patent/US7650436B2/en not_active Expired - Fee Related
-
2005
- 2005-04-27 JP JP2005129812A patent/JP5021180B2/ja not_active Expired - Fee Related
- 2005-04-28 EP EP05103495A patent/EP1591891A3/en not_active Ceased
- 2005-04-29 KR KR1020050036131A patent/KR101130474B1/ko active IP Right Grant
- 2005-04-29 CN CNB2005100896087A patent/CN100565484C/zh not_active Expired - Fee Related
-
2012
- 2012-01-27 JP JP2012015732A patent/JP5209125B2/ja not_active Expired - Fee Related
- 2012-01-27 JP JP2012015734A patent/JP5289592B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2012128865A (ja) | 2012-07-05 |
US7802022B2 (en) | 2010-09-21 |
KR101130474B1 (ko) | 2012-03-27 |
JP2005317019A (ja) | 2005-11-10 |
CN1716225A (zh) | 2006-01-04 |
US20050246564A1 (en) | 2005-11-03 |
KR20060047644A (ko) | 2006-05-18 |
US7577765B2 (en) | 2009-08-18 |
CN100565484C (zh) | 2009-12-02 |
US20050246455A1 (en) | 2005-11-03 |
EP1591891A2 (en) | 2005-11-02 |
JP5209125B2 (ja) | 2013-06-12 |
JP5021180B2 (ja) | 2012-09-05 |
JP2012099145A (ja) | 2012-05-24 |
US20050246723A1 (en) | 2005-11-03 |
EP1591891A3 (en) | 2007-11-21 |
US7650436B2 (en) | 2010-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5289592B2 (ja) | 汎用usbドライバ | |
US10445258B1 (en) | Method for creation of device drivers and device objects for peripheral devices | |
KR101512252B1 (ko) | 운영 시스템(os)이 없는 서비스 환경에서 펌웨어를 프로비저닝하는 방법 | |
US8806502B2 (en) | Batching resource requests in a portable computing device | |
KR101620655B1 (ko) | 메모리 세그먼테이션 및 acpi 기반 컨텍스트 전환을 사용하는 운영 시스템 로딩 | |
JP5004963B2 (ja) | 複数の中断された実行時イメージを伝達する方法及びシステム | |
US7082495B2 (en) | Method and apparatus to reduce power consumption and improve read/write performance of hard disk drives using non-volatile memory | |
US7673131B2 (en) | Booting an operating system in discrete stages | |
TWI533213B (zh) | 儲存和恢復應用程式運行時間狀態 | |
US8631414B2 (en) | Distributed resource management in a portable computing device | |
EP1983432A1 (en) | Booting system, boot program, and method therefor | |
JP2004310775A (ja) | 同じものをロードするためのポータブルオペレーティングシステムおよび方法 | |
US9152523B2 (en) | Batching and forking resource requests in a portable computing device | |
JP2008538437A (ja) | インライン不揮発性メモリ・ディスク読み取りキャッシュおよび書き込みバッファ | |
JP2009506463A (ja) | 補助ディスプレイデバイスのドライバインターフェース | |
JP2008539484A (ja) | ユニバーサル・シリアル・バス機能のデリゲーション | |
TW201229908A (en) | Method and apparatus for integrating driver(s) of a portable device into the portable device | |
US8943504B2 (en) | Tracking and releasing resources placed on a deferred unlock list at the end of a transaction | |
JP6050528B2 (ja) | セキュリティ・コプロセッサ・ブート性能 | |
JP2003330873A (ja) | 情報処理装置及び入出力方法並びにプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20121218 |
|
RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20130130 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20130130 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20130318 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130514 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130604 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5289592 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |