Bagikan melalui


SerCx2SystemDmaReceiveCreate (sercx.h)

Metode SerCx2SystemDmaReceiveCreate membuat objek penerima DMA sistem SerCx2, yang digunakan ekstensi kerangka kerja serial (SerCx2) versi 2 untuk melakukan transaksi penerimaan DMA sistem.

Sintaks

NTSTATUS SerCx2SystemDmaReceiveCreate(
  [in]           WDFDEVICE                         Device,
  [in]           PSERCX2_SYSTEM_DMA_RECEIVE_CONFIG SystemDmaReceiveConfig,
  [in, optional] PWDF_OBJECT_ATTRIBUTES            Attributes,
  [out]          SERCX2SYSTEMDMARECEIVE            *SystemDmaReceive
);

Parameter

[in] Device

Handel WDFDEVICE ke objek perangkat kerangka kerja yang mewakili pengontrol serial. Driver pengontrol serial membuat objek ini dalam fungsi panggilan balik EvtDriverDeviceAdd . Untuk informasi selengkapnya, lihat SerCx2InitializeDevice.

[in] SystemDmaReceiveConfig

Penunjuk ke struktur SERCX2_SYSTEM_DMA_RECEIVE_CONFIG . Sebelum memanggil metode ini, pemanggil harus memanggil fungsi SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT atau SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION untuk menginisialisasi struktur. Struktur ini berisi pointer ke serangkaian rutinitas panggilan balik peristiwa yang diimplementasikan oleh driver pengontrol serial. SerCx2 memanggil fungsi-fungsi ini untuk melakukan transaksi penerimaan DMA sistem.

[in, optional] Attributes

Penunjuk ke struktur WDF_OBJECT_ATTRIBUTES yang menjelaskan atribut untuk ditetapkan ke objek penerima DMA sistem baru. Sebelum memanggil metode ini, pemanggil harus memanggil fungsi WDF_OBJECT_ATTRIBUTES_INIT untuk menginisialisasi struktur. Parameter ini bersifat opsional dan dapat ditentukan sebagai WDF_NO_OBJECT_ATTRIBUTES jika driver pengontrol serial tidak perlu menetapkan atribut ke objek. Untuk informasi selengkapnya, lihat Keterangan.

[out] SystemDmaReceive

Penunjuk ke lokasi tempat metode ini menulis handel SERCX2SYSTEMDMARECEIVE ke objek yang baru dibuat sistem-penerima DMA. SerCx2 dan driver pengontrol serial menggunakan handel ini dalam panggilan berikutnya untuk merujuk ke objek ini.

Nilai kembali

Metode ini mengembalikan STATUS_SUCCESS jika panggilan berhasil. Kemungkinan nilai pengembalian kesalahan menyertakan kode status berikut.

Menampilkan kode Deskripsi
STATUS_INVALID_DEVICE_REQUEST
Objek yang menerima DMA sistem sudah ada dari panggilan SerCx2SystemDmaReceiveCreate sebelumnya; atau objek penerima kustom sudah ada dari panggilan sebelumnya ke metode SerCx2CustomReceiveCreate ; atau objek transmisi kustom ada dari panggilan sebelumnya ke metode SerCx2CustomTransmitCreate ; atau SerCx2PioReceiveCreate belum dipanggil untuk membuat objek penerima PIO.
STATUS_INFO_LENGTH_MISMATCH
NilaiUkuranKonfigurasi-> tidak sama dengan sizeof(SERCX2_SYSTEM_DMA_RECEIVE_CONFIG).
STATUS_INVALID_PARAMETER
Nilai parameter tidak valid.
STATUS_INSUFFICIENT_RESOURCES
Sumber daya yang tidak mencukup tersedia untuk melakukan operasi yang diminta.

Keterangan

Metode ini dipanggil oleh driver pengontrol serial untuk membuat objek system-DMA-receive. SerCx2 menggunakan objek ini untuk melakukan transaksi penerimaan DMA sistem, yaitu transaksi I/O yang menggunakan pengontrol DMA sistem untuk membaca data yang diterima oleh pengontrol serial.

Biasanya, driver pengontrol serial memanggil SerCx2SystemDmaReceiveCreate dari fungsi panggilan balik EvtDevicePrepareHardware . Fungsi ini menerima daftar sumber daya perangkat keras, yang dapat mencakup saluran DMA sistem.

Driver pengontrol serial harus berhasil memanggil metode SerCx2InitializeDevice dan SerCx2PioReceiveCreate sebelum memanggil SerCx2SystemDmaReceiveCreate.

Sebelum memanggil SerCx2SystemDmaReceiveCreate, driver pengontrol serial harus memanggil fungsi SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT atau SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION untuk menginisialisasi struktur SERCX2_SYSTEM_DMA_RECEIVE_CONFIG yang ditunjukkan oleh SystemDmaReceiveConfig. Fungsi-fungsi ini mengatur anggota struktur berikut ke nol:

  • MaximumScatterGatherFragments
  • MinimumTransferUnitOverride
  • DmaAlignment
  • MinimumTransactionLength
  • Eksklusif
Jika perlu, driver pengontrol serial dapat mengatur salah satu anggota ini ke nilai bukan nol setelah fungsi inisialisasi kembali. Namun, untuk kenyamanan, SerCx2SystemDmaReceiveCreate menggunakan nilai default berikut jika anggota ini nol:
  • Jika MaximumScatterGatherFragments nol, SerCx2 mengatur jumlah maksimum elemen dalam daftar sebar/kumpulkan ke ((ULONG)-1).
  • Jika MinimumTransferUnitOverride adalah nol, SerCx2 menetapkan unit transfer minimum ke nilai defaultnya, yang ditentukan dalam struktur DMA_ADAPTER untuk pengontrol DMA sistem. Untuk informasi selengkapnya tentang struktur ini, lihat WdfDmaEnablerWdmGetDmaAdapter.
  • Jika DmaAlignment nol, SerCx2 menetapkan nilai perataan ke unit transfer minimum. Jika MinimumTransferUnitOverride adalah nol, unit transfer minimum default digunakan.
  • Jika MinimumTransactionLength adalah nol, SerCx2 menetapkan panjang transaksi minimum menjadi satu byte.
  • Jika Eksklusif adalah nol (FALSE), mode eksklusif dinonaktifkan.
Jika driver panggilan mengatur Eksklusif ke TRUE, anggota MinimumTransferUnitOverride, DmaAlignment, dan MinimumTransactionLength harus nol. Untuk informasi selengkapnya, lihat SERCX2_SYSTEM_DMA_RECEIVE_CONFIG.

Jika kombinasi fungsi panggilan balik yang diimplementasikan yang ditentukan tidak valid, SerCx2SystemDmaReceiveCreate gagal dan mengembalikan STATUS_INVALID_PARAMETER. Driver harus menerapkan fungsi EvtSerCx2SystemDmaReceiveEnableNewDataNotification dan EvtSerCx2SystemDmaReceiveCancelNewDataNotification .

Sebagai opsi, driver pengontrol serial dapat menggunakan parameter Atribut untuk membuat konteks untuk objek yang diterima DMA sistem, dan untuk menyediakan pointer ke fungsi EvtCleanupCallback dan EvtDestroyCallback yang dipanggil untuk menyiapkan objek untuk dihapus. Untuk informasi selengkapnya, lihat WDF_OBJECT_ATTRIBUTES.

Jika parameter Atribut menunjuk ke struktur WDF_OBJECT_ATTRIBUTES , pemanggil tidak boleh menimpa nilai yang ditulis fungsi inisialisasi WDF_OBJECT_ATTRIBUTES_INIT ke anggota ParentObject, ExecutionLevel, dan SynchronizationScope dari struktur ini.

Untuk informasi selengkapnya tentang membuat objek yang diterima DMA sistem, lihat SERCX2SYSTEMDMARECEIVE. Untuk informasi selengkapnya tentang transaksi yang diterima DMA sistem, lihat SerCx2 System-DMA-Receive Transactions.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Tersedia dimulai dengan Windows 8.1.
Target Platform Universal
Header sercx.h
IRQL PASSIVE_LEVEL

Lihat juga

DMA_ADAPTER

EvtCleanupCallback

EvtDestroyCallback

EvtDevicePrepareHardware

EvtDriverDeviceAdd

EvtSerCx2SystemDmaReceiveCancelNewDataNotification

EvtSerCx2SystemDmaReceiveCleanupTransaction

EvtSerCx2SystemDmaReceiveEnableNewDataNotification

EvtSerCx2SystemDmaReceiveInitializeTransaction

SERCX2SYSTEMDMARECEIVE

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT

SERCX2_SYSTEM_DMA_RECEIVE_CONFIG_INIT_NEW_DATA_NOTIFICATION

SerCx2InitializeDevice

SerCx2PioReceiveCreate

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT

WdfDmaEnablerWdmGetDmaAdapter