驅動程式有兩種方式可判斷IOCTL或 FSCTL 要求的建立者是32位或64位應用程式。 第一個是應用程式識別本身。 第二個是讓驅動程式自行判斷應用程式是32位還是64位。
第一項技術涉及在IOCTL或 FSCTL 控件程式代碼中定義 「64Bit」 字段。 此欄位包含單一位元,僅針對 64 位元呼叫端設定。 因此,64位元呼叫者透過使用一組單獨設置此位元的64位元控制碼來識別自己。 32 位呼叫端會使用一組類似的控件代碼,在此控件代碼中未設定此位。
第二種技術允許 32 位和 64 位應用程式繼續使用相同的 IOCTL 或 FSCTL 程式代碼。 相反地,驅動程式會藉由呼叫 IoIs32bitProcess來判斷使用者模式進程是32位還是64位。
第一種技術更有效率,因為驅動程式會檢查位旗標,而不是呼叫內核模式例程。 不過,第二個技術不需要變更使用者模式程序代碼。 您應該使用的技術取決於驅動程式的需求,以及傳送 I/O 要求的應用程式。